由于各运营商开始限速,ipv6也没那么好用了,而且有时v4是必须的。 发现了 natter 这么好的项目, 能够直接使用公网v4和随机端口的组合。
参考 https://github.com/MikeWang000000/Natter/blob/master/docs/script.md 上的脚本进行简单修改,主要实现端口通知,ip变更则通过ddns实现,不同的实现为了安全性考虑, 避免同时出现域名和端口。不考虑ip4p和srv是因为支持的客户端太少了。
通过 https://dynv6.com/docs/apis 的ddns更新ip,再利用shell email邮件通知端口,由于通过了手机邮箱,所以还能及时通过短信收到端口变化提示,需要时仅需修改客户端应用端口,而域名ip自动解析。最小化修改使用。
#!/bin/sh
# Natter notification script arguments
# https://github.com/MikeWang000000/Natter/blob/master/docs/script.md
# protocol="$1"; private_ip="$2"; private_port="$3"; public_ip="$4"; public_port="$5"
DOMAIN='xx.dynv6.com'
TOKEN='xxxxxxxxxxx'
while true; do
#ddns通过dynv6的api实现
curl \
"http://ipv4.dynv6.com/api/update?hostname=$DOMAIN&ipv4=auto&token=$TOKEN" \
> /dev/null 2> /dev/null
#邮件通知端口,安装sendemail实现
sendemail -f "发件人@qq.cn" \
-t "收件@139.com" \
-s "smtp.qq.cn:587" \
-u "natter $5" \
-m "private: $2:$3 public: $5" \
-xu "发件人@qq.cn" \
-xp "app密码code" \
-o tls=no
if [ $? -eq 0 ]; then
break
fi
done
运行测试一段时间看看多久会自动变化ip端口。
nohup natter -b 8080 -e dyn.sh > log.natter 2>&1 &