我在一家 ISP 工作,该公司正在使其基础设施支持 IPv6。我们的核心路由器已经有了一个工作设置,但我们的大部分光纤客户都使用运行 Debian Squeeze 的路由器。
在 Linux 上启用 IPv6 功能并不是问题,但是,一旦我们为 Linux 路由器分配了 IPv6 地址和工作路由,它就会立即将工作地址和路由传输到其后面的所有系统,这不是我们想要的。
我们当前的计划涉及在所有系统上手动设置 IPv6 地址,但我似乎找不到告诉内核不要执行路由器通告的开关或选项。
有什么建议么?
答案1
禁用 RA 接受:
sysctl -w net.ipv6.conf.<interface>.forwarding=0
sysctl -w net.ipv6.conf.all.forwarding=0
sysctl -w net.ipv6.conf.<interface>.accept_ra=0
sysctl -w net.ipv6.conf.all.accept_ra=0
或将类似的内容添加到 /etc/network/interfaces
pre-up echo 0 > /proc/sys/net/ipv6/conf/<interface>/forwarding
pre-up echo 0 > /proc/sys/net/ipv6/conf/<interface>/accept_ra
pre-up echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
pre-up echo 0 > /proc/sys/net/ipv6/conf/default/accept_ra
答案2
听起来几乎就像是在 LAN 和 WAN 接口之间桥接第 2 层。如果是这种情况,那么用户的大量内部流量可能最终会到达 WAN,并且 WAN 上的所有路由器通告(用于 CPE)实际上都是通往 LAN 的桥接器。
如果是这样的话:
- 停止进行桥接,它很容易危及用户的安全
- 使用 ebtables 在 LAN 和 WAN 之间进行过滤
我真的希望我在这里错了......
答案3
您可能真正想要的是 DHCP-PD(前缀委派)。使用 DHCP-PD,您的 IPv6 设置将看起来更像 IPv4 设置。
在 IPv4 中,您使用 DHCP 为客户分配单个 IPv4 地址,然后客户使用 NAT 将本地 IP 分配到其网络(通常也通过 DHCP)。
在 IPv6 中,您使用 DHCP-PD 将 /64 分配给客户,然后客户使用路由器 adv。将此 /64 中的地址分配给其内部网络。每当您分配的 /64 发生变化时,就有一些脚本可以更新 radvd 配置。