Nat
NAT 問題
我是一個網路菜鳥,很抱歉這個非常籠統的標題。我通過以下方式進行網路設置:
關於網路的一些細節:
- 所有設備上的 eth0 在 10.10.10.0 子網中都有一個 IP,可以從我們的 Intranet 訪問
- 機器 1 上的 eth1 通過專用網路連接到機器 2 上的 eth1
- 機器 3 上的 eth1 通過專用網路連接到機器 2 上的 eth2
- 機器 2 上的 eth1 和 eth2 被橋接
- 機器 2 上的 eth1 和 eth2 沒有 IP
機器 1 必須通過機器 2 上的網橋與機器 3 通信。為此,我在所有機器上都設置了路由。也就是說,當流量從機器 1 上的 eth1 發送時,它到達機器 2 上的 eth1,然後從機器 2 上的 eth2 發送到機器 3 上的 eth1。這工作得很好。
我遇到的問題是當機器 2 進行 NAT 時(這不是使用 iptables 完成的,而是由我無法控制的程序完成的)。程序所做的是將數據包轉發到機器 3 時,將機器 2 上的 eth0 的 IP 分配為源 IP。因此,當機器 3 必須回复時,它會在 10.10.0.0 子網上看到源,並路由數據包從機器 3 上的 eth0 到機器 2 上的 eth0。
我的問題:如何將數據包從機器 3 路由到機器 2 上的 eth2?
我對該程序執行 NAT 的唯一控制是告訴它在 NAT 時使用什麼源 IP。機器 2 上的 eth1 和 eth2 沒有 IP,所以我可以使用的唯一 IP 是機器 2 上的 eth0 的別名。
經過思考,我認為您可以通過(M3 上的 eth1)將 M3 上的路由設置為(M1 的 eth0 地址),其中 M1=machine1,依此類推。其中10.10.10.x是M1的eth0地址,試試
M3% route add -host 10.10.10.x dev eth1
您應該能夠驗證,在 M3 上,對來自 M1 地址的數據包的響應是通過使用
tcpdump
. 請注意,這決不能保證 M2 會對它們做正確的事情;它應該只將它們以它們進來的方式發送回來,並希望 M2 將它們解除 NAT 並將它們發送到 M1。