配置OpenWrt IPv6 NAT时常见的错误OpenWrt IPv6 NAT配置
IPv6设计出来就是为了让每个设备都能有个公网地址,理论上根本不需要NAT这种“中间商”来转一手。但有时候吧,比如公司内网或者家里,你就是不想让内部设备直接暴露在外,还是想用NAT来藏一下,这时候在OpenWrt上配置IPv6 NAT就变得贼麻烦,一不小心就掉坑里。
NAT 与 IPv6 的关系
你得先搞清楚,NAT这玩意儿本来是IPv4时代的产物,说白了就是因为公网IP不够分,才搞出一堆私有IP躲在同一个公网IP后面上网。IPv6地址多到可以给地球上每粒沙子都分一个,所以从设计上讲根本用不着NAT。但如果你非要在IPv6环境下还用NAT——比如我就是不想让内网设备直接有公网v6——那OpenWrt的配置你就得好好折腾一下了。
错误一:软件包没装全
我第一次搞的时候,压根没注意软件包这回事,结果配置了半天屁用没有。后来才发现,缺了iproute2、iptables-mod-NAT这些基础包,NAT根本玩不转。这就像你想盖房子却没打地基,墙砌再高也得塌。
解决办法其实挺简单:
opkg update opkg install iproute2 iptables-mod-nat
装完重启一下服务,一般就OK了。千万别跳这一步!
错误二:防火墙挡了路
OpenWrt默认防火墙策略挺严的,就算你NAT配置对了,防火墙不让过那也是白搭。我之前就遇到过,内网设备能拿地址但就是上不了网,查了半天原来是防火墙没放行LAN到WAN的v6流量。
你得去“网络”->“防火墙”里加规则,或者在ssh里敲:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
注意把eth0换成你的WAN口名称,别直接复制粘贴!
错误三:DHCPv6 和 RA 没配好
这俩服务要是没开或者配置不对,内网设备根本就拿不到IPv6地址。我一开始根本没注意RA(Router Advertisement),结果设备只能拿到fe80开头的链路本地地址,完全没法用。
你得在“网络”->“接口”->LAN的配置里,把DHCPv6服务模式设为Server或Relay,同时确保RA也开启了。可以用下面命令检查RA配置:
radvd -C /etc/radvd.conf
如果有报错,就照着提示改配置,然后重启服务:
/etc/init.d/radvd restart
错误四:DNS解析崩了
有时候你会发现设备有IPv6地址,但就是打不开网页。这种情况八成是DNS解析挂了。OpenWrt默认用的dnsmasq如果没配好DNS服务器,v6环境下特别容易抽风。
建议手动指定靠谱的DNS,比如Google或者Cloudflare的:
在/etc/config/dhcp里加上:
config dnsmasq 'dns'
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
list server '8.8.8.8'
list server '2001:4860:4860::8888'
加完记得重启dnsmasq:
/etc/init.d/dnsmasq restart
总之,在OpenWrt上配IPv6 NAT就是各种细节堆出来的,漏一个就可能全盘皆崩。建议搞完之后用logread多看系统日志,有啥错误及时处理。别看IPv6号称“即插即用”,真配起来还是得有点耐心的——祝你好运!
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看