网络之间的 iptables 规则不起作用

网络之间的 iptables 规则不起作用

我有一个场景,其中一个路由器连接 2 个网络,因此我有具有以下接口的机器:作为路由器工作的虚拟机 1:

eth1: 193.136.200.254 
eth2: 192.168.10.254 
eth3: 24.200.220.254 

虚拟机2:

eth1: 192.168.10.2 
eth1:0: 192.168.10.3

... 虚拟机 3:

eth1: 24.200.220.2
eth1:0: 24.200.220.3

在虚拟机 3 中,我有一个与 mysql 服务 (24.200.220.3) 关联的 ip,并且我希望连接到虚拟机 2 (196.168.10.2) 中的服务器的客户端能够连接虚拟机 3 中的服务器 (24.200.220.3)。并删除网络之间的所有其他通信。我尝试使用此 iptables 规则执行此操作:

iptables -P FORWARD DROP

iptables -A FORWARD -p tcp -d 24.200.220.3 -s 192.168.10.2 --sport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 24.200.220.3 -d 192.168.10.2 --dport 3306 -j ACCEPT

要在虚拟机 3 中测试此规则,我运行以下命令:nc -l 24.200.220.3 3306 在虚拟机 2 中,我运行以下命令:nc 24.200.220.3 3306 然后我在一台机器上输入一个随机单词,但它没有出现在另一台机器上。所以它不起作用。你知道问题出在哪里吗?

答案1

没什么错误。如果你使用数据库目标 IP 地址,那么你需要使用目标数据库端口。对源 IP 和端口也做同样的事情。

iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -d 24.200.220.3 -s 192.168.10.2 --dport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 24.200.220.3 -d 192.168.10.2 --sport 3306 -j ACCEPT

相关内容