在Truenas中搭建Zerotier内网穿透

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Truenas中搭建Zerotier内网穿透相关的知识,希望对你有一定的参考价值。

参考技术A 提到内网穿透,我了解的免费或者性价比高的方案有frp、nps、Ngrok、蒲公英、Zerotier。大部分方案都有限流、不稳定、部署难度大等问题。其中Zerotier各方面表现良好,部署难度低,客户端兼容三大主流平台、两大手机系统、常见NAS系统、路由器、Docker(WINDOWS、MAC OS、APPLE iosandroid、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 ,正常邮箱注册就可以。登录上之后是这个界面

使用zerotier让异地设备组局域网_子网

创建网络

点击显眼的"Create A Network" ,默认会自动创建一个网络。牢记“NETWORK ID” 后面需要用到。

使用zerotier让异地设备组局域网_子网_02

使用zerotier让异地设备组局域网_服务器_03

生成默认就够了,如果需要更详细的网络配置,比如换个网段,可以在点进去配置一下。

使用zerotier让异地设备组局域网_html_04

安装客户端

这里以两个windows设备为例,在 https://www.zerotier.com/download 页面下载对应的客户端。然后安装。安装好后系统右下角托盘会出现zerotier的logo 。

加入子网

输入ID

鼠标右键托盘里的zerotier logo,选择“Open contorl panel”打开面板,左边面板显示“Online”表示和Zerotier的服务器连接成功,在中间下面填入第一步中在Zerotine网站上创建的子网“NETWORK ID”加入子网。

使用zerotier让异地设备组局域网_html_05

使用zerotier让异地设备组局域网_html_06

程序会新建一个虚拟网卡

使用zerotier让异地设备组局域网_html_07

使用zerotier让异地设备组局域网_html_08

在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

使用zerotier让异地设备组局域网_子网_09使用zerotier让异地设备组局域网_服务器_10

把所有需要组内网的设备进行如上操作

全部加入之后会显示IP,这个IP就是分配到各个设备上的Zerotier 局域网 IP。能互相ping通的。局域网组建成功了,局域网的玩法也都解锁了,比如远程桌面连接等等

使用zerotier让异地设备组局域网_html_11

使用zerotier让异地设备组局域网_子网_12使用zerotier让异地设备组局域网_服务器_13

使用zerotier让异地设备组局域网_子网_14

使用zerotier让异地设备组局域网_服务器_15

原理

原理就是UDP打洞,组建P2P网络。Zerotier服务器作用是把设备的公网IP通知到各个设备,尝试让各方互相打洞,如果打洞成功,就是连接成功,至于网络质量要取决于运营商。由于国内特殊的网络环境(限制UDP),很容易遇到打洞失败的情况。即使照着教程连接不上也是正常的。习惯就好。下节讲自建Moon,尝试由Moon握手打洞或者走Moon转发全部流量。

以上是关于在Truenas中搭建Zerotier内网穿透的主要内容,如果未能解决你的问题,请参考以下文章

远程炼丹:zerotier内网穿透+vscode配置远程开发+tmux终端复用

求助,FTP使用ngrokc内网穿透如何设置

FRP内网穿透部署

Linux-SSH反向连接(内网穿透,打洞)

frp内网穿透

FRP 内网穿透服务免费使用的详细教程