IPv4 分配一整块 IPv4 环回地址,127.0.0.0/8
. 相比之下,IPv6 只分配一个环回地址,::1
.
IPv6 在其环回地址分配方面如此吝啬,这似乎令人惊讶,因为总的来说它提供了地址空间的巨大增加。
在 IPv4 中,我发现能够使用多个环回地址很有用。例如,对于某些复杂的 DNS 设置,我可以安装两个本地 DNS 服务器,一个在 上127.0.0.1:53
,另一个在127.0.1.1:53
. (使用不同的 IP 地址引用不同的服务器要容易一些,而不是在单个 IP 地址上使用非标准端口号。)我不能在只有一个环回地址的 IPv6 上使用这种策略。
与 IPv4 不同,只为 IPv6 分配一个环回地址可能有什么好的理由?
我想REDIRECT
在 NATPREROUTING
链中执行 iptables规则,将连接重定向到端口 80 以转到 8080。但我只想对输入数据包(发往本机)而不是转发数据包(发往例如互联网)。
在PREROUTING
链中的规则中,有没有办法区分发往这台机器的数据包和正在转发的数据包,并以不同的方式处理它们?
以不需要在规则中枚举特定接口或 IP 地址的方式执行此操作是理想的,因为这不太灵活(例如,如果接口或 IP 地址更改,则需要更新 iptables 会更复杂规则)。
对于 IPv6,我知道客户端可以使用 SLAAC 无状态地获取地址,或者使用 DHCPv6 有状态地获取地址(尽管我听说 Android 不支持通过 DHCPv6 分配地址)。
我的问题是,对于通过 SLAAC 配置其 IPv6 地址的客户端,网络将其他网络配置推送给他们的方式是什么?他们能否通过路由器广告获得此类配置,或者网络还必须为客户端部署 DHCPv6 以获取这些额外信息(但不能获取其 IPv6 地址)?例如:
如果 DHCPv6 是获取此类服务器信息的唯一方法,那么将客户端配置为通过 SLAAC 获取其地址,然后通过 DHCPv6 获取此额外配置是否合理直接?