TailScale 实现远端访问整段局域网(ZeroTier另一选择)与ubuntu等linux系统的端口转发操作

作者:Director of Chatgpt

背景:相信很多朋友和我一样有内网穿透的需求,说人话就是想要在外网上拥有一个ipv4的地址,这样可以实现远程访问,数据传输的作用,但是苦于中国的网络环境,公网ip的申请难如登天。所以在这种情况下内网的穿透工具就应需要出现了,本人一直使用zerotier对包括两台vps在内的电脑进行组网。因为zerotier想要达到直连的模式会很艰难,了解zerotier原理的人都知道其实是一种加密的vpn,是一个分散的网络虚拟化平台。一旦zerotier达到直连的状态,那么访问的速度就会很快,基本上啊可以跑满500m的带宽。但是由于建立连接的不确定和速度慢,导致有在外(不断变化的网络环境)下访问家中的设备需求的人很难受。应对这样情况的办法就是将一台vps当作数据中转站,也就是引路者。因为本身具有公网ip的原因,zerotier在vps上双向建立来连接的速度会很快,这样只要简单的在上面进行一下端口转发请求的 处理就行了。在window上采用netsh interface portproxy add v4tov4 listenaddress=* listenport=81 connectaddress=10.241.93.94 connectport=3389等命令,在linux上有两种方法:

A.iptables方法

iptables -I INPUT -p tcp --dport 9001 -j ACCEPT

m指定扩展的类型,下面是扩展多个目的port

iptables -I INPUT -p tcp -m multiport --dport 9001,9002,9003 -j ACCEPT

iptables -I INPUT -p tcp -m multiport --dport 9001,9002,9003 -m state --state NEW -j ACCEPT

重启后,配置规则失效,需要再做下面一步

iptables-save

持久化规则

service iptables-persistent save

B.ufw方法

sudo ufw status

sudo ufw allow 9001

sudo ufw allow 9001/tcp

sudo ufw delete allow 9001

查看防火墙规则是否已经保存:vi /etc/sysconfig/iptables

很重要的一点:

启用 Linux 上的 IP 转发(IP Forwarding),这也是本人为什么一直转发不成功的原因之一。使用如下命令进行打开:

TailScale_Linux_141415.png

此外两种操作系统上都要对相应的端口进行放行,不同的linux还需要修改配置文件等操作。

还有一个大坑,如果是使用国内的腾讯云与阿里云之类的网站在window和linux本身的端口转发和防火墙放开后,要注意在外部还有一个要命的腾讯提供的sb防火墙,简直sb到极点了,还有注意,外部默认防火墙的配置侦听那一行写的是*也就是全部,你的端口转发命令也要这样写。

不然转发不会生效。

既然zerotier这么好为什么现在我开始推荐tailsclae?

zerotier在前几个月的表现确实没让我失望,但是现在已经彻底寄了,如果有人骂我,还没寄我用的好好的,你放心在两个月内必会出问题。就在这两个星期我多次发现zerotier出现问题,ping都ping不到。老是会寄。

问过某个比较相对有经验但是却很“自信”的人,得到的回答是没问题,无比丝滑。。。。。。。。。我觉得要是真的这样我也不会亲自打个电话跟你讲。

上网了解了一下,包括一些推友和电报友的反馈,以及基于我对zerotier的理解,我十分确定其最近频繁不好使的原因是因为ZeroTier的集中式组件是一组12个根服务器,这些服务器分布在全球,提供了稳定的服务,有助于快速建立点对点连接,并保证一切正常运转。(听不懂的话忽略,可以学一下计算机网络),寄了的原因是因为其这12组服务器被干掉了,不过应该没有全部失效。导致一些设备上还是可以使用。

好了,以上解释的已经很清楚了,那么我们怎么样继续实现内网穿透,tailsclae就出现了。

tailsclae的作用类似于zerotier,其原理在我看来甚至都是一样的。但是多少还是有些不同的:

ZeroTier的点对点连接可靠且快速,是因为采用了低延迟的直接通信。与Tailscale一样,ZeroTier负责NAT遍历。ZeroTier的根服务器帮助各个节点建立对等连接。如果NAT遍历失败,ZeroTier的根服务器将继续中继通信,这将导致增加延迟。

WireGuard通常需要任意连接的一端具有静态IP地址。但是,Tailscale在WireGuard顶部添加了一层按需NAT遍历,以便设备可以直接通信,甚至通过防火墙进行通信,而无需手动配置。如果无法进行NAT遍历或UDP被阻止,Tailscale会自动通过TCP(HTTPS) 中继加密流量,以便设备始终可以进行通信。它根据网络条件自动在这些不同的传输机制之间切换WireGuard。

好了,简单来说,tailscale的会拥有更加快速的速度,可以让任何一台电脑一加入就很快的直连(不需要自己vps来进行一个引路人的作用,不过其实还是通过引路人(sattic ip)来解决快速直连),并且目前来看其稳定性远强于zerotail

本人通过大概6天左右的时间对其两种进行了测速,发现tailsclae完胜。并且速度很快,不过注意一下信息的安全,理论上zerotier的安全性强于tailscale,具体tailscale的使用方法如下:

window:powershell:choco install tailscale -y

linux:

添加 Tailscale 的金钥和软件仓库地址
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list

安装Tailscale
sudo apt update
sudo apt install tailscale

启用Tailscale 及透过网址验证登入到Tailscale 网络
sudo tailscale up

剩下的操作看着点就行。