IPv6 DS-Lite环境下树莓派4端口转发异常问题求助
兄弟,我之前折腾DS-Lite环境的IPv6端口时也踩过类似的坑,给你几个实用的排查方向:
先确认DDNS绑定的IPv6地址是否正确:你可以在树莓派上执行
ip -6 addr show eth0,看看输出里的全局单播地址(通常是带global标记的)是不是和No-IP上的AAAA记录一致。DS-Lite环境下有些设备会自动生成临时IPv6地址用来对外通信,如果DDNS绑的是旧的固定地址,就会导致除了80端口外其他端口不通——毕竟80可能是路由器默认放行了的。检查路由器的IPv6防火墙规则:很多支持DS-Lite的路由器,就算你开了80-8888的端口范围,默认可能会对非标准端口(比如1194、8083)做额外拦截,或者需要单独给这些端口设置“允许外部IPv6访问”的规则,而不是只靠MAC地址绑定。你登录路由器后台,找找IPv6防火墙或者安全策略的选项,确认这些端口没有被默认屏蔽。
验证应用是否监听IPv6地址:虽然内网能访问,但说不定你的OpenVPN、Webmin只监听了IPv4地址(输出是
0.0.0.0),而没有监听IPv6的::地址。你可以在树莓派上执行ss -tulpn | grep -E '1194|8083',看看输出里有没有包含IPv6的监听记录。如果只有IPv4,就得去改应用的配置文件,让它们支持IPv6监听。换个外部设备测试连通性:内网访问和外网路径完全不同,内网通不代表外网规则生效。找一台有公网IPv6的设备(比如手机开移动数据,现在大部分运营商都支持IPv6),用
telnet 你的DDNS域名 1194或者nc -zv 你的DDNS域名 8083来测试,这样的结果才准确。重启路由器的IPv6服务:有些DS-Lite的IPv6隧道偶尔会出现状态异常,导致端口转发规则不生效。你可以在路由器后台重启一下IPv6相关的服务,或者直接重启路由器,再测试端口。
如果这些方法都试过还是解决不了,你可以把路由器的具体型号,还有树莓派上ip -6 addr show eth0和ss -tulpn的输出贴出来,大家再帮你深挖问题~
备注:内容来源于stack exchange,提问作者roland

