收起左侧

全独立公网IPv6访问方法

9
回复
322
查看
[ 复制链接 ]

1

主题

4

回帖

0

牛值

江湖小虾

前言

内网穿透一直是私有云nas的一个痒点,没有的话仅家用也不是不行,有当然更好。大家的内网穿透方法流行的有三类:

  1. 公网商业中继服务与动态域名解析,比如花生壳这种,比较稳定但是要花钱,且连接依赖第三方。
  2. 自建反向代理服务器,技术上比较麻烦,需要自己搞定公网 域名或者公网服务器,花费精力,还可能不省钱。
  3. IPv6直连,我个人感觉最好的办法,省钱,比较省事,且不太依赖第三方。但是要在需要的时候能够弄到当前nas的ipv6地址,本文就是提供一种获取ipv6地址的方法和思路,希望大家一起完善。

叠甲

本人水平有限,但是本文介绍的方法我正在使用,大部分时间没有问题。不对的地方希望大家能够理解,有谁有更好的方法也请不吝赐教。

方法

我的办法很直接,

  1. 先写一个脚本用来获取当前的 IPv6 地址并保存到指定文件,

  2. 然后再写一个脚本用来发送获取到的 IPv6 地址到指定的邮箱,

  3. 最后再创建一个计划任务,让这个脚本每天执行一次,这样即使网络重新分配了新的 IPv6 地址也能够正常的访问我的 nas。

文件列表如下:

/vol1/1000/ipv6.txt
/vol1/1000/getip.sh
/vol1/1000/smail.py

使用的计划任务工具:1Panel

1Panel 计划任务脚本如下:

bash /vol1/1000/getip.sh
python3 /vol1/1000/smail.py

或者使用如下脚本:

ip -6 a > /vol1/1000/ipv6.txt
python3 /vol1/1000/smail.py

详情

