すべての着信接続はメインルーターの IP を使用します (ルーター 2 台の設定)

すべての着信接続はメインルーターの IP を使用します (ルーター 2 台の設定)

私は次のハードウェアを備えた 2 つのルーターのセットアップを使用しています。

ネットギア WNDR3400V2 - 192.168.1.1 - DD-WRT

Belkin F9K1105 v1 - 192.168.1.50 - 標準FW

Belkin はスイッチとして設定されており、これに Web サーバーが接続されています。

[インターネット] -> Netgear -> Belkin -> サーバー

内部接続時は、IPが適切に記録されます(例:192.168.1.51)外部的にすべてのIPは192.168.1.1(メインルーターのIP)として表示されます。

もちろん、これは 2 番目のルーターの背後になくても問題なく機能しますが、残念ながら私の現在の設定は必要に迫られてのものです。

サーバーから外部 IP アドレスを適切に「確認」する方法について具体的な指示をいただけるかどうか知りたいです。

前もって感謝します!

答え1

問題は、DD-WRT が設定するデフォルトの iptables ルールにあるようです。

POSTROUTING の MASQUERADE 行を削除すると問題が解決し、外部接続がメイン ルーターの内部 IP として表示されなくなりました。

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  0    --  anywhere             anywhere            
SNAT       0    --  192.168.1.0/24       anywhere            to:1.1.1.1 
RETURN     0    --  anywhere             anywhere            PKTTYPE = broadcast

上記のリストの最初の要素を削除します。

iptables -t nat -D POSTROUTING 1

上記の修正に関する詳細は、こちらをご覧ください:https://www.reddit.com/r/HomeNetworking/comments/40swj2/firewall_log_shows_router_ip_for_all_incoming/cyxaz3t/

今、すべてが正常に動作するはずです。

補足: 内部 IP から外部 IP 経由でサービスにアクセスできなくなった場合は、次のいずれかまたは両方を実行する必要があります (私は両方必要でした)。

  1. 「DD-WRT -> セキュリティ -> ファイアウォール」の「WAN NAT リダイレクトをフィルター」のチェックを外してください。

  2. 以下を実行します。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE

192.168.1.0/24 の両方の出現を、設定に関連するものに置き換えます。

これを簡単にするために、これを「管理 -> コマンド」の下のファイアウォールスクリプトに保存することをお勧めします。

iptables -t nat -D POSTROUTING 1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE

関連情報