ページ

2021年3月23日火曜日

Raspberry Pi ルーターでポートフォワーディングして,LAN 内の VPN に接続する.

最近,自作ルーターの話題ばかりですが今回はポートフォワーディングする話.

なお,これまでのルーターの設定は以下の記事に纏めてある.
Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる
Raspberry Pi ルーターに Dynamic DNS を導入する

ざっくり言うと,ラズパイをIPv4 over IPv6接続に対応したルーターに設定することで,回線の混雑を避けて通信速度を維持しつつ,PPPoE接続も共存させることで外部からのアクセスを可能にし,Dynamic DNSによってホスト名による外部からのアクセスを可能にしている.


今回はさらに,ポートフォワーディング機能を追加する.

スマホ等からも簡単に接続できて結果を確認しやすかったのと,以前から公衆Wi-Fi利用時のセキュリティを向上させたいと考えていたので,ポートフォワーディングする対象はVPNにした.

また,上述の記事で紹介したようにラズパイ起動時にiptablesの設定を読み込むよう設定しているので,ポートフォワーディングさせるための設定はリストアするファイルに追記するだけで良い.
/etc/iptables.settings(赤字の箇所を追記)
------------------------------
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p udp -m udp --dport 1194 -j DNAT --to-destination 192.168.100.3:1194
-A POSTROUTING -d 192.168.100.3/32 -o ppp0 -p udp -m udp --dport 1194 -j MASQUERADE 
COMMIT

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i ppp0 -p icmp --icmp-type 8 -j ACCEPT
-A INPUT -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.100.0/24 -i br0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.100.0/24 -i br0 -o ds-lite -j ACCEPT
-A FORWARD -d 192.168.100.0/24 -i ds-lite -o br0 -j ACCEPT
-A FORWARD -s 192.168.100.3/32 -i br0 -o ppp0 -p udp -m udp --sport 1194 -j ACCEPT
-A FORWARD -d 192.168.100.3/32 -i ppp0 -o br0 -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT

ポートフォワーディングは,natテーブルの,PREROUTINGチェイン及びPOSTROUTINGチェインで設定する.UDPの1194番ポートに入ってきた通信を192.168.100.3:1194に飛ばし,戻りの通信はIPマスカレードすれば良い.

また,filterテーブルで,FOWARDをDROP指定しているので,UDPの1194番ポートを許可する設定も追記している.

最後に私の環境では,PPPoE用のルーティングテーブルを別途作成しているので,1194番ポートで転送された通信もそのテーブルを参照するよう設定する.
/etc/rc.local(追記)(赤字の箇所を追記)
------------------------------
ip route add default dev ppp0 table 128
ip route add 192.168.100.0/24 dev br0 table 128
ip rule add ipproto icmp dev ppp0 table 128
ip rule add ipproto icmp dev lo table 128
ip rule add dport 1194 dev ppp0 table 128
ip rule add sport 1194 dev br0 table 128
ip rule add dport 22 dev ppp0 table 128
ip rule add sport 22 dev lo table 128

以上で,ラズパイルーターのiptablesコマンドによるポートフォワーディング設定は完了.

次にポートフォワードされた側(IPアドレス:192.168.100.3)でVPNを構築する.といってもVPNの構築は先人の知恵を借り,以下の記事で紹介されているgitのスクリプトを取得して実行するだけで終わらせる.
VPSで、簡単にVPNサーバを作る!【海外から日本のテレビを見る~2019年】

 $ wget https://git.io/vpn -O openvpn-install.sh
 $ sudo bash openvpn-install.sh

途中,VPNの設定内容を確認されるので,
  • ポート番号:1194(デフォルト)
  • プロトコル:UDP
  • ホスト名:Dynamic DNSで取得済みのホスト名
を指定する.

スマホにOpenVPNのクライアントアプリをインストールし,生成されたovpnファイルをインポートして接続する.

以下のスクリーンショットのように接続できれば設定はすべて完了だ.

0 件のコメント:

コメントを投稿