Iptables

如何使用備用 IP 地址訪問區域網路中的主機?

  • July 7, 2018

我在 LAN (192.168.1.0/24) 中有一台伺服器,靜態 IP 地址為 192.168.1.100,現在我希望該伺服器上的所有服務都可以使用 192.168.100.100 訪問同一 LAN (192.168.1.0/24) 中的主機,例如。嘗試訪問 192.168.100.100:1234 時,請求由 192.168.1.100:1234 處理。我怎樣才能做到這一點?

我試過修改arp -s 192.168.100.100 m:ac:of:se:rv:er路由器上的 ARP 但沒有運氣。

我還嘗試將 iptables 應用於路由器:iptables -t nat -A PREROUTING -d 192.168.100.100 -j DNAT --to-destination 192.168.1.100. ping 伺服器會導致超時。

背景:我曾經在 LAN 192.168.100.0/24 的 192.168.100.100 上託管文件和媒體服務,現在我暫時將主機遷移到另一個 LAN 192.168.1.0/24。客戶端使用 192.168.100.100 訪問伺服器,修改客戶端上的所有應用程序的工作量太大。很明顯,使用主機名而不是 IP 地址更好,但在我的情況下,客戶端使用 localhost DNS,忽略路由器的 DNS。我對IP知之甚少。

問題是需要訪問 192.168.100.100 的主機是在 192.168.1.0/24 還是其他地方。如果是後者,那麼您在路由器上添加的規則(假設它獲取發往 192.168.100.100 的流量)應該足夠了(當然您還需要啟用轉發,但我認為這對路由器來說是顯而易見的)。

如果這些是來自 192.168.1.0/24 網路的主機試圖去 192.168.100.100 ,那麼它有點複雜。他們會將源地址為 192.168.1.x 的請求發送到目標 192.168.100.100 到將執行 DNAT 並將數據包發送回同一網段的 192.168.1.100 的路由器。問題是響應將具有 192.168.1.100 的源 ip 和 192.168.1.x 的目標 ip,並且不會通過路由器返回以恢復 DNAT 的影響。原始主機收到的數據包將不匹配任何已知連接,將被丟棄。要解決此問題,您還需要對路由回此網段的數據包進行 SNAT:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 --ctstate DNAT -j SNAT --to-source 192.168.1.r

其中 192.168.1.r 是路由器在 192.168.1.0/24 子網上的 IP 地址。

引用自:https://serverfault.com/questions/919766