如何使用 systemd-networkd 禁用/阻止默认 ipv6 路由

如何使用 systemd-networkd 禁用/阻止默认 ipv6 路由

我在我的 Linux 路由器上使用 systemd-networkd,这是ip -6 route输出:

::1 dev lo proto kernel metric 256 pref medium
240e:3b0:3041:4df::/64 dev ppp0 proto ra metric 1024 expires 2591826sec pref medium
240e:3b5:3012:bab1::/64 dev br-lan proto kernel metric 256 expires 3174sec pref medium
unreachable 240e:3b5:3012:bab0::/60 dev lo proto dhcp metric 1024 pref medium
fe80::329c:234f:d1d5:629a dev ppp0 proto kernel metric 256 pref medium
fe80::3826:69ff:fe0e:ff3a dev ppp0 proto kernel metric 256 pref medium
fe80::/64 dev br-lan proto kernel metric 256 pref medium
default dev br-lan proto kernel metric 256 pref medium
default via fe80::3826:69ff:fe0e:ff3a dev ppp0 proto ra metric 1024 expires 1626sec mtu 1492 pref medium

default dev br-lan proto kernel metric 256 pref medium使我的 ipv6 无法正常工作。我可以运行ip -6 route del default dev br-lan删除它,然后 ipv6 就可以正常工作了。但每次重启时我都必须运行它。

是否有选项可以禁用此默认路由?

这是我的 br-lan 配置文件:

[Match]
Name=br-lan

[Network]
Description=The local network
DHCP=no
LinkLocalAddressing=ipv6
IPv6SendRA=yes
IPv6PrivacyExtensions=no
DHCPv6PrefixDelegation=yes
DHCPPrefixDelegation=yes
DHCPServer=no
MulticastDNS=yes
LLDP=yes
EmitLLDP=yes
IPForward=yes
ConfigureWithoutCarrier=yes
IPv6MTUBytes=1492

[Link]
MTUBytes=9000
ActivationPolicy=always-up

[Address]
Address=10.0.0.1/20
Scope=link

[Address]
Address=fe80::1
Scope=link

[Route]
Scope=link
Metric=8192
IPv6Preference=low
Type=local

[IPv6SendRA]
UplinkInterface=:none
DNS=_link_local

[DHCPPrefixDelegation]
SubnetId=0x1
Announce=yes
UplinkInterface=ppp0

答案1

在我看来,您的配置故意添加了该路线:

[Route]
Scope=link
Metric=8192
IPv6Preference=low
Type=local

如果没有Destination=,这将::/0默认创建一条路线。

fe80::1否则,它可能会被添加为您的IP 地址的“子网”路由:

[Address]
Address=fe80::1

由于您指定了没有前缀长度的地址,因此某些版本的 networkd 会假设/0前缀长度(我思考这是一个错误;它应该假设/128;但在你的情况下/64 是正确的)。

将其更改为Address=fe80::1/64

相关内容