Welcome to Yumao′s Blog.
OpenWRT下IPV6網路設置
, 2018年10月27日 , Linux , 评论 0 ,

現在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
关键字:, , , ,

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *