2023年11月28日发(作者:)

配置IPv6公⽹地址DDNS并开放外⽹访问端⼝

⽬前使⽤三⼤运营商宽带服务都会下发公⽹IPv6地址,这样我们想要在外⽹访问家⾥的路由、NAS等设备就可以直接通过IPv6地址来访问

了。但是每次重新拨号后IPv6地址都会改变,⽽且IPv6的地址很长,这样就引出了动态域名服务,即DDNS

其实DDNS的原理就是将本地获取到的公⽹IP地址告诉域名服务商,并且在IP地址发⽣变化时也会同步新的IP地址到域名服务器程序,这样

我们只需使⽤域名就可以随时随地去访问家⾥的设备了。

为了安全起见,路由器的防⽕墙策略默认是禁⽌从外⽹主动访问内⽹的设备的,我们需要将被访问的设备上的服务对应的端⼝开放出来。

归纳起来其实就两步:1DDNS2)开放端⼝。

下⾯我们就来实际操作⼀下吧

⼀、配置IPv6 DDNS

以下是两种DDNS⽅法,任选其⼀即可

1.使⽤每步DDNS

⾸先去这个⽹站注册⼀个域名,如:,并且复制出注册时设置的登陆密码备⽤。

下载这个脚本,将第35⾏中123456改为你⾃⼰申请的域名和登陆密码。

脚本使⽤WinSCP等⼯具上传⾄需要做域名解析的设备中,此处以我的OpenWrt为例

SSH登陆设备

创建⽬录

mkdir -p /usr/share/meibu

将脚本上传⾄此⽬录(/usr/share/meibu

赋予脚本执⾏权限

chmod +x /usr/share/meibu/meibu.sh

执⾏脚本

/usr/share/meibu/meibu.sh

查看⽂件内容

ll /usr/share/meibu

cat /usr/share/meibu/

查看域名解析到的地址是否和中的匹配

nslookup 8.8.8.8

如果两个地址⼀致则表明解析成功

添加定时任务

crontab -e

添加以下内容

* * * * * /bin/sh /usr/share/meibu/meibu.sh

这样每分钟就会查询⼀次IP地址,有变化时就将新的IP地址绑定到域名上

2.使⽤dynv6 DDNS

去这个⽹站注册⼀下,使⽤邮箱确认(注:邮箱链接确认可能需要梯⼦)后登陆

到这⼉创建⼀个域名

创建好后切换到instructions标签,如下图,复制域名和token备⽤

下载这个脚本⽂件

SSH登陆设备

创建⽬录

mkdir -p /usr/share/dynv6

上传脚本⾄/usr/share/dynv6⽬录中

赋予脚本执⾏权限

chmod +x /usr/share/dynv6/dynv6.sh

输⼊以下命令进⾏解析(注意将红字部分替换为⾃⼰的token和域名)

token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/sh /usr/share/dynv6/dynv6.sh

查看域名解析到的地址

nslookup 8.8.8.8

cat /usr/share/dynv6/.6

两个地址⼀致则域名解析成功

添加定时任务

crontab -e

添加以下内容

* * * * * token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/sh /usr/share/dynv6/dynv6.sh

⼆、开放外⽹访问端⼝

防⽕墙的设置都是在主路由上进⾏的,这⾥分别以主路由是PadavanOpenWrt开放8088端⼝为例。

1Padavan开启IPv6外⽹访问端⼝

1)开启路由器⾃⾝端⼝

ip6tables -A INPUT -p tcp --dport 8088 -j ACCEPT

ip6tables -A OUTPUT -p tcp --sport 8088 -j ACCEPT

2)开启局域⽹其他设备端⼝

ip6tables -A FORWARD -p tcp --dport 8088 -j ACCEPT

3)开机⾃动开放端⼝

⾼级设置”->“⾃定义设置”->“脚本”->“在防⽕墙规则启动后执⾏:”最后添加以下内容

# 开启路由器⾃⾝端⼝

ip6tables -A INPUT -p tcp --dport 8088 -j ACCEPT

ip6tables -A OUTPUT -p tcp --sport 8088 -j ACCEPT

# 开启局域⽹其他设备端⼝

ip6tables -A FORWARD -p tcp --dport 8088 -j ACCEPT

点击最下⾯的应⽤本页⾯设置

2OpenWrt开启IPv6外⽹访问端⼝

1)开启路由器⾃⾝端⼝

ip6tables -I INPUT -p tcp --dport 8088 -j ACCEPT

ip6tables -I OUTPUT -p tcp --sport 8088 -j ACCEPT

2)开启局域⽹其他设备端⼝

ip6tables -A zone_wan_forward -p tcp -m tcp --dport 8088 -m comment --comment Allow-8088 -j zone_lan_dest_ACCEPT

或者

ip6tables -I FORWARD -p tcp --dport 8088 -j ACCEPT

3)开机⾃动开放端⼝

vim /etc/

exit 0上⾯添加

# 开启路由器⾃⾝端⼝

ip6tables -I INPUT -p tcp --dport 8088 -j ACCEPT

ip6tables -I OUTPUT -p tcp --sport 8088 -j ACCEPT

# 开启局域⽹其他设备端⼝

ip6tables -I FORWARD -p tcp --dport 8088 -j ACCEPT

保存退出

附:使⽤socat转发内⽹IPv4服务

如果不是访问局域⽹NAS这类对传输速度要求特别⾼的设备,可以在主路由上使⽤socat来进⾏转发,这样就只需要在主路由上配置⼀次

DDNS,然后想访问局域⽹哪个设备只需配置socat转发并开启主路由⾃⾝的外⽹访问端⼝即可,如外⽹访问主路由的IPv6 8088端⼝时转发

⾄内⽹设备的192.168.2.110:80这个服务,只需执⾏以下命令即可:

nohup socat TCP6-LISTEN:8088,reuseaddr,fork TCP4:192.168.2.110:80 > /dev/null 2>&1 &

开机⾃动执⾏转发

Padavan固件:找到⾼级设置”->“⾃定义设置”->“脚本”->“在路由器启动后执⾏:”,添加以下命令

nohup socat TCP6-LISTEN:8088,reuseaddr,fork TCP4:192.168.2.110:80 > /dev/null 2>&1 &

点击最下⾯的应⽤本页⾯设置

OpenWrt固件:将上⾯的命令添加到/etc/⽂件(exit 0上⾯)中,保存退出。