所有傳入連線都使用我的主路由器的 IP(2 個路由器設定)

所有傳入連線都使用我的主路由器的 IP(2 個路由器設定)

我正在使用具有以下硬體的兩個路由器設定:

網件 WNDR3400V2 - 192.168.1.1 - DD-WRT

貝爾金 F9K1105 v1 - 192.168.1.50 - 庫存韌體

貝爾金被設定為交換機,我連接了一個網路伺服器。

[網際網路] -> Netgear -> 貝爾金 -> 伺服器

內部連接時,它會正確記錄我的 IP(例如 192.168.1.51)外在地,所有IP都被視為192.168.1.1(主路由器的IP)

當然,當不在第二個路由器後面時,這工作得很好,但不幸的是我目前的設定是不必要的。

我想知道是否可以獲得一些關於如何能夠從伺服器正確「查看」外部 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

相關內容