我有一个场景,其中一个路由器连接 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