我有以下设置:
Box A
eth0 - 192.168.1.101
eth1 - 10.10.2.1
Box B
eth0 - 10.10.2.2
盒子 A 可以通过 eth0 访问互联网。我希望盒子 B 在 192.168.1.0/24 网络上可见,这样我就可以从另一个盒子直接 ssh 到它,但盒子 A 也必须可用。
我考虑在盒子 A 上为 eth0 创建一个虚拟 IP,然后使用以下方法将所有流量转发到盒子 B:
ifconfig eth0:0 192.168.1.102
iptables -t nat -A PREROUTING -i eth0:0 -j DNAT --to-destination 10.10.2.2
但这似乎不起作用。
此外,IP 转发已启用,并且 Box B 可以访问互联网
iptables -t nat -A POSTROUTING -j MASQUERADE
答案1
我将通过在网络中的默认网关上添加静态路由来解决这个问题192.168.1.0/24
,这意味着所有到10.10.2.0/24
网络的数据包都将通过192.168.1.101
节点路由。
然后,您需要启用 IP 转发192.168.1.101
。
然后,您还需要在 Box B 上添加192.168.1.0/24
通过的路线。10.10.2.1
这样,您就可以在两个网络中使用10.10.2.x
和192.168.1.x
地址,并且所有流量将在网络之间路由。
答案2
您不能使用虚拟接口作为 的参数-i
。诀窍是使用目标地址:
iptables -t nat -A PREROUTING -d 192.168.1.102 -j DNAT --to-destination 10.10.2.2