ZeroTier¶
最近发现一个十分好用的工具,可以帮我进行内网穿透
Mac¶
sudo launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist
sudo launchctl load -w /Library/LaunchDaemons/com.zerotier.one.plist
Ubuntu¶
curl -s https://install.zerotier.com | sudo bash
zerotier-cli join 你的network ID
# 查看状态
zerotier-cli status
# 查看节点列表
zerotier-cli listpeers
服务¶
# 启动|停止|重启Zerotier
systemctl start|stop|restart zerotier-one.service
Ubuntu22.04安装zerotier,在update时会报错¶
W: http://download.zerotier.com/debian/jammy/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
curl -s http://download.zerotier.com/contact%40zerotier.com.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/zerotier.com.gpg > /dev/null
update时,zerotier就不会报错
OpenWrt¶
# 先安装 zerotier
opkg update && opkg install zerotier
# 运行zerotier
zerotier-cli join ID
# 重启
reboot
到zeroTier管理中心配置Manged Routes添加规则:
路由器lan端ip端 via zerotier分配到ip
之后再在路由器防火墙设置,在【网络】→【防火墙】→【自定义规则】中添加防火墙规则,【重启防火墙】
QNAP¶
直接上传zerotier的安装包安装,然后进行以下操作:
# 使用WinSCP进行连接
# 找到对应目录 share—CACHEDEV1 DATA—.qpkg—Zerotier
# 输入命令运行zerotier
zerotier-cli join ID
或者使用docker安装:
使用bltavares/zerotier镜像,配置文件设置:
1. “Network”下,Network Mode(网络模式)选中“Host”:
2.“Device”项下,选中“Run containers in privileged mode”(使用高权限执行)。
Docker部署¶
docker run -d --restart unless-stopped --name zerotier-one --device /dev/net/tun --net host --cap-add NET_ADMIN --cap-add SYS_ADMIN -v /var/lib/zerotier-one:/var/lib/zerotier-one henrist/zerotier-one
docker exec zerotier-one zerotier-cli status
docker exec zerotier-one zerotier-cli join NETWORK-ID
防火墙规则¶
# 需要注意的是,ztrfyp是一个虚拟网络接口的名称,这些命令的实际效果会取决于您服务器上的网络配置。
# 该命令允许从输入接口ztrfyp进入的所有流量通过防火墙的转发链(FORWARD)。这通常用于允许另一个网络(比如VPN或另一个子网)的流量通过此服务器转发到其他网络
iptables -I FORWARD -i ztrfyp -j ACCEPT
# 该命令允许所有从此服务器转发到输出接口ztrfyp的流量通过防火墙的转发链(FORWARD)。这通常用于允许此服务器上的其他网络(比如本地网络或另一个子网)的流量通过此服务器转发到另一个网络(比如互联网)。
iptables -I FORWARD -o ztrfyp -j ACCEPT
# 该命令将所有从此服务器转发到输出接口ztrfyp的流量的源地址修改为此服务器的IP地址,以便响应的流量能够正确返回到此服务器。这是一种网络地址转换技术(NAT),通常用于允许通过防火墙转发的客户端访问互联网,同时隐藏客户端的真实IP地址。
iptables -t nat -I POSTROUTING -o ztrfyp -j MASQUERADE
# ztrfyp 在ssh中用zerotier-cli listnetworks查询
# UFW 命令
ufw allow in on ztrfyp
ufw allow out on ztrfyp
如何卸载Zerotier¶
sudo dpkg -P zerotier-one
sudo rm -rf /var/lib/zerotier-one/
遇到的问题¶
安装出现
Err:4 http://download.zerotier.com/debian/buster buster InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1657198823E52A61
sudo apt-get update
sudo apt-get install -y apt-transport-https gnupg
#sudo mv -f /tmp/zt-sources-list /etc/apt/sources.list.d/zerotier.list
#sudo chown 0 /etc/apt/sources.list.d/zerotier.list
#sudo chgrp 0 /etc/apt/sources.list.d/zerotier.list
ZeroTier内网主机互ping时出现destination host unreachable的解决方案
部分主机虽然成功连接了ZeroTier并且获得了IP,但是内网中其他主机在ping此IP时,可能会提示Destination host unreachable,可能还伴有端口无法访问等问题
其中Linux主机占多数。这是由于Linux内部回环机制造成的问题, 我们可以通过在nano /etc/sysctl.conf中添加如下配置来解决问题:
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
# net.ipv4.conf.eth1.rp_filter = 0
添加完成后,执行:sysctl -p,一切完成。可以通过其他主机ping本机进行测试。