方法一、三行命令实现

参考文章:https://www.jianshu.com/p/ed34cbf3b90c

Padavan固件中,在 外部网络(WAN)-IPv6设置 中这样设置:

ipv6_3.jpg

#将下列命令加入开机启动脚本即可

modprobe ip6table
mangle ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i eth2.2
brctl addif br0 eth2.2
logger -t "【IPV6】" "IPV6已启动"

这种方式能直接获取2001:开头的地址,但是会莫名其妙地出现“kernel: icmpv6_send: no reply to icmp error”在系统日志处刷屏,据说“在 WAN 上行/下行启动后执行”加入下列命令可以解决?实测无效...?出现这种错误大概是由于学校的IPV6出口不稳定的缘故吧

echo 0> /proc/sys/net/ipv6/conf/`nvram get wan_iface`/accept_ra
ip -6 route flush default dev`nvram get wan_iface`
echo 2> /proc/sys/net/ipv6/conf/`nvram get wan_iface`/accept_ra

 

方法二、6realyd实现IPV6转发

参考文章:https://blog.sunriseydy.top/daily/padavan-ipv6/

(1)开启opt环境

USB应用程序-其他设置 允许运行Optware  选择Entware

ipv6_1.jpg

如果没有插U盘或者SD卡则需要设置opt安装模式为“安装到内存”

ipv6_2.jpg

(2)加载opkg

在ssh中执行 opkg.sh 命令,等待约1~2分钟即可

 

(3)IPV6设置同方法一

 

(4)安装6relayd

将下面脚本粘贴到“高级设置”-“自定义设置”-“脚本”-“在路由器启动之后执行”中最后即可实现开机自动安装配置 6relayd。

#开机自动安装运行 6relayd

export PATH='/etc/storage/bin:/tmp/script:/etc/storage/script:/opt/usr/sbin:/opt/usr/bin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin'
export LD_LIBRARY_PATH=/lib:/opt/lib
while ! [ -x "`which opkg`" ]
do
        logger -t "【6relayd】" "Waitting opt install"     
        sleep 3
done
while ! [ -x "`which 6relayd`" ]
do
        logger -t "【6relayd】" "6relayd not found,begin to install it"
        opkg update
        opkg install 6relayd
done
logger -t "【6relayd】" "6relayd has been installed"
6relayd -d -A eth2.2 br0
logger -t "【6relayd】" "6relayd start"

(5)解决6relayd自动掉线

长时间没有 IPv6 的连接,6relayd 会自动停止,这样就要重新运行 6relayd 一次。所以需要每隔半小时 ping 一下谷歌的 IPv6 地址

将以下代码添加到“系统管理”-“服务”-“计划任务 (Crontab)”中即可。

 */30 * * * * ping -6 -c 2 ipv6.google.com

可是来自学校的断线又能怎么办呢┑( ̄Д  ̄)┍ 而且6relayd本身不怎么稳定

 

方法三、使用NAPT66实现路由器IPV6 NAT转发

参考文章0:https://www.jianshu.com/p/eb07eaac6167

参考文章1:http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=260924

参考文章2:http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=325078

 

Padavan的Linux内核原生不支持ipv6的NAT;

NAPT66是北邮学生开发的在较旧内核的Linux上实现ipv6 nat的内核模块;

项目地址:https://github.com/mzweilin/napt66

要想使用NAPT66,需要对内核代码做修改,参考:http://www.jianshu.com/p/3a9ec169336e

(然而我一点都不会路由器固件内核的编译...还好hiboy的固件集成了napt66.ko)

 

(1)进入“自定义设置 - 脚本”中“路由器启动后执行”脚本中添加如下脚本:

wan_if 参数不能照搬,要指定为实际的网口

###启动NAPT66模块
insmod /lib/modules/$(uname -r)/kernel/net/napt66/napt66.ko wan_if=eth2.2
logger -t "【NAPT66】" "模块已加载"

 

(2)在“在防火墙规则 (Emong's Qos) 启动后执行”脚本中添加如下脚本:

###NAPT66 所需要的防火墙政策
ip6tables -F
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
logger -t "【NAPT66】" "防火墙政策已设置"

 

(3)IPV6设置如下图

关闭IPV6硬件加速

IPV6内网地址开头不要用fcxx,fdxx开头的保留地址,否则客户端可能会优先使用 IPv4

LAN DHCPv6服务器选择 Stateless & Stateful

ipv6_4.jpg

 

用NAPT66的好处是靠路由器NAT转发IPV6流量,而且局域网设备获取的是内网的IPV6地址

┑( ̄Д  ̄)┍但是该暴毙的还是会暴毙,但是只需要点一下 "外部网络状态" 中的 "重新连接" 再等一会久可以了?有待观察