Welcome to Yumao′s Blog.
現在IPV6支持的越來越完善了
但是在OpenWRT系統(以下簡稱OP)中
除了上游公告PD地址可以自動設置以外
其他時候都需要手動配置IPV6
以達到下方設備能夠通過IPV6訪問網路
1.IPV6 Relay
Relay的原理很簡單
因爲上游默認現在都不會只公告/128地址
所以在有大於/128的掩碼下
可以通過Relay可以將掩碼組内的其他IP分配給内網的設備
1-1.在LUCI的頁面中將LAN接口的DHCP設定中
IPV6模式分別設定為:
路由通告服務:中繼
DHCPv6服務:中繼
NDP代理:中繼
此操作會自動將/etc/config/dhcp文檔中
‘lan’ 下的模式修改為relay mode:
config dhcp 'lan' option ra "relay" option dhcp "relay" option ndp "relay"
1-2.在/etc/config/dhcp文檔中
添加wan口作爲bridge的master
因爲我用的是LTE的CDC網路卡默認接口為usb0
接口名稱為lte6 協議為HDCPv6
請自行修改為相關網路接口:
config dhcp 'lte6' option interface 'lte6' option dhcpv6 'relay' option ra 'relay' option ndp 'relay' option master '1'
1-3.reboot設備后
將可以在内網設備中獲取到上游公告的IPV6地址即爲成功
注意:因爲OP默認會添加from整個網段via gw的route
需要在在計劃任務中添加以下命令:
* * * * * /root/ipv6-bridge.sh
/root/ipv6-bridge.sh的内容如下
#!/bin/sh if [ -n "`ip -6 route show default|grep from -m 1`" ];then logger -t "IPV6" change default gateway without from source DEFAULT=`ip -6 route show default|grep from -m 1` #刪除默認路由 ip -6 route del ${DEFAULT} #添加無from source路由 ip -6 route add `echo ${DEFAULT}|sed -e 's/from [^ ]* //'` #添加子網内設備通過br-lan訪問 ip -6 route add `echo ${DEFAULT}|grep from|awk '{printf $3}'` dev br-lan metric 128 fi #刪除之前自動添加的錯誤路由 ip -6 route list|grep -v default|grep -v br-lan|grep static|while read -r s; do ip -6 route del $s; done #可選:可以根據需求自定義SUBNETEX的值 SUBNETEX="240e:" ip -6 route list|grep -v default|grep -v br-lan|grep ${SUBNETEX}|while read -r s; do ip -6 route del $s; done
添加運行權限
chmod +x /root/ipv6-bridge.sh
從而使用IPV6
2.IPV6 Nat6
NAT推薦只在上游分發/128掩碼的情況下使用
2-1.設置IPv6 ULA前綴為fd00::/48
内網設備重新連接OP之後可以分配到fd00::/48内部IP
2-2.開啓NAT
ip6tables -t nat -A POSTROUTING -s fd00::/48 -j MASQUERADE
2-3.因爲OP的BUG
連接上之後路由表有限制sourceIP
需要通過一下命令修復路由
if [ -n "`ip -6 route show default|grep from -m 1`" ];then logger -t "IPV6" change default gateway without from source DEFAULT=`ip -6 route show default|grep from -m 1` #刪除默認路由 ip -6 route del ${DEFAULT} #添加無from source路由 ip -6 route add `echo ${DEFAULT}|sed -e 's/from [^ ]* //'` fi