获取当前 IPv6 地址并保存到指定文件路径 /vol1/1000/ipv6.txt的脚本如下(#请将该脚本文件保存到 /vol1/1000/getip.sh):

#!/bin/bash
ip -6 a > /vol1/1000/ipv6.txt

发送获取到的 IPv6 地址到指定邮箱的脚本如下(这是个python3脚本,保存到 /vol1/1000/smail.python):

import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
# 第三方 SMTP 服务
mail_host="替换成你的邮件服务器"  #设置服务器 比如163的是 smtp.163.com
mail_user="替换成你的邮箱用户名"    #用户名
mail_pass="替换成你的邮箱口令"   #口令,注意 现在很多邮箱第三方访问都是用的授权码不是邮箱密码
 
op = open("/vol1/1000/ipv6.txt")
ipv6_info = op.read()
op.close()
 
sender = '设置成你发送邮件的邮箱'  #要和你设置的服务器一致
receivers = ['设置成你接收邮件的邮箱']  # 接收邮件,建议和发送邮箱设置一致
 
message = MIMEText(ipv6_info, 'plain', 'utf-8')
message['From'] = Header("self", 'utf-8')
message['To'] =  Header("self_", 'utf-8')
 
subject = 'python get IPv6'
message['Subject'] = Header(subject, 'utf-8')
 
try:
    smtpObj = smtplib.SMTP() 
    smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
    smtpObj.login(mail_user,mail_pass)  
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

注意:上面这个脚本中有一些参数需要替换成自己的邮箱,脚本中发送邮件使用的是25端口,这个端口收发邮件不加密,这里不要用自己搭建的邮件服务器,大的邮件服务商都会屏蔽掉没有认证过的邮件服务器发送的邮件。

这时我们就有了两个脚本文件 getip.shsmail.py且执行过程中还会产生一个文本文件 ipv6.txt,这三个文件都在同一目录中 /vol1/1000/,要确保两个脚本文件有可执行权限,且txt文件有写入权限。

最后创建计划任务。这里有两个选择,一个是 crontab 一个是使用论坛里很多人在用的 1Panel ,推荐后者1Panel。

如何创建计划任务这里不再详细说明,详见大神的帖子:[超详细-飞牛设置定时自动关机+远程开机或定时开机]https://club.fnnas.com/forum.php?mod=viewthread&tid=25451
(出处: 飞牛私有云论坛 fnOS)

这里仅说明下计划任务的脚本内容:

bash /vol1/1000/getip.sh
python3 /vol1/1000/smail.py

上面的脚本第一行执行脚本并把结果保存到指定文件,第二行从指定文件读取内容发送邮件到指定邮箱。

也可以直接把第一个脚本的命令直接写在第一行,这样任务脚本的内容就是:

ip -6 a > /vol1/1000/ipv6.txt
python3 /vol1/1000/smail.py

参考

实测成功,这是我的设置截图

屏幕截图2025-06-04174425.png

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

7

回帖

0

牛值

江湖小虾

ipv6直连这个有比较通行的做法了,搞个域名,使用ddns功能自动把IP解析到域名上,通过域名访问。飞牛已经提供了ddns功能,搞个域名就行了。

不过外部网络不一定支持ipv6,比如公司网络没开ipv6,就还是连不上,这个时候内网穿透就可以起作用了。

有域名 但是不会操作 有教程吗  详情 回复
昨天 10:42

0

主题

5

回帖

0

牛值

fnOS系统内测组

飞牛百度网盘玩家

哄哄_otEN2 发表于 2025-6-5 07:41
ipv6直连这个有比较通行的做法了,搞个域名,使用ddns功能自动把IP解析到域名上,通过域名访问。飞牛已经提 ...

有域名 但是不会操作  有教程吗
如果要自己去做 DDNS,需要检测本地 IP 地址的变化,然后修改域名绑定的 IP 为新的 IP 地址,比较麻烦。如果非要这么弄,可以试试花生壳的服务,支持自有的域名和腾讯还有阿里的域名,也支持花生壳自己卖的域名。而  详情 回复
昨天 17:38
这里选择一下服务商,比如阿里云,填写一下域名,以及阿里云控制台的AccessKey ID和AccessKey Secret(也就是提供给程序使用的账号密码,ddns程序会轮询本机的公网IP,如果有变更,就自动操作域名解析到新的IP上)就  详情 回复
昨天 17:36

0

主题

4

回帖

0

牛值

江湖小虾

感觉会出现一个问题,家宽会定时重新分配前缀,如果和定时发送地址存在时间差,那么就会有一段时间访问不了。感觉可以定时执行检测脚本,在检测到发生变更后才执行发送脚本。

其实稍微舒服一点的还是搞个域名玩ddns。纯数字域名10年60块,很省事。

不过最安全的还是,内网服务别暴露到公网,用tailscale或者其他虚拟局域网软件进行组网,在外面远程回家。

这个我也想过,只不过当前用着觉得挺好,还没碰到过,就懒得弄了。ddns也要绑地址,只是访问方法比较方便,我只有我自己用,就不弄ddns了。安全性这个问题我是用fail2ban弄的,只要密码错误3次直接封ip。详细的有论  详情 回复
昨天 15:08

1

主题

4

回帖

0

牛值

江湖小虾

昨天 15:08 楼主 显示全部楼层
渺沧 发表于 2025-6-5 10:59
感觉会出现一个问题,如果家宽会定时重新分配前缀,如果和定时发送地址存在时间差,那么就会有一段时间访问 ...

这个我也想过,只不过当前用着觉得挺好,还没碰到过,就懒得弄了。ddns也要绑地址,只是访问方法比较方便,我只有我自己用,就不弄ddns了。安全性这个问题我是用fail2ban弄的,只要密码错误3次直接封ip。详细的有论坛大神的帖子可以看看:
外网环境下使用fail2ban保护账号
https://club.fnnas.com/forum.php?mod=viewthread&tid=5104
(出处: 飞牛私有云论坛 fnOS)
其实还有一个隐患就是有些地区运营商管的严的话,检测到家宽提供web服务容易吃警告。我自己是用wg远程回家  详情 回复
昨天 23:31

0

主题

7

回帖

0

牛值

江湖小虾

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=129817&ptid=27780][color=#999999]海底森林 发表于 2025-6-5 10:42[/color][/url][/size] 有域名 但是不会操作 有教程吗[/quote]

Snipaste_2025-06-05_17-21-31.png这里选择一下服务商,比如阿里云,填写一下域名,以及阿里云控制台的AccessKey ID和AccessKey Secret(也就是提供给程序使用的账号密码,ddns程序会轮询本机的公网IP,如果有变更,就自动操作域名解析到新的IP上)就行了。这样即使IP变更,也可以使用相同的域名去访问。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个应该需要在阿里云那里绑定你的域名和本机的公网 ip,仅在这里设置恐怕不行吧。  详情 回复
昨天 17:40

1

主题

4

回帖

0

牛值

江湖小虾

昨天 17:38 楼主 显示全部楼层
海底森林 发表于 2025-6-5 10:42
有域名 但是不会操作  有教程吗

如果要自己去做 DDNS,需要检测本地 IP 地址的变化,然后修改域名绑定的 IP 为新的 IP 地址,比较麻烦。如果非要这么弄,可以试试花生壳的服务,支持自有的域名和腾讯还有阿里的域名,也支持花生壳自己卖的域名。而且首年才19,也不算贵,有啥问题可以直接问他们销售。链接:https://hsk.oray.com/parts-center/domain.html

1

主题

4

回帖

0

牛值

江湖小虾

昨天 17:40 楼主 显示全部楼层
哄哄_otEN2 发表于 2025-6-5 17:36
这里选择一下服务商,比如阿里云,填写一下域名,以及阿里云控制台的AccessKey ID和AccessKey Secret(也 ...

这个应该需要在阿里云那里绑定你的域名和本机的公网 ip,仅在这里设置恐怕不行吧。
IP地址变化的检测是DDNS程序(比如飞牛自带的这个DDNS功能)做的,会定时检测本机IP是否变化了,如果变化了,程序就会通过填写的AccessKey的ID密码,去操作服务商的控制台,把域名解析过去。 如果像我阿里云买的域名  详情 回复
昨天 17:52

0

主题

7

回帖

0

牛值

江湖小虾

sk811229 发表于 2025-6-5 17:40
这个应该需要在阿里云那里绑定你的域名和本机的公网 ip,仅在这里设置恐怕不行吧。 ...

IP地址变化的检测是DDNS程序(比如飞牛自带的这个DDNS功能)做的,会定时检测本机IP是否变化了,如果变化了,程序就会通过填写的AccessKey的ID密码,去操作服务商的控制台,把域名解析过去。
如果像我阿里云买的域名,也是使用的阿里云的DNS服务,那么把AccessKey的ID和Secret(密码)提供一下就行了。
DDNS做的就是检测IP变更动态进行域名解析,设置好之后是不需要你手动操作的

0

主题

4

回帖

0

牛值

江湖小虾

sk811229 发表于 2025-6-5 15:08
这个我也想过,只不过当前用着觉得挺好,还没碰到过,就懒得弄了。ddns也要绑地址,只是访问方法比较方便 ...

其实还有一个隐患就是有些地区运营商管的严的话,检测到家宽提供web服务容易吃警告。我自己是用wg远程回家
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则