我有两个主机和它们之间的防火墙过滤流量的问题。这三个主机中的每一个只有一个NIC,可以在网络上进行通信,例如10.10.0.0/16。我想添加另一个网络,但我有一个约束,不允许我添加另一个网卡。
我的想法是使用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
请发布显示MAC地址的tcpdump,因为如果不使用路由器,则无法从192.168.0.1/24到192.168.1.1/24进行ping操作。
—
mtak