我有一台服务器,它有 2 个 4 端口网卡,但只使用其中一个。每个端口都连接到 L2 交换机,并配置为不同的 VLAN,具有来自不同 /24 子网的 1 个可用 IP - 每个子网都有不同的默认网关。只有 1 个端口正常工作 - eno4。其余端口可以 ping 通,但每隔一次就会丢失。我在应用 netplan 时收到此错误:
验证默认路由一致性时遇到问题。请设置多个路由表并改用
routing-policy
。错误:IPv4 的默认路由声明冲突(表:main,度量:default),首先在 eno2 中声明,但也在 eno4 中声明
netplan 本身:
network:
ethernets:
eno1:
addresses: ['aa.bb.cc.dd/24', 'a:b:c:x:e:f:g:1/64']
gateway4: aa.bb.cc.1
gateway6: a:b:c:x:e:f:g:0001
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 2606:4700:4700::1111, 2606:4700:4700::1001, 2001:4860:4860::8888, 2001:4860:4860::8844]
accept-ra: no
eno2:
addresses: ['ee.ff.gg.hh/24', 'a:b:c:y:e:f:g:2/64']
gateway4: ee.ff.gg.1
gateway6: a:b:c:y:e:f:g:0001
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 2606:4700:4700::1111, 2606:4700:4700::1001, 2001:4860:4860::8888, 2001:4860:4860::8844]
accept-ra: no
eno3:
addresses: ['ii.jj.kk.ll/24', 'a:b:c:z:e:f:g:3/64']
gateway4: ii.jj.kk.1
gateway6: a:b:c:z:e:f:g:0001
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 2606:4700:4700::1111, 2606:4700:4700::1001, 2001:4860:4860::8888, 2001:4860:4860::8844]
accept-ra: no
eno4:
addresses: ['mm.nn.oo.pp/24', 'a:b:c:v:e:f:g:4/64']
gateway4: mm.nn.oo.1
gateway6: a:b:c:v:e:f:g:0001
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 2606:4700:4700::1111, 2606:4700:4700::1001, 2001:4860:4860::8888, 2001:4860:4860::8844]
accept-ra: no
# ens1f0:
# dhcp4: true
# ens1f1:
# dhcp4: true
# ens1f2:
# dhcp4: true
# ens1f3:
# dhcp4: true
version: 2
我在这里遗漏了什么以及如何正确路由?
答案1
通常只能有一个可用的默认路由。当没有明显更好的路由时,数据包会转到默认路由。如果您有多个默认路由,它们可能会以循环方式处理,这可以解释为什么会出现数据包丢失——一些数据包会发送到不同的地方。
对此有多种可能的解决方案:
- 使用路由守护进程来管理 netplan 之外的动态路由
- 为特定网络分配静态路由,为其他所有网络分配一个默认路由。
- 设置路由表和优先级,以便所选的“默认路由”取决于传入的主机端 IP 地址,以便对来自特定 IP 的数据包的响应从同一接口发出。同样,您需要对其进行优先级排序,以便通配符传出连接为源地址选择主 IP。
可能需要做多项这样的事才能让它发挥作用。