@
Jirajine > 对于 masquarade 而言根本不需要做这种事情,没有哪个 p2p 的应用需要从内网访问映射的端口而不是直接连接
RFC 4787 ,REQ-9: A NAT MUST support "Hairpinning"
需要,而且很需要,如果没有 Hairpin ,你自己的外部地址+端口外部可以访问但内部不能访问不是很奇怪么,而且这个内部包括整个 NAT 后面的网络。没有 Hairpin ,内部网络间的 P2P 就无法联通。
> 这样做肯定会和很多东西冲突的,比如本地监听的程序和 netfilter dnat
你有点想当然了,hairpin 的流量最终是会从网卡返回来的,对于需要 NAT 的流量会进行 NAT ,不需要的流量会最终 loopback 回来,这个路由规则相当于在正常的 (lan -> local) 包流中加入 einat (lan -> einat > local),并不会有什么所谓的冲突。
> 网络就不要部署以 ipv4 地址作为 host 的 http 服务啊
这不是你可以控制的,没有域名使用 IPv4 作为地址的公共网站还是有的,用户也有需求访问这些网站。而且可以嵌入 L3 IPv4 地址的协议也不止 HTTP ,比如 BT 。对于家庭/办公室网络这些都是刚需。
> 现代系统会自己自动进行本地 464XLAT
我不知道有哪个 Linux 发行版默认配置了这个,而且家庭用户的设备也不一定是高集成度的”现代系统“。
关于 NAT64 你单方面的阐述它对你限制性应用场景下方便网络配置的必要性就到此为止吧,这差不多跑题了,建议另开一主题先让大家达成共识。
而且你我都不在一个频道上,我的论点是 NAT64 下的 IPv6-only 对于家庭用户来说为了配置它所付出的并不能得到相比传统双栈网络在网络连通性、速度方面的提升,作为家庭用户我个人并没有动机去使用它并花费精力实现它,所以对于在 einat 中实现 NAT64 的优先级为低。
我对 einat 预想的使用场景充其量是家庭和办公室网络,而且非图灵完备的 eBPF 程序能实现的功能是有限制的,对于其他场景和更高级的功能建议使用企业级 NAT 设备。。