我在尝试对网络进行“简单”调整时遇到了真正的麻烦。所以:
- 有两个站点A和B,通过IPsec连接,它们之间的通信没有问题。
- 每个站点有两个 VLAN,主 VLAN 和访客 VLAN:主 VLAN
192.168.55.0/24
用于 A 和192.168.88.0/24
B,而访客则192.168.10.0/24
同时用于两者。 - VLAN 通过以下规则在每个路由器上隔离(A 的示例):
iptables -A forward -s 192.168.10.0/24 -d 192.168.55.0/24 -j DROP
现在的问题是:我想允许 A/guest 中的特定主机到达 B/main 中的特定主机。我怎么做?
我尝试过只输入
iptables -A forward -s 192.168.10.10 -d 192.168.55.55 -j ACCEPT
,但它不起作用 - 我可以看到一些数据包,但连接不起作用(它是一个 SSL 为 443 的网络服务器)。我想我需要在 mangle/postrouting 链中添加一些东西?
谢谢
答案1
问题是两个访客网络共享相同的地址范围。如果只有一条forward
规则,来自 A/guest 的数据包将到达 B/main 中的目的地,但返回的数据包将物理发送到 B/guest。
A
因此,您需要位于此连接的路由器MASQUERADE
,以便 B/main 处的主机将看到192.168.55.0/24
源并知道如何返回返回数据包。当这样的数据包到达A处的路由器时,它会自动将目的地重写为原始访客主机,并相应地转发数据包。
这应该可以解决问题(应用于 site 的路由器A
):
iptables -t nat -A POSTROUTING -s 192.168.10.10 -d 192.168.55.55 -j MASQUERADE