OpenWrt IPv6配置
都说国家在大力推行IPv6了不是,咱们怎么也得整上一个不是。国内三大运营商应该基本都分配IPv6了,但是得把光猫设置成桥接模式才可以让内网的设备获得IP,如果运营商没给IPv6的话应该可以打电话问问。除此以外各大高校基本都是有教育网IPv6的,而且有的学校还不限流量。IPv6的存在是为了解决IPv4地址耗尽的问题,理论上IPv6地址可以给地球上每一个沙子都整一个hhh,设计的挺美好但是实际应用中感知并不那么强烈。而且鉴于以上的设计,IPv6是没有NAT的,虽然有NAT66的实现,但是一般也不推荐使用。
本人目前在宿舍可以直接DHCPv6获取到v6的IP,但是猜测学校是为了响应一人终端一号的安全要求,分配的IP竟然是/64
的,这种情况也就是所谓的无PD(Prefix Delegation)。正常情况下IPv6应该给分配一个地址前缀,然后你自己的路由设备给局域网内的设备分配这个前缀下的子IP。而无PD后这个IP就算到头了,不可以再往下分配了,这就导致了只可以单个设备使用(实在不想吐槽1202年了宿舍竟然还只能一个设备上个看视频都卡的网),所以解决这个问题的方法也简单,那就是IPv6 NAT。
这里把IPv6 ULA 前缀提出来说下,这个东西其实就是一个内网IP前缀,设计用来方便内网内主机间使用IPv6通信,但是不支持此类IP直接作为源IP访问外部的公网地址。多数情况下在OpenWrt里这个值设置了没问题,在无PD环境下还必须设置。
有PD IPv6中继
未测试 留坑
家庭用户一般是PPPoE
拨号,运营商会给分配有PD的IPv6前缀,所以OpenWrt里IPv6设置选择中继就可以了
无PD IPv6 NAT内网
先直接贴两个大佬:
我这里WAN口获取到的IPv6这样子,真的无力吐槽
构造IPv6 NAT其实也简单,主要就是添加NAT和设置默认路由。
首先确认OpenWrt支持IPv6 NAT,这里安装了如下pkg。不过由于有很多内核模块,我其实是直接自己编译进去了,稳妥点
1 | opkg install kmod-ipt-nat6 kmod-nf-nat6 ip6tables kmod-ip6tables kmod-ip6tables-extra odhcp6c odhcpd-ipv6only |
然后需要设置IPv6 ULA 前缀,因为之后IPv6流量就是由被路由器分配的IPv6 ULA地址发出,到路由器进行一层NAT
ULA前缀可以在https://www.ip-six.de生成,填入自己的MAC地址即可,当然也可以生成一个Fake MAC来这里
可以直接用uci设置也可以直接web界面上设置,有人建议把地址的第一个f改成d,按需求来吧没问题可以不改
1 | uci set network.globals.ula_prefix="fd0f:2ff1:36ba::/48" |
OpenWrt经过尝试后需要如下设置,且各处的使用内置的IPv6管理需要打开,DHCP/DNS设置里的禁止解析 IPv6 DNS 记录要取消
到这里内网设备应该已经可以获取到ULA前缀的IPv6地址了
LAN口也有了自己的v6 IP
到这里就只剩下最后防火墙和路由配置,由于每次Interface的变化可能导致默认IPv6网关变化,所以使用了hotplug实现自动化
1 |
|
将脚本放在/etc/hotplug.d/iface
下即可,命名为99-nat6
。NETWORK_NAME
的值要根据不同设备进行修改,具体的看图吧,这个折腾了我好久,不是很了解这部分
然后重启下wan6就可以愉快的开启IPv6之旅了
如果你开启了SmartDNS,请勾选上IPV6服务器并添加几个IPv6的DNS服务器