我的设备上列出了以下路线:
pi@raspberrypi:~ $ ip route list
default dev enxb827eb4e4311 scope link
default via 192.168.1.5 dev wlan0 proto dhcp src 192.168.1.197 metric 303
169.254.0.0/16 dev enxb827eb4e4311 scope link src 169.254.207.114 metric 202
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.197 metric 303
列出的第一个路线是不正确。此设备无法通过其以太网端口访问世界其他地方,只能通过 wifi 访问。但是,我似乎无法删除此路由:
pi@raspberrypi:~ $ sudo ip route del default scope link && ip route
default dev enxb827eb4e4311 scope link
default via 192.168.1.5 dev wlan0 proto dhcp src 192.168.1.197 metric 303
169.254.0.0/16 dev enxb827eb4e4311 scope link src 169.254.207.114 metric 202
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.197 metric 303
pi@raspberrypi:~ $ sudo ip route del default dev enxb827eb4e4311 scope link && ip route
default dev enxb827eb4e4311 scope link
default via 192.168.1.5 dev wlan0 proto dhcp src 192.168.1.197 metric 303
169.254.0.0/16 dev enxb827eb4e4311 scope link src 169.254.207.114 metric 202
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.197 metric 303
pi@raspberrypi:~ $ sudo ip route del 0.0.0.0/0 dev enxb827eb4e4311 scope link && ip route
default dev enxb827eb4e4311 scope link
default via 192.168.1.5 dev wlan0 proto dhcp src 192.168.1.197 metric 303
169.254.0.0/16 dev enxb827eb4e4311 scope link src 169.254.207.114 metric 202
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.197 metric 303
这条路线会干扰接触更广阔世界的能力:
pi@raspberrypi:~ $ ip route get 8.8.8.8
8.8.8.8 dev enxb827eb4e4311 src 169.254.207.114 uid 1000
cache
我认为我正确指定了路线,因为如果我指定了不存在的路线,我会收到此错误:
pi@raspberrypi:~ $ sudo ip route del 0.0.0.0/1 dev enxb827eb4e4311 scope link && ip route
RTNETLINK answers: No such process
我从另一个答案中得到了提示ip addr flush dev enxb827eb4e4311
,但我不想删除设备上的 IP 地址,也不想删除度量为 202 的路由。
我该如何删除这条错误路线,或者获取有关为什么我无法删除的有用信息?
答案1
一个链接范围路由是根据为接口分配地址时提供的前缀长度(即子网掩码)生成的enx
。拥有链接范围“默认”路由(即路由)几乎总是意味着您在分配地址时提供了前缀长度- 因此如果您不希望发生这种情况,则需要提供除 /0 之外的前缀长度。0.0.0.0/0
/0
例如,这将导致生成 172.16.5.0/24 路由:
ip 地址 del 172.16.5.7 dev enx && ip 地址添加 172.16.5.7/24开发
如果您想要分配单个地址而不暗示子网,通常应使用全长 /32 前缀(/0 的对立面)。