Ubuntu 22.04
我有 2 个接口:eth0
并且tap0
有以下网络:
host1 <-- eth0 --> router <-- tap0 --> host2
我发送以下数据包:
IPv6(dst="top0's host2 address", srs="eth0's host1 address")
问题甚至禁用路由器上的所有接口转发配置,因为
$ sudo sysctl -w net.ipv6.conf.tap0.forwarding=0
$ sudo sysctl -w net.ipv6.conf.eth0.forwarding=0
但保持net.ipv6.conf.all.forwarding = 1
仍会使数据包通过路由器进行转发。如果禁用,net.ipv6.conf.all.forwarding = 0
则数据包转发停止。
接口特定的转发选项有什么效果吗?
它确实有效果,但与 中的不同
net.ipv4
。 sysctl 旋钮不是控制各个接口的转发,而是控制 IPv6“主机/路由器行为”,例如:来自此接口的邻居通告是否具有
Router
标志(根据 RFC 4861,这似乎与邻居不可达检测最相关)接口是否接受 IPv6“SLAAC”自动配置(将发送路由器请求并接受路由器通告)——即
forwarding=1
覆盖accept_ra=1
并禁用自动配置,除非accept_ra=2
用于重新启用它;是否接受 ICMP 重定向 –
forwarding=1
覆盖accepts_redirects
并强制禁用该功能。该列表大部分是从 Linux 的 复制而来
Documentation/networking/ip-sysctl.rst
。要控制每个接口的转发,您必须使用 iptables。