Posted in Gadgets Software ひとりごと

VPN鯖の構築 (その2)

さて、立ち上げた家鯖 VPN なんですが、外部からのアクセスをラズパイに接続のためにルーターのポートフォワーディングができなかった原因は・・・すぐに思いあたりました。そう、楽天ひかりにしてプレゼントされたルーターを設定し、速度低下の少ない IPv4 over IPv6 な環境に移行していたのです。

この結果、我が家の各端末はほぼ IPv6 で稼働していて、IPv4 じゃないと到達できない接続先とは、IPv6 のトンネルをくぐって我が家から出入りしているわけです。色々と調べて、きっとこんな感じになっているんだろうというのを図にしてみました。

ルーターの設定を見ると DHCP サーバの設定はあるものの、ここで設定した v4 アドレスが付与されている端末は LAN 上にありません。それとは別に、Xpass のゲートウェイルーターが配布したローカル v4 アドレスがルーターや各種端末に割り振られています。また、v6 アドレスはグローバルアドレスが配布されていました。

楽天ひかりはクロスパス方式でこんな感じらしいですが、プロバイダによっては別方式で NAT をルーター側で行うものもあるそうです。私が利用する楽天ひかりは、調べた限りこんな感じだったんですよね。

ルーターがこのクロスパスのモードになっている場合は、ポートフォワーディングの設定画面は出てきません。PPPoE で接続している時には「詳細設定」の下にありました。その代わり、パケットフィルタ設定がありますな。仕組みが理解できれば(NAT をルーターでやってないなら)、設定できないのも理解できます。

どうにか VPN できんかな・・・と、色々と考えた結果、まずは IPv6 ならグローバルアドレスが割り振られているワケだし、IPv6 な端末からアクセスできるようにしたらイイんじゃないかと考えました。ココとかココをヒントにしたのです。ラズパイに v6 アドレスでアクセスすれば良いハズです。

v4 でアクセスされないように、DDNS Now のエントリから v4 アドレスを消して、nslookup すると v6 アドレスだけが出る状態にしてテストを開始。

v6 アドレスを持った外の環境・・・って、Free WiFi がある場所まで行くのも面倒だったので、手持ちの携帯回線を確認してみました。y.u mobile は v4 アドレスしか付与されてなかったけど、IIJmio と楽天モバイルは v6 アドレスも付与されていました。さすがネットワークヲタク(誉め言葉)がやってる IIJ と、最新設備で構築したばかりの楽天モバイルです。y.u mobile は・・・もっとがんばりましょう。

テストは IIJmio の SIM が刺さった Mi9 で実施。LTE 回線で v6 のグローバルアドレスが割り振られていることを確認しつつ、VPN を ON にすると・・・どうにも通信できません。ログなどを確認すると、VPN Server との Handshake に失敗している模様。グローバルアドレスなので、到達できているっぽいのに VPN が開設できないとすると・・・おそらくどこかでフィルタリングされて、外部からのアクセスが止められているっぽいですな。

ルーターの設定を見ると、IPv6ファイアウォール機能というのが ON になっています。これ、どうやら外部からのアクセスを遮断するものらしい。一旦コレをオフにしてみたところ、VPN が張れました♪

とはいえ、一応 LAN 内の端末への外部からのアクセスを保護するための機能なので、気楽に OFF にして良いものではないでしょう。というわけで、このファイアウォールは有効に戻して、IPv6 パケットフィルタを設定すれば・・・と考えたのですが、フィルタ設定に色々とハマりました。

試行錯誤の上、優先度19のようなフィルタを追加したところ、無事に VPN を貼ることができましたが、若干納得いかない感じ。

追加設定はこんな感じ。優先度を設定し、種別を「通過」、方向を「in」、プロトコルを「UDP」に設定。送信元 IP は「any」なのは理解できますが、送信元ポート番号を「any」ではなく、WireGuard に設定したポート番号にしたら通信できませんでした。宛先 IP はラズパイに付与されたグローバル v6 アドレスを記載し、宛先ポート番号に WireGuard に設定したポート番号をセット。

一応この状態で、家の外の環境(LTE回線)から家鯖VPNにアクセスして、安全な通信経路が確保できました。・・・と、言いたいところですが、これでは終わらないのが残念なトコロ。近所の Free WiFi で試したらダメだったんです。

・・・まだまだ続きます。