我在过滤两台主机之间的流量时遇到了问题,两台主机之间有防火墙。这三台主机每台都只有一个 NIC,它们可以在网络上通信,例如 10.10.0.0/16。我想添加另一个网络,但我有一个限制,不允许我添加另一个 NIC。
我的想法是使用 IP 别名。因此,为了实现这一点,我将每个主机的每个 NIC 设置为具有多个地址,如下所示:
host0 : eth0 = 10.10.0.1/16
192.168.0.1/24
router : eth0 = 10.10.0.2/16
192.168.0.254/24
192.168.1.254/24
host1 : eth0 = 10.10.0.3/16
192.168.1.1/24
由于图片往往比文字更有说服力,我有这个:
HOST0 ROUTER HOST1
| | |
------------------------------------------------
10.10.0.1 10.10.0.2 10.10.0.3
我想模拟这个(仅使用一个NIC):
HOST0--------------------ROUTER------------------HOST1
192.168.0.1 0.254 1.254 1.1
我使用命令配置了每个主机ip
:
ip add dev eth0 192.168.0.*
然后使用 ip route 添加路由。
我的问题是,即使我丢弃了每个数据包,从 host0 到 host1 的 ping 仍然顺利,router
这iptables
表明 ping 可能不会通过路由器,而是更喜欢直接进行。我进行了 tcpdump 跟踪,显示 host0 的 ping 直接到达 host1。
我感觉它不应该那样工作,但我无法弄清楚。
这里是 tcpdump 跟踪:
52:54:00:00:00:00 > 52:54:00:00:00:02, IPv4, length 98: 192.168.0.1 > 192.168.1.1: ICMP echo request, id 4309, seq 3, length 64
52:54:00:00:00:02 > 52:54:00:00:00:00, IPv4, length 98: 192.168.1.1 > 192.168.0.1: ICMP echo reply, id 4309, seq 3, length 64
52:54:00:00:00:00 > 52:54:00:00:00:02, IPv4, length 98: 192.168.0.1 > 192.168.1.1: ICMP echo request, id 4309, seq 4, length 64
52:54:00:00:00:02 > 52:54:00:00:00:00, IPv4, length 98: 192.168.1.1 > 192.168.0.1: ICMP echo reply, id 4309, seq 4, length 64
52:54:00:00:00:00 > 52:54:00:00:00:02, IPv4, length 98: 192.168.0.1 > 192.168.1.1: ICMP echo request, id 4309, seq 5, length 64
52:54:00:00:00:02 > 52:54:00:00:00:00, IPv4, length 98: 192.168.1.1 > 192.168.0.1: ICMP echo reply, id 4309, seq 5, length 64