raspberry pi2を自宅ネットワークのゲートウェイっぽい運用で使ってみる

先日、家のネットワーク環境を設定していて、外部からも簡単にアクセスできるようにしたかったと前から思っていたので、やってみました。

まず構想の1つ目がセキュリティの確保です。家のネットワークを外部からアクセスできるようにすると、当然ですが外部から攻撃される恐れもあり、できるだけ必要最低限でできることを増やそうというのがありました。

次に、常に外部からPCを使用するでもなく電気代ももったいないので、必要に応じてwake on lan等で起動できるようにというのがありました。
ただ、今自宅で使っているルーターがwake on lanのパケットをはけるルーターではなく、そのためだけにルーターを買い直すのはあまりしたくありませんでした。さらにおそらくルーターでwake on lanを外のネットワークから発行しようと思うと、ルーターの管理画面に外部からアクセスできるようにする必要がある可能性があるので、セキュリティ的にそれもしたくありませんでした。
幸い、今使っているルーター(BUFFALOの無線LANルーター WSR-1166DHP)は外部からポート変換に対応していたので、これでルーターへのアクセスを転送して、パケット転送用のPCにSSHアクセスできるようにすればこれらをまとめて実現できると思いました。

ただ、そのPCは常時起動しておく必要があり、そのPCの電力消費が大きいとあまり意味がありません。
そこでそれらの解決のため、raspberry piを利用して常時起動、更にそこにSSHでのみ接続できるようにして、後はそこからのポート転送等で補おうという構想を考えました。
raspberry piは初代は1台持っていたのですが、最初にケースを買い忘れた上にケースだけを買おうとすると割高だったため、ずっとむき出しで使う時だけ使うような状態だったため、常時起動にはちょっと微妙だったこともあり、この機会に最新のraspberry pi2を買い直しました。

raspberry piを現在買う手段はいくつかあり、最近は公式代理店での購入でもすぐに届くようですが、私は別件で買うものもあったため、amazonでケースとセットのものを購入しました(一緒にras piで使うSDカードも)。送料等も含めて考えると値段差も殆どありませんでした。

raspberry pi側の設定

Raspbianのインストール

最初にraspberry piにはOSも何も入っていないので、インストールする必要があります。
今回はraspberry piのOSとして最適化されているLinuxディストリビューションである「Raspbian」を利用しました。
「Raspbian」を公式のダウンロードページからダウンロードして、使用するmicro SDカードに書き込みます。この時、インストーラ(NOOBS)を使ってインストールすることも出来ますが、今回はイメージだけをダウンロードして、DD for Windowsで書き込みました。

初期設定

最初に構想しているゲートウェイ運用のために最低限必要な設定を行ってきます。

sshサーバの起動

最初にSSHでログインして操作する予定なので、sshサーバを起動させておく必要がありますが、今回なぜか設定しなくてもsshサーバが起動していました。起動していない場合は、設定画面(raspi-config)から起動設定に変更することが出来ます。

ユーザの追加

Raspbianではデフォルトで”pi”というユーザ名でユーザが作られていますが、デフォルトのユーザ名というのは、セキュリティ的にもよろしく、個人的にもこれ用のidを別途おいておくのは好きではないため、新しいユーザを追加した上で、デフォルトのユーザを無効化しました。

ipアドレスの固定

Raspbianに限らず、PCのIPアドレスの取得はデフォルトではDHCPでの取得になっていることがほとんどですが、サーバとして接続する場合、IPアドレスが変更される恐れがあると接続するときに面倒なので、固定にしてしまいます。
具体的には以下の設定ファイルのeth0(有線LAN)を変更すればOKです。

  • /etc/network/interfaces
  • iface eth0 inet static
    address [固定したいIPアドレス]
    netmask [サブネットマスク]
    gateway [ゲートウェイ(ルーター等)のIPアドレス]

sshの設定変更

この構想を実現するには、外部から接続できるようにする必要がありますが、当然そうするとセキュリティは下がります。
そのため、開放する部分は最小限にする必要があります。
今回はSSHのみを利用可能にしていますが、そのSSHの設定も最小限にします。

具体的には、rootログインの禁止、またパスワード認証を禁止して鍵認証のみにします。

  •  /etc/ssh/sshd_config
  • PermitRootLogin no
    PasswordAuthentication no

他にはsshの待ち受けポートを変更する手法などがありますが、今回それはルータ側で設定します。

ルーター側の設定

ポートの転送設定

前述のように、現在使っているルーターが、[ルータのグローバルIPアドレス]:[特定のポート]への接続を[特定のプライベートIPアドレス]:[特定のポート]に転送してくれる機能があります。
これを利用して、ルータへの特定ポートへのアクセスをraspberry piに転送します。

この時、ルータのポートと転送先のポートは別に指定できるので、ここで22番以外のポートを指定することで擬似的にsshの待ち受けポートを変えることができます。

さらに今回は、必ず私のVPSを経由してのみアクセスするようにして、そのIPアドレス以外からの接続を拒否しています。このとき少しハマったのが、WSR-1166DHPでは特定のホストとIPの組み合わせに対してフィルタを作成することができますが、上記のポート転送で別のポートを指定している場合にその通信に対してフィルタしたい場合、転送先のポートを指定する必要があります。

DDNSの設定

今使っている回線が固定IPのプランではないため、時間が経つとルータのグローバルIPアドレスが変わってしまします。そのままでは、アクセスしたいときにIPアドレスが変わっている恐れもあるため、DDNSサービスに登録、かつIPが変われば自動更新してくれるソフトを利用してその取得したドメインにアクセスするようにすれば、IPアドレスが固定されていなくてもそのアドレスにアクセスすることが出来ます。

今回、DDNSはieServerさんのサービスを利用させてもらい、DDNSの自動更新については公開されている更新スクリプトを利用しました。

Wake on Lanの設定

冒頭で書いたように、必要時自宅LAN内の端末を自由にON/OFFできるようにしておきます。
OFFは各端末にアクセスして落とせばいいですが、ONは外部から起動する必要があります。
wake on lanを使えばPCをネットワーク経由で起動させる事ができます。

wake on lanの送信プログラムはaptでインストールできます。

sudo apt-get install wakeonlan

インストールできれば、後は”wakeonlan 対象のPCのNICのMACアドレス”でそのPCを立ち上げる事ができます。MACアドレスを覚えるのは面倒なので、スクリプトかエイリアスにしておくと良いと思います。
ただ、wakeonlanは対応していない機器や、BIOSで起動しない設定になっている場合があるので、その場合はBIOS設定を変えたり、対応機器を追加する必要があります。

注意

raspberry piの注意として、繋いでいるUSB電源の電力が足りないと正しく起動しないというのがあります。今回も設定中に起動しなくなり、何度かイメージの焼き直しをしたりしていましたが、最終的に電源を2Aのポートに変えると解決しました。
なぜかLANケーブルを抜いたら起動したりしたので、電源が原因と気づくのが遅くなりました。

まとめ

raspberry piは円安などの影響か以前より高めの値段にはなっていますが、4,5000円台でこのサイズのLinuxマシンが買えるというのもすごい上に、GPIOポートがあったり、2になってスペックがあがったり、最近だとRaspberry Pi 2 に無料でWindows 10が提供される話があったりなど、いろいろとできることの可能性が広がるデバイスだと思います。今回は省電力端末としてゲートウェイ運用のために利用しましたが、また何か別の使い道も見つかればやってみたいところです。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>