Termux解析公网ipv6——从全世界各地连接你的Termux

在这里插入图片描述

前言

家用的那台服务器,一直使用的是ipv6进行访问,动态解析使用的是dynv6提供的免费ddsn服务,最近退下来一部红米note7 6+64手机,性能放在现在也还是OK的,就拿来折腾一下Termux,于是想把dynv6服务也搬到Termux上来,但使用官方推荐的小脚本死活跑不起来,毛病一大堆,于是还是老老实实自己写个API调用脚本和定时任务吧,于是有了这篇文章。

下面从零开始教你一步步实现Termux的公网访问。

Termux的安装配置就不再说了,实在不知道的可以去翻翻专栏前几篇文章。

一些准备工作

首先确保你的宽带拨号路由器支持ipv6,确认方法:

安装一下依赖包:

pkg install iproute2

获取Termux的IP6地址:

ip -6 addr list scope global |grep "inet6" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1

在这里插入图片描述
ping一下看看能不能通:

ping6 $(ip -6 addr list scope global |grep "inet6" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

在这里插入图片描述
如果这两步都能成功,那么恭喜你的宽带和路由都完美至此ipv6,可以接着往下看了,如果不支持的话,(就不需要往下看了),可以考虑换个宽带或者路由器再来。

这里需要注意,二级路由是无法分配公网ipv6的,如果你是光猫拨号,然后lan-wan连接其他路由,那么这个路由器就无法为下属设备提供公网ipv6,建议光猫改为桥接或者lan-lan连接其他路由,或者使用光猫本身的WiFi功能

下面进入正题。

1. 登录dynv6获取域名

登录dynv6官网:https://dynv6.com/ ,点击Sign up 使用邮箱注册账号:
在这里插入图片描述
之后你的注册邮箱会收到一条验证邮件,点开它:
在这里插入图片描述
使用的是谷歌的人机验证服务,确保你能访问谷歌服务,如果你没有出现这个按钮,就是无法访问谷歌,网络问题自行解决:
在这里插入图片描述
通过验证后登录账号,点击My Zones免费申请一个域名:
在这里插入图片描述
按上图填写完成后点击Create Zene,申请成功,会自动跳转以下界面,页面拉到最下面,记下这两样东西:
在这里插入图片描述

2.在Tremux上配置域名解析

先安装依赖包:

pkg install curl -y

curl用来调用API向dnyv6传递ipv6地址。

① 手动向dnyv6传递IP地址

 curl --silent 'http://dynv6.com/api/update?hostname=域名&token=令牌&ipv6='$(ip -6 addr list scope global |grep "inet6" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

其中域名和令牌是刚刚第一步最后让你记下的。如果一切正常的话应该能看见addresses updated的执行结果了:在这里插入图片描述
如果没有结果输出,检查一下命令有没有复制错,令牌和域名有没有填写正确。

然后再次登录:https://dynv6.com/ ,依次点击My Zones -> 你的域名 -> Records,就能在下方看见刚刚传递的ipv6地址了。
在这里插入图片描述
此时ipv6的域名解析已经完成,试试用域名访问你的Termux服务试试:
在这里插入图片描述

噢噢噢!完美!

关于Nginx配置ipv6访问,教程在这:《Termux开发环境搭建——Nginx》

②设置开机自启及定时任务

安装基础组件:

pkg install termux-services

关于termux-services的使用方法,我在这里讲过了:Termux设置——服务自启动,有兴趣的可以自己去看看,这里就直接使用它了。

首先配置自动解析脚本:

mkdir -p $PREFIX/var/service/dynv6_ato
cd $PREFIX/var/service/dynv6_ato
vim $PREFIX/var/service/dynv6_ato/dynv6.sh

添加以下内容:

#!/data/data/com.termux/files/usr/bin/sh

time=$3
token=$2
name=$1

while true
do
	curl --silent  'https://dynv6.com/api/update?hostname='$name'&token='$token'&ipv6='$(ip -6 addr list scope global |grep "inet6" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)
	echo -n "!\t"
	ip -6 addr list scope global |grep "inet6" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1
	sleep $time
done

然后配置自启动脚本run:

vim $PREFIX/var/service/dynv6_ato/run

添加内容:

#!/data/data/com.termux/files/usr/bin/sh
exec 2>&1
exec $PREFIX/var/service/dynv6_ato/dynv6.sh 域名 令牌 同步间隔时间 2>&1

注意替换里面的域名 令牌同步间隔时间三个参数,间隔时间单位为秒,建议60~300

最后配置日志脚本:

mkdir -p $PREFIX/var/service/dynv6_ato/log
vim $PREFIX/var/service/dynv6_ato/log/run

添加以下内容:

#!/data/data/com.termux/files/usr/bin/sh
svlogger="/data/data/com.termux/files/usr/share/termux-services/svlogger"
exec "${svlogger}" "$@"

编写完三个脚本以后记得要给他们赋予其执行权限:

chmod +x $PREFIX/var/service/dynv6_ato/dynv6.sh
chmod +x $PREFIX/var/service/dynv6_ato/run
chmod +x $PREFIX/var/service/dynv6_ato/log/run

使自启动服务生效:

sv-enable dynv6_ato

重启Termux,过一段时间查看日志文件

cat $PREFIX/var/log/sv/dynv6_ato/current

在这里插入图片描述

在使用中发现,更新频率太高,时间久了日志文件就会变得十分臃肿,可以考虑添加一个清理日志的定时任务,这里我就不在说了。


 

快速导航
         👈 Termux开发环境搭建 Termux外置硬盘挂载——rclone & WebDav 挂载网盘 👉        
  • 10
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值