広告 デバイス

【番外編】VPS+VPN(WireGuard)による自宅サーバの公開方法(iptablesのサンプルconfig)

※本ページには、プロモーション(広告)が含まれています。

悩んでいる人

WireGuard+iptablesの設定により自宅のLAN内にアクセスできることは分かったが、肝心のiptablesの書き方が分からない。

ネットワーク構成とともに具体的な設定例を教えて欲しい。

こんなお悩みを解決します。

今回は、WireGuardでVPN接続時にLAN内のマシンに接続できている前提で話を進めます。

まだ環境構築や各種設定が完了していない方は、下記の記事を参考にしてください。

あわせて読みたい
【解説】VPS+VPN(WireGuard)による自宅サーバの公開方法を分かりやすく解説!(VPS契約編)

続きを見る

あわせて読みたい
【解説】VPS+VPN(WireGuard)による自宅サーバの公開方法(VPN設定編)

続きを見る

あわせて読みたい
【解説】VPS+VPN(WireGuard)による自宅サーバの公開方法(ルーティング設定編)

続きを見る

WireGuardのサーバ側(VPN Server)とクライアント側(VPN Client Home)のそれぞれにおける、iptablesの設定方法を順番に解説していきますので、興味がある方は是非最後までご覧ください。

前提とするネットワーク構成と通信例

想定するネットワーク構成と通信例を共有した上で、iptablesの設定方法を解説します。

前提とするネットワーク構成

今回は、以下のようなネットワーク構成を想定します。

想定するネットワーク構成

また、自宅ネットワーク内の各サーバにおいて、起動しているサービスごとの待ち受けポート番号は、以下のように定義されているとします。

対象サービスポート番号備考
Django(Web)80/tcp-
BIND(DNS)53/udp-
Node(Node-Red)1880/tcp-
Infrared Controller-VPNから直接リクエストを出さないため、対象外とする
Samba137/udp,138/udp,139/tcp,445/tcpAndroidスマホのみ動作確認済み
起動しているサービスごとの待ち受けポート番号一覧

通信例

スマホから自宅ネットワーク内のWebサーバにアクセスする場合を例に挙げ、簡易的に図示すると以下のようになります。

ルータの処理等、一部の内容を省略しています。

通信例(スマホ-VPS-自宅サーバ2で起動しているWebサーバ)

前提とするネットワーク構成におけるiptablesの設定例

WireGuardのサーバ側(VPN Server)とWireGuardのクライアント側(VPN Client Home)のそれぞれにおける設定は以下のようになります。

WireGuardのサーバ側(VPN Server)の設定

起動時(conf.up.d)と終了時(conf.down.d)の設定ファイルは、それぞれ以下のようになります。

conf.up.d/02-routing-lan-access.conf

追加処理であるため、「-A」オプションを指定します。

# for DNS
iptables -t nat -A PREROUTING -p udp                 --dport 53   -j DNAT --to-destination 10.0.20.2:53
# for Web
iptables -t nat -A PREROUTING -p tcp -d 192.168.11.2 --dport 80   -j DNAT --to-destination 10.0.20.2:80
# for Node-Red
iptables -t nat -A PREROUTING -p tcp -d 192.168.11.3 --dport 1880 -j DNAT --to-destination 10.0.20.2:1880
# for NAS
iptables -t nat -A PREROUTING -p udp -d 192.168.11.4 --dport 137  -j DNAT --to-destination 10.0.20.2:137
iptables -t nat -A PREROUTING -p udp -d 192.168.11.4 --dport 138  -j DNAT --to-destination 10.0.20.2:138
iptables -t nat -A PREROUTING -p tcp -d 192.168.11.4 --dport 139  -j DNAT --to-destination 10.0.20.2:139
iptables -t nat -A PREROUTING -p tcp -d 192.168.11.4 --dport 445  -j DNAT --to-destination 10.0.20.2:445
# IP MASQUERADE
iptables -t nat -A POSTROUTING -d 10.0.20.0/24 -j MASQUERADE

conf.down.d/02-routing-lan-access.conf

削除処理であるため、「-D」オプションを指定します。

