我使用的是 Debian 6.0.6,我的 ISP 启用了 IPv6,并为我的服务器提供了一个 /64 IP 地址,例如 24XX:XXXX::41/64。我已经配置了这个 IP 地址、网络掩码,并想静态设置路由器地址。我有路由器的 Link Local 地址(由路由器公布)。我在 /etc/network/interfaces 中配置了地址、网络掩码和网关,如下所示
iface eth0 inet6 static
address 24XX:XXXX::53
netmask 64
gateway fe80::42XX:XXff:feXX:XXcb
我想禁用全局地址的自动配置,并禁用服务器从路由器广告中学习路由。从文档中可以看出,如果将以下两个 procs 条目设置为零,则应禁用自动配置和路由学习
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
但是 ifconfig 仍然显示自动配置的 IP 地址并从路由器通告中学习路由。
eth0 Link encap:Ethernet HWaddr 00:AB:CD:EF:GH:IJ
inet addr:202.88.xx.xx Bcast:202.88.xx.xx Mask:255.255.255.192
inet6 addr: 24XX:XXXX::2AB:CDff:feEF:GHIJ/64 Scope:Global
inet6 addr: fe80::2AB:CDff:feEF:GHIJ/64 Scope:Link
inet6 addr: 24XX:XXXX::53/64 Scope:Global
route -A inet6
::/0 fe80::42XX:XXff:feXX:XXcb UG 1 0 59 eth0
::/0 fe80::42XX:XXff:feXX:XXcb UGDAe 1024 0 0 eth0
::/0 fe80::222:YYff:feYY:YY1b UGDAe 1024 0 0 eth0
最后两个条目是从路由器通告中自动了解的。
我的预期是,将 accept_ra 和 autoconf 设置为 0 后,自动配置的全局范围 IP 地址和学习的路由不应该出现。
我正在尝试禁用自动配置的全局范围 IP 地址,因为我不想让我的 MAC 地址泄露到互联网上。我也不想有任何学习到的路由,因为我推测带有错误广告的流氓路由器可能会导致我的主机将数据包发送到错误的地方。
答案1
如果系统在您禁用 autoconf 和 accept_ra 之前已经学习了默认网关和前缀,则它们将保持活动状态,直到它们超时。超时时间取决于 RA 所包含的内容。您将使用该ip -6 addr
命令看到更详细的信息。
要解决您的问题:请确保在网络接口启动之前设置选项。在 /etc/sysctl.conf 中设置它们应该为你做那件事。
附言:如果您担心您的 MAC 地址被外界看到,那么您可能还应该禁用 cookie 和其他可以在您的浏览器等中识别您身份的东西。
答案2
在 Debian 12 Bookworm 中,对我来说唯一能禁用路由器广告获取的全局 IPv6 地址的方法是添加/etc/network/interfaces
iface eth0 inet6 auto
accept_ra 0
使用
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
不工作。