我需要一些帮助来解决策略路由问题。
我有一台带有多个 VLAN 的 Linux 主机。我正在尝试为每个 VLAN 创建一个唯一的路由表,并且可以在 VLAN20 上的主机和路由器之间进行双向 ping 操作,但是,在上游路由器上,我看到的是针对远程 IP 的 ARP 请求,而不是针对网关的 ARP 请求,或者从 Linux 主机发送到网关的流量。
Linux主机VLAN20:192.168.20.50
路由器接口VLAN20:192.168.20.1
创建表“vlan20”
$ cat /etc/iproute2/rt_tables
# # 保留值
#255 本地
第254章
253 默认
220 VLAN20
0 未指定#
#当地的
1英寸鲁赫普
创建规则以使用表 vlan20 发送源自 VLAN20 接口的所有流量
$ ip rule show
0:从所有本地查找
32765:从所有 iif eth0.20 查找 vlan20
32766:从所有查找主要
32767:从所有查找默认值
将所有流量路由到路由器 vlan20 接口e
$ ip route list table vlan20
默认通过 192.168.20.1 dev eth0.20
从Linux主机测试
ping 8.8.8.8 -I eth0.20
从 192.168.20.50 eth0.20 PING 8.8.8.8 (8.8.8.8):56(84) 字节数据。来自 192.168.20.50 icmp_seq=1 目标主机无法访问
来自路由器 VLAN20 接口
9.568940 arp 谁有 8.8.8.8 告诉 192.168.20.50
10.565495 arp who-has 8.8.8.8 告诉 192.168.20.50
感谢你的协助!
答案1
我想这里存在与默认主机路由的冲突。假设您的 Linux 主机接口是 eth0 并且主机网络是10.77.0.0/24
,请运行以下命令:
$ sudo ip route add 10.77.0.0/24 via 192.168.20.1 dev eth0.20 table vlan20 $ sudo ip rule add to 192.168.20.0/24 lookup vlan20 prio 10000
以避免您看到的循环。我仍然无法发表评论,并且由于我之前的答案已被删除(这实际上是一个问题而不是答案),我还想说应该提供ip -4 addr show
和的输出,以便我们也可以看到网络掩码和路由详细信息。ip route show