K3s Flannel 接口通过覆盖路由表条目来阻止流量

问题描述

我正在 RaspBerry Pi 4 (Raspbian GNU/Linux 10) 上安装 k3s 代理,但遇到以下问题:

当我启动 k3s 代理时,所有网络流量都被阻止,因为 flannel 将覆盖条目添加到路由表(具有较低的指标)

这是我的网络接口和路由表 开始 k3s 之前:

$ ip a
1: lo: [...]
2: eth0: <NO-CARRIER,broADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether e4:5f:01:3c:cb:b0 brd ff:ff:ff:ff:ff:ff
3: wlan0: <broADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e4:5f:01:3c:cb:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.7/24 brd 192.168.11.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::4cd2:3438:9850:12/64 scope link
       valid_lft forever preferred_lft forever

$ ip ro
default via 192.168.11.1 dev wlan0 src 192.168.11.7 metric 303
192.168.11.0/24 dev wlan0 proto dhcp scope link src 192.168.11.7 metric 303

以下是 k3s 运行时的接口和路由表:

$ k3s agent --flannel-iface wlan
[...]
$ ip a
1: lo: [...]
2: eth0: [...] 
3: wlan0: [...]
15: flannel.1: <broADCAST,LOWER_UP> mtu 1450 qdisc noqueue state UNKNowN group default
    link/ether 3e:67:43:a9:0a:b4 brd ff:ff:ff:ff:ff:ff
    inet 10.42.4.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet 192.168.11.7/24 brd 192.168.11.255 scope global noprefixroute flannel.1
       valid_lft forever preferred_lft forever
    inet6 fe80::cef8:2a6c:6b05:da4b/64 scope link
       valid_lft forever preferred_lft forever

$ ip ro
default via 192.168.11.1 dev flannel.1 src 192.168.11.7 metric 214
default via 192.168.11.1 dev wlan0 src 192.168.11.7 metric 303
10.42.0.0/24 via 10.42.0.0 dev flannel.1 onlink
10.42.2.0/24 via 10.42.2.0 dev flannel.1 onlink
192.168.11.0/24 dev flannel.1 proto dhcp scope link src 192.168.11.7 metric 214
192.168.11.0/24 dev wlan0 proto dhcp scope link src 192.168.11.7 metric 303

=> 为什么要创建本地非虚拟网络192.168.0.0/24的路由?如何禁用这些路由的创建?我还缺什么吗?

提前致谢

解决方法

我几乎自己回答了我的问题:降低 wlan0 的指标可以解决问题。

默认情况下,在 Raspberry 上,与 wlan 接口关联的路由具有更高的指标,因为 they're considered as a less stable link than wired eth0 接口

修复:

# In /etc/dhcpcd.conf:
[...]
iface wlan0
[...]
metric 42

等等!