ipv6实现半内网穿透

Posted by XiLock on October 2, 2020

前言

  1. 本文不是真正的内网穿透,做内网穿透建议用FRP(不建议ngrok,不稳定)或者氪金蒲公英;
  2. ngrok参见:如何远程登录家里的Ubuntu电脑(命令行模式)?;
  3. 本文提到的方法不需要公网ipv4地址,但是需要有公网的ipv6地址(公网ipv6地址24开头,内网ipv6地址f开头,庆幸xilock家的墙虽然没有ipv4地址但有ipv6地址)。

注册ipv6域名

  1. https://dynv6.com/ 域名用于方便记录,否则关机重启后若公网ipv6地址变化则需手动修改,用ipv6域名的好处在于通过脚本可更新机子24打头的的ipv6地址到网站上并与域名挂钩,通过域名就能实现通讯。

注册登陆后,Create new Zone后得到Domainname和Benutzername(token),后面写到更新用的脚本里。

更新ipv6地址用脚本

/usr/bin/ddns.dynv6.sh

#!/bin/sh
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
ipv6=$(ifconfig wlp3s0 | grep inet6 | awk '{print $2}' | cut -d'/' -f1)
wget --no-check-certificate -q -O dynv6.log 'http://dynv6.com/api/update?hostname=<你的域名>&token=<你的令牌>&ipv6='$ipv6

xilock版ddns.dynv6.sh(增加了对公网ipv6地址的筛选,避免有的网口接上后同时有f开头的内网ipv6地址和24开头的外网ipv6地址而出问题)

#!/bin/sh
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
ipv6=$(ifconfig eno2 | grep 'inet6 24' | awk '{print $2}' | cut -d'/' -f1)
wget --no-check-certificate -q -O dynv6.log 'http://dynv6.com/api/update?hostname=<你的域名>&token=<你的令牌>&ipv6='$ipv6

crontab -e添加*/10 * * * * /usr/bin/ddns.dynv6.sh后用crontab -e确认是否添加成功,使得每10min更新一次。

在/etc/rc.local加入一行:/usr/bin/ddns.dynv6.sh,这样每次电脑开机,都能把新的IPv6更新到dynv6。

使用

  1. 两个都是24开头的公网ipv6地址,可以ssh通讯了。
  2. win/linux系统的ipv6地址如何ping参见《IPv6地址使用ping、telnet命令汇总》。

问题

  1. 连接光猫走ipv6时,需关闭光猫的拦截,否则能Ping到但ssh不上。

参考资料:

  1. dynv6 IPv6更新
  2. IPv6地址使用ping、telnet命令汇总


手机版“神探玺洛克”请扫码