Padavan启用ipv6并允许公网访问内网
一、开启opt环境
首先要在老毛子的管理后台开启 opt 环境,设置路径在“扩展功能”-“配置扩展功能”-“opt环境”,启用 opt 自动更新、启用扩展脚本自动更新、打开 opt 强制安装、opt 安装模式选择“自动选择:SD→U盘→内存”。打开之后在 log 中会有安装的过程,出现类似【opt】: opt 挂载正常:tmpfs
的日志说明 opt 环境已经安装成功。
二、开启 WAN 端 IPv6
IPv6 连接类型:Native DHCPv6;即原生的 DHCPv6
IPv6 外网设置
获取 IPv6 外网地址:Stateless: RA
DNSv6 外网设置
自动获取 IPv6 DNS:是
通过 DHCPv6 获取内网 IPv6 地址:启用
启用 LAN 路由器通告:启用
启用 LAN DHCPv6 服务器:Stateless (*)
然而这个时候只是路由器能访问 IPv6,路由器下级的设备还不能,因为没有对应的 IPv6 转发协议。网上有很多这样的程序,6relayd 就是其中一个,这里我用 6relayd 来转发 IPv6。
三、安装并运行 6relayd
opkg update
opkg install 6relayd
6relayd -d -A eth2.2 br0
这里的 eth2.2
就是 WAN 网口的网卡名,可用 ifconfig
命令来查看,一般不用更改。而 br0
则代表整个内网,一般也不用更改。
运行之后连接到路由器的设备也能获取到 IPv6 地址并访问 IPv6 资源。
四、开机自动安装并配置 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 eth3 br0
logger -t "【6relayd】" "6relayd start"
五、解决 6relayd 自动掉线
在高级设置-系统管理-服务-计划任务(Crontab)中添加如下代码:
配置好之后内网可以访问公网,但公网进不来的,参考此步骤!
引起该问题的原因是ip6tables防火墙导致的。关闭也很简单。
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
把这几行命令加到路由器启动后执行的脚本即可~