Linux
連接到另一台機器後面的機器
我有以下設置 LAN 設置(所有機器都執行 Slackware 14.2):
INTERNET | | 192.168.10.1 +----------+ |ISP ROUTER| +----------+ | | +----+ +-----+ 192.168.10.10 | (eth0) | 192.168.10.20 (eth0) +--------+ +--------+ | HOST A | | HOST B | +--------+ +--------+ | 192.168.50.50 (eth1) | | 192.168.50.100 (eth0) +--------+ | HOST C | +--------+
HOST A
並HOST B
通過我的 ISP 的路由器連接,並且可以相互連接。HOST C
只連接到HOST B
並且能夠與之交談HOST B
。但是,我希望能夠連接到HOST C
fromHOST A
。我無法配置我的 ISP 的路由器。HOST A
並且HOST B
必須能夠連接到 Internet,因此不能將預設網關更改為我的 ISP 路由器以外的任何其他設備。HOST C
不得與網際網路建立任何連接。我認為至少
HOST B
我必須應用這些iptables
規則:iptables -A FORWARD -s 192.168.50.100 -d 192.168.10.0/24 -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.50.100 -s 192.168.10.0/24 -i eth0 -o eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.50.100 -d 192.168.10.0/24 -o eth0 -j MASQUERADE
但是,我不確定這些規則是否足夠,
HOST B
也不知道如何配置HOST A
. 有任何想法嗎?
經過一些進一步的研究,我找到了解決方案。首先,
HOST B
必須配置來轉發數據包HOST C
:iptables -A FORWARD -s 192.168.50.100 -d 192.168.10.0/24 -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.50.100 -s 192.168.10.0/24 -i eth0 -o eth1 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.50.100 -d 192.168.10.0/24 -o eth0 -j MASQUERADE
然後需要通過添加額外的路線
HOST A
, 以便他們可以找到彼此。HOST C``HOST B
HOST A
作為 root 的問題:route add -host 192.168.50.100 gw 192.168.10.20
HOST C
作為 root 的問題:route add -host 192.168.10.10 gw 192.168.50.50
就這些。當然,必須對任何相關主機上的潛在防火牆進行相應配置以允許流量。