Linux 双 VLAN,ping 仅在第一个 VLAN 上有效

Linux 双 VLAN,ping 仅在第一个 VLAN 上有效

我已经建立了这个简单的配置:

----------------                              ----------------
| Linux host A |  <----- patch cable -------> | Linux host B |
----------------                              ----------------

然后我在每个主机上配置了 2 个 VLAN:

eth1                                           eth1
 |                                              |
 |-- eth1.2 -> 192.168.1.2/24                   |-- eth1.2 -> 192.168.1.4/24
 |-- eth1.3 -> 192.168.1.3/24                   |-- eth1.3 -> 192.168.1.5/24

在主机 A 上,当我执行以下操作时:

ping -I eth1.2 192.168.1.4

它有效,但是当我这样做时:

ping -I eth1.3 192.168.1.5

它不起作用。

我尝试在两台主机上进行设置:

sysctl net.ipv4.conf.enth1.rp_filter=0
sysctl net.ipv4.conf.enth1/2.rp_filter=0
sysctl net.ipv4.conf.enth1/3.rp_filter=0

但这并没有解决问题。

在主机 B 上使用 wireshark 监视 eth1,显示 VLAN id 3 的 ping 已正确接收,但主机 B 没有应答。

当然,我已经检查过我的 iptables:

  Chain INPUT
  target     prot opt in   out  source   destination
  ACCEPT     all  --  eth1 any  anywhere anywhere

  Chain OUTPUT (policy ACCEPT)

当我在主机 A 上执行一个简单的操作时:

ping 192.168.1.5

主机 B 回答但是我使用 wireshark 看到数据包被标记为 VLAN id 2,这当然有效。

因此,我猜测将 VLAN 标记数据包路由到主机 B 时出了问题,但我找不到问题所在!

答案1

您使用的是同一个 IP 段,并且没有设置特殊路由规则。这意味着,始终使用默认路由,并且默认路由在您的情况下设置为 VLAN2。

最好的方法是,通过不同的 IP 段来区分 VLAN。例如,您的 VLAN2 可以使用现有的 192.168.1.1/24,而 VLAN3 可以使用 192.168.3.1/24。

相关内容