liptables ssh 规则不起作用

liptables ssh 规则不起作用

我有 2 台使用 Virtual Box 的虚拟机。其中一台虚拟机用作路由器。我试图删除进入路由器机器的所有通信,但某些服务除外。我在每台机器上拥有的接口 IP 是:

作为路由器的虚拟机1:

eth1: 193.136.200.254 
eth2: 10.10.0.254 
eth3: 10.254.0.254 

虚拟机2:

eth1: 10.10.0.2 
eth1:0: 10.10.0.3 
...

如果来自 IP 为 10.10.0.3 的机器,我希望接受到路由器的 ssh 连接。因此,我在路由器机器上定义了规则:

iptables -P INPUT DROP
iptables -A INPUT -p tcp -s 10.10.0.3 -d 10.10.0.254 --dport 22 -j ACCEPT

现在我尝试使用 netcat 测试它是否正常工作。因此,我在路由器机器上运行以下命令:

nc -l 10.10.0.254 22

我在虚拟机 2 中运行:

nc 10.10.0.254 22

然后我在一台机器上写了一个随机单词,但它没有出现在另一台机器上。所以它不起作用。你知道问题出在哪里吗?

如果我在放置删除策略之前测试这个 netcat 命令,它会起作用,我在一台机器上写入的内容会出现在另一台机器上。

iptables -L的结果:

Chain INPUT (policy DROP)
target     prot opt      source        destination
ACCEPT     tcp  ---      10.10.0.2     10.10.0.254     tcp dpt:ssh

答案1

对于来自虚拟机 1 的端口 22 上的传入 netcat 连接,tcpdump 打印了哪个源地址?

在虚拟机 2 上:

iptables -F
tcpdump -n -i eth3 'port 22'

也许虚拟机 1 上的默认路由绑定了接口 eth2,导致该子网上的所有传出流量都具有该接口的源地址。

route -n虚拟机 1 上显示的输出是什么?

相关内容