# for DNS
iptables -t nat -D PREROUTING -p udp                 --dport 53   -j DNAT --to-destination 10.0.20.2:53
# for Web
iptables -t nat -D PREROUTING -p tcp -d 192.168.11.2 --dport 80   -j DNAT --to-destination 10.0.20.2:80
# for Node-Red
iptables -t nat -D PREROUTING -p tcp -d 192.168.11.3 --dport 1880 -j DNAT --to-destination 10.0.20.2:1880
# for NAS
iptables -t nat -D PREROUTING -p udp -d 192.168.11.4 --dport 137  -j DNAT --to-destination 10.0.20.2:137
iptables -t nat -D PREROUTING -p udp -d 192.168.11.4 --dport 138  -j DNAT --to-destination 10.0.20.2:138
iptables -t nat -D PREROUTING -p tcp -d 192.168.11.4 --dport 139  -j DNAT --to-destination 10.0.20.2:139
iptables -t nat -D PREROUTING -p tcp -d 192.168.11.4 --dport 445  -j DNAT --to-destination 10.0.20.2:445
# IP MASQUERADE
iptables -t nat -D POSTROUTING -d 10.0.20.0/24 -j MASQUERADE

WireGuardのクライアント側(VPN Client Home)の設定

起動時(conf.up.d)と終了時(conf.down.d)の設定ファイルは、それぞれ以下のようになります。

conf.up.d/02-routing-lan-access.conf

追加処理であるため、「-A」オプションを指定します。

# for DNS
iptables -t nat -A PREROUTING -p udp --dport 53   -j DNAT --to-destination 192.168.11.2:53
# for Web
iptables -t nat -A PREROUTING -p tcp --dport 80   -j DNAT --to-destination 192.168.11.2:80
# for Node-Red
iptables -t nat -A PREROUTING -p tcp --dport 1880 -j DNAT --to-destination 192.168.11.3:1880
# for NAS
iptables -t nat -A PREROUTING -p tcp --dport 137  -j DNAT --to-destination 192.168.11.4:137
iptables -t nat -A PREROUTING -p tcp --dport 138  -j DNAT --to-destination 192.168.11.4:138
iptables -t nat -A PREROUTING -p tcp --dport 139  -j DNAT --to-destination 192.168.11.4:139
iptables -t nat -A PREROUTING -p tcp --dport 445  -j DNAT --to-destination 192.168.11.4:445
# IP MASQUERADE
iptables -t nat -A POSTROUTING -d 192.168.11.0/24 -j MASQUERADE

conf.down.d/02-routing-lan-access.conf

削除処理であるため、「-D」オプションを指定します。

# for DNS
iptables -t nat -D PREROUTING -p udp --dport 53   -j DNAT --to-destination 192.168.11.2:53
# for Web
iptables -t nat -D PREROUTING -p tcp --dport 80   -j DNAT --to-destination 192.168.11.2:80
# for Node-Red
iptables -t nat -D PREROUTING -p tcp --dport 1880 -j DNAT --to-destination 192.168.11.3:1880
# for NAS
iptables -t nat -D PREROUTING -p tcp --dport 137  -j DNAT --to-destination 192.168.11.4:137
iptables -t nat -D PREROUTING -p tcp --dport 138  -j DNAT --to-destination 192.168.11.4:138
iptables -t nat -D PREROUTING -p tcp --dport 139  -j DNAT --to-destination 192.168.11.4:139
iptables -t nat -D PREROUTING -p tcp --dport 445  -j DNAT --to-destination 192.168.11.4:445
# IP MASQUERADE
iptables -t nat -D POSTROUTING -d 192.168.11.0/24 -j MASQUERADE

まとめ

今回は、具体的なネットワーク構成を示した上で、WireGuardのサーバ側(VPN Server)とWireGuardのクライアント側(VPN Client Home)のiptablesの設定方法について解説しました。

最適なiptablesの設定になっていないかもしれませんが、現状、動作確認ができているため、この状態で利用しています。

また、sshで接続するためにopenssh-serverを立てている人は、同様の方法でiptablesを更新することにより、WireGuard経由で自宅ネットワーク内のサーバにアクセスできます。

必要に応じて設定してみてください。スマホからはsshすることはないと思いますが、laptop等を使う場合は欲しくなる可能性が高いです。

【追記】トラブル事例をまとめました。

あわせて読みたい
VPS+VPN(WireGuard)の構成
【トラブル事例】VPS+VPN(WireGuard)で接続できない時の解決方法

続きを見る

スポンサードリンク

-デバイス
-, , , ,