记录一下组建远程访问内网(内网穿透)的方法,技术选型为:zerotier。

备菜

  1. 创建网络(在zerotier官网上创建一个网络,获取网络id)
  2. 在本地机器(推荐Linux)下载并安装好zerotier客户端(https://www.zerotier.com/download/)

本地设置

1. 设置开机启动

1
2
sudo systemctl start zerotier-one.service
sudo systemctl enable zerotier-one.service

2. 设置加入网络

1
sudo zerotier-cli join 网络id

zerotier官网设置(配置旁路由)

1. 允许加入网络

1
PS: 设置一个与常用网络不一样的子域

设置ipv4

2. 设置内网跳板机

1
Destination填本地内网ip地址,Via填跳板机在zerotier分配的ip(最好设置固定ip)

开启跳板机转发路由

本地设置(跳板机网络)

1. 启用内核的ip转发功能

1
vim /etc/sysctl.conf

如有需要,也可以开启ipv6转发

开启转发

保存后,输入以下命令重载配置:

1
sysctl -p /etc/sysctl.conf

2. 配置路由规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 确认zerotier虚拟网卡和内网网卡的名字
ifconfig

// 设置shell变量
PHY_IFACE=内网网卡名字
ZT_IFACE=zerotier虚拟网卡名字

// 设置路由表
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
sudo iptables-save

// 持久化路由表
sudo mkdir -p /etc/sysconfig/
sudo sh -c "iptables-save > /etc/sysconfig/iptables"

在/etc/rc.local文件的末尾添加一行:

1
/sbin/iptables-restore < /etc/sysconfig/iptables

配置自己电脑的zerotier客户端

zerotier启动的时候默认不会把在zerotier官网设置的静态路由规则应用到本机,因此我们需要手动的启用。
对于有可视化界面的客户端,比如安卓的,就会有一个选项:Route Via ZeroTier。

对于Linux的命令行客户端,则需要这样配置:

1
2
sudo zerotier-cli set 网络id allowGlobal=1
sudo zerotier-cli set 网络id allowDefault=1

然后就可以ping通内网的其他机器了!