在Truenas中搭建Zerotier内网穿透
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Truenas中搭建Zerotier内网穿透相关的知识,希望对你有一定的参考价值。
参考技术A 提到内网穿透,我了解的免费或者性价比高的方案有frp、nps、Ngrok、蒲公英、Zerotier。大部分方案都有限流、不稳定、部署难度大等问题。其中Zerotier各方面表现良好,部署难度低,客户端兼容三大主流平台、两大手机系统、常见NAS系统、路由器、Docker(WINDOWS、MAC OS、APPLE ios、android、LINUX (DEB/RPM)、FREE BSD、Synology、QNAP、WD MyCloud、 Community OpenWRT Port 、 DOCKER ),个人认为是覆盖日常家用的全场景。而且在国内使用的场景通过搭建Zreotier moon,可以大幅度降低延迟。但是用Turenas或者Freenas用户应该会有这样的烦恼,版本11.2-RELEASE之后,Zerotier在系统自带命令行、Jail环境下都部署失败,或者出现难以解决的BUG。
翻阅大量资料都没有Truenas或Freenas系统成功解决问题的方案。机缘巧合下看到司波图的视频。尝试通过Truenas安装docker环境,然后docker部署Zerotier实现内网穿透,自建虚拟局域网。
最后发现该方案实现难度低、系统运行稳定。通过Zerotier,将虚拟局域网内24H运行的机器作为网关,顺利使用(手机电脑平板)外网连接家里局域网上任意主机(路由器、NAS、PC)。
这里引用知乎 Lulus 的教程
https://zhuanlan.zhihu.com/p/83849371
https://my.zerotier.com/
(1)Advanced中添加局域网网段。待Turenas或其它主机安装完Zerotier客户端后,添加对应Zeroyier分配的具体的主机ip(本地局域网网段 via Zerotier分配主机ip)
(2)Zerotier分配主机ip需要打开Allow Ethernet Bridging
Truenas里面安装CentOS 7 docker环境。
这里引用B站司波图的教程。一步步安装完CentOS 7及Portainer
https://www.bilibili.com/video/BV1JN411R7Gs
通过FinalShell,登录到CentOS7。安装zerotier-one-docker dockers应用
这里用Github里 henrist / zerotier-one-docker 提供的命令行
https://github.com/henrist/zerotier-one-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
docker exec zerotier-one zerotier-cli listnetworks
写入内核
vi /etc/sysctl.conf
添加 net.ipv4.ip_forward = 1
sysctl -p
CentOS 7防火墙放通转发
iptables -I FORWARD -i 网卡名 -j ACCEPT
iptables -I FORWARD -o 网卡名 -j ACCEPT
iptables -t nat -I POSTROUTING -o 网卡名 -j MASQUERADE
#网卡名可以在CentOS7中用 docker exec zerotier-one zerotier-cli listnetworks 或者 ifconfig 查询zt开头的网卡名
iptables -I FORWARD -j ACCEPT
iptables -A FORWARD -d 本地局域网网段 -j ACCEPT
iptables -t nat -A POSTROUTING -s 本地局域网网段 -j MASQUERADE
iptables -t nat -A POSTROUTING -d 本地局域网网段 -j MASQUERADE
#添加本地局域网网段(192.168.1.0/24)
iptables -A FORWARD -d ZeroTier分配网段 -j ACCEPT
#添加 ZeroTier分配网段到iptables(10.147.17.0/24)
iptables-save
#保存iptables配置到文件,否则重启规则会丢失
待续
参考链接:
https://zhuanlan.zhihu.com/p/83849371
https://www.bilibili.com/video/BV1JN411R7Gs
https://github.com/henrist/zerotier-one-docker
使用zerotier让异地设备组局域网
现在因为疫情流行居家办公,经常有要和公司的异地网络或者电脑交互的情况。frp的内网穿透只能转发端口,而且配置也有些麻烦。如果有和公司电脑组建内网需求,zerotier就派上用场了。 |
注册zerotier账户
打开https://my.zerotier.com/ ,点击 Register ,正常邮箱注册就可以。登录上之后是这个界面
创建网络
点击显眼的"Create A Network" ,默认会自动创建一个网络。牢记“NETWORK ID” 后面需要用到。
生成默认就够了,如果需要更详细的网络配置,比如换个网段,可以在点进去配置一下。
安装客户端
这里以两个windows设备为例,在 https://www.zerotier.com/download 页面下载对应的客户端。然后安装。安装好后系统右下角托盘会出现zerotier的logo 。
加入子网
输入ID
鼠标右键托盘里的zerotier logo,选择“Open contorl panel”打开面板,左边面板显示“Online”表示和Zerotier的服务器连接成功,在中间下面填入第一步中在Zerotine网站上创建的子网“NETWORK ID”加入子网。
程序会新建一个虚拟网卡
在zerotier网站上同意设备加入
www.donews.com/news/detail/4/2954834.html
www.51cto.com/it/news/2019/1230/17971.html
news.163.com/17/1212/09/D5EQJ2A400014AEE.html
把所有需要组内网的设备进行如上操作
全部加入之后会显示IP,这个IP就是分配到各个设备上的Zerotier 局域网 IP。能互相ping通的。局域网组建成功了,局域网的玩法也都解锁了,比如远程桌面连接等等
原理
原理就是UDP打洞,组建P2P网络。Zerotier服务器作用是把设备的公网IP通知到各个设备,尝试让各方互相打洞,如果打洞成功,就是连接成功,至于网络质量要取决于运营商。由于国内特殊的网络环境(限制UDP),很容易遇到打洞失败的情况。即使照着教程连接不上也是正常的。习惯就好。下节讲自建Moon,尝试由Moon握手打洞或者走Moon转发全部流量。
以上是关于在Truenas中搭建Zerotier内网穿透的主要内容,如果未能解决你的问题,请参考以下文章