右向き矢印のメモ帳

技術系の備忘録とか

ラズパイサーバを外部に公開する

※この記事は、右向き矢印の日記帳 – 備忘録とか日常とかに掲載しているものと同じものになります。良ければこちらの方もどうぞ!

前回の記事の続きになります。

サーバを建てたはいいもののやっぱりlocalhostでしか確認できないのはつまらないので、このサーバに外部から接続できるようにしてみます。

とりあえずLAN内から接続

まずはラズパイが接続されているLAN内の他の端末からサーバに接続できるようにします。これにはラズパイのローカルIPアドレスを固定しておく必要があります。これをしないとラズパイを起動するたびに割り振られるIPアドレスが変わってしまうため、どのIPアドレスで接続できるかが分からなくなってしまいます。

まずは現在ラズパイに割り振られているアドレスを確認してみましょう。GUIを起動している場合はWi-Fiのアイコンにマウスオーバーすればラズパイに割り振られているアドレスが表示されます。

CUI環境の場合は以下のコマンドを入力することで確認できます。

$ ip addr

有線接続の場合はeth0、無線接続の場合はwlan0の値を参照します。また、ローカルIPアドレスは192で始まるのでgrepコマンドを活用すると確認しやすくなります。

$ ip addr | grep 192

ローカルIPアドレスの確認が終わったら、ラズパイのアドレスを固定する設定を書き込んでいきます。 この設定は/etc/dhcpcd.confに書き込みます。viなりnanoなり好きなエディタを使って先ほどの設定ファイルを開いたら、一番下に以下の内容を記述します。

interface wlan0
static ip_address=192.168.11.11/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1

ip_addressの部分にラズパイに指定したいIPアドレスを記述します。routersとdomain_name_serversの部分には自分が使っているルータのIPアドレスを記述します。これらの値は使用しているルータによって設定できる値が変わってくるので、自分の環境に合わせてみてください。また、指定するIPアドレスサブネットマスクで指定されている範囲内にするように注意してください。この辺はネットワークの基礎の話になってくるので、この記事では割愛させていただきます。

これらの設定が終わったらラズパイを再起動してもう一度IPアドレスを確認してみてください。 先ほど指定したIPアドレスに変わっていれば大丈夫です。

では同じLAN内の他の端末でラズパイにアクセスしてみましょう。ブラウザを開いてラズパイのIPアドレスを検索バーに入力して検索してみます。

前回と同じページが現れたらOKです。

LAN外から接続できるように

では次にLAN外からでも接続できるようにしてみましょう。ここからは多少大変です。また、外のネットワークに接続するということは同時に外からの攻撃に合うことにもなります。一応ファイアウォールは前回設定しましたが、万全というわけではありません。なのでここから先は自己責任でお願いします。

早速設定していきたいのですが、ここからはラズパイの設定ではなく自宅で使用しているルータでの設定が主になります。設定画面はルータごとに違ってくるので注意してください。ここでは自分が使っているBUFFALOのWHR-1166DHPで具体的に説明していきます。

まずはブラウザを開いてルータの自身のIPアドレスを入力し、設定画面を開きます。この際、ユーザ名とパスワードを聞かれると思うので、自分が使っているルータのユーザ名とパスワードを入力してください。 f:id:arrow52:20171123225008p:plain

管理画面に入ったら以下の設定をしていきます。

IPフィルタの設定

まずはIPフィルタの設定をしていきます。これは前回設定したファイアウォールと同じようなもので、外からの通信に対してどのような対応をするかのルールが設定されています。 基本的にルータは外からの通信には応答しないようになっているので、指定した通信を許可するように変更していきます。追加するルールは、

  1. 外側からの80番ポートに対する通信を許可する
  2. 外側からの22番ポートに対する通信を許可する

のふたつです。sshで操作していないのならば2番目のルールは追加しないことをお勧めします。 f:id:arrow52:20171123225015p:plain

ポート変換の設定

次にポート変換の設定をしていきます。これは外側からのルータに対する通信を、LAN側のどの端末に転送するかといったルールが設定されます。ここで、80番ポートと22番ポートへの通信をラズパイのローカルアドレスに変換するようにルールを記述します。 f:id:arrow52:20171123225012p:plain

ルータのグローバルIPアドレスの確認

これらの設定を行ったら、現在ルータに割り振られているグローバルIPアドレスを確認します。IPアドレスをメモしたら、LAN外の端末から先ほどメモしたIPアドレスにアクセスしてみます。自宅で確認する場合は、スマホLTEや4G通信に切り替えて確認するのがいいと思います。ここでも先ほどと同じ画面が出てこればOKです。

最後に

これで無事に外側からサーバにアクセスできるようになりました。しかし今の状態ではルータを再起動するたびにグローバルIPアドレスが変わってしまうので不便です。ここでもIPアドレスを固定したいのですが、固定のグローバルIPアドレスを使用するには、固定グローバルIPアドレスを提供してくれるプロバイダと契約する必要が出て来るので面倒ですしお金もかかります。

そこで、動的に変化するIPアドレスにひとつのドメイン名を結び付けてくれるDDNSというサービスを使用します。MyDNSという無料で使えるDDNSサービスがあるのでそれを利用すると、独自のドメイン名でサーバにアクセス出来るようになります。少し制約はありますが、便利なので使うことをおすすめします。このサービスの詳しい使い方は他に説明してくれているサイトがたくさんあるのでそこを参照するといいと思います。

次回はWordpressをインストールして、実際に外部からも見れるようにしていくところまでやっていきます。