Linux

連接到另一台機器後面的機器

  • October 14, 2017

我有以下設置 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 AHOST B通過我的 ISP 的路由器連接,並且可以相互連接。HOST C只連接到HOST B並且能夠與之交談HOST B。但是,我希望能夠連接到HOST Cfrom HOST 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

就這些。當然,必須對任何相關主機上的潛在防火牆進行相應配置以允許流量。

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