Easytier异地组网与Nginx反向代理
一、背景及需求
网络结构如图:
pc1处于特定专网,用于访问专网中的某Web服务器(http://59.218.*.*:8080/),专网可以直接访问互联网。现需要通过任意一台pc2,通过互联网,与pc1异地组网,访问专网中的特定Web服务。
二、Easytier异地组网
(一)、简介
异地组网的软件很多,比如花生壳、向日葵、星空组网、nat123、Zerotier等,但或者需要充值会员vip、或者限速限流、或者属于国外软件的等等,很不方便。
Easytier属于免费开源国产软件,不限速不限流,文档完整,去中心跨平台,可以命令行CLI、图形界面GUI两种方式运行,使用方便。
Easytier官网:https://easytier.cn/
(二)、pc1下载安装Easytier
1、下载windows命令行zip压缩包,解压后即可直接使用,比如C:\easytier-windows-x86_64-v2.3.2。
2、安装Easytier为Windows服务
管理员运行cmd命令行,转到解压目录,比如C:\easytier-windows-x86_64-v2.3.2。
使用sc命令将easytier安装为windows服务。
方法一:使用sc直接为windows服务,服务名称“Easytier”可以随意指定,“网络名称”和“网络密钥”请修改称自己的,其他节点电脑要使用相同的“网络名称”和“网络密钥”。
sc create Easytier start=auto binPath="%cd%\easytier-core.exe -d -n 10.50.101.0/24 --relay-network-whitelist --network-name 网络名称 --network-secret 网络密钥 -p tcp://public.easytier.cn:11010"
安装成功后,开启Easytier服务。
net start Easytier
或者在计算机管理的服务中开启。
方法二:使用yaml配置文件启动easytier-core.exe
sc create Easytier start=auto binPath="%cd%\easytier-core.exe --relay-network-whitelist -c config.yaml"
使用yaml配置文件,可以无需反复卸载、安装Easytier服务,很方便修改Easytier-core.exe启动参数,yaml配置文件的使用和生成,请参阅官网文档:配置文件 | EasyTier - 简单、安全、去中心化的异地组网方案
3、easytier-core.exe命令参数如下:
详细参阅官网文档:https://easytier.cn/guide/network/quick-networking.html
4、常用命令
查看虚拟网中的节点信息:easytier-cli peer
查看虚拟网路由信息:easytier-cli route
查看本节点信息:easytier-cli node
(三)pc2上下载运行Easytier
为了使用方便,pc2上可以下载使用Easytier图形界面GUI,过程略。“设置”可以切换中英文。
输入pc1安装Easytier服务时的“网络名称”和“网络密码”,其他默认,然后“运行网络”即可。
节点信息可以显示加入虚拟网络中的计算机。
至此,顺利完成异地组网,pc2可以访问到pc1,ping 10.126.126.1连同。
注意:pc1上Easytier-core.exe启动的-n参数,完成子网代理,pc2可以直接访问pc1所在的10.50.101.0/24局域网段。
三、Nginx反向代理
利用Easytier很方便实现了异地组网,pc2顺利访问pc1,而且可以访问到pc1所在的局域网,但是还是不能访问到专网中Web服务器(http://59.218.*.*),需要进一步设置。
(一)方法一:使用Easytier的--enable-exit-node与--exit-nodes参数,实现节点数据转发,详细参阅官网文档:完整配置选项 | EasyTier - 简单、安全、去中心化的异地组网方案
pc1启动Easytier时,使用参数“--enable-exit-node true”,运行pc1节点成为出口节点。
pc2启动时,使用参数“--exit-nodes 10.126.126.1”,即客户端pc2使用pc1作为转发流量的出口节点
详细参阅:EasyTier项目实战:构建基于加密协议的分布式网络隧道 - GitCode博客
可以实现pc2访问网络,经过pc1出口节点转发,访问专网才能访问的Web服务器。
实测网速比较慢,暂不使用此方法,感兴趣的可以进一步尝试。
(二)方法二:使用Nginx反向代理
在pc1上安装Nginx服务,设置反向代理,将pc1作为Web服务器。
pc2访问pc1Web 服务器,利用Nginx反向代理,间接访问专网Web服务器。
方便起见使用phpstudy软件,仅启动Nginx服务,关闭默认80端口。
按照下图进行修改:
然后重启Nginx服务,pc2访问pc1的Web服务,成功访问到专网Web服务器。
注意:如果pc2无法ping通虚拟地址10.126.126.1,或者无法访问pc1的Web服务,请设置pc1的防火墙,允许Easytier-core.exe、Nginx.exe程序。
四、结束语
1、搭建自己共享节点
Easytier是非常方便的异地组网工具,还可以在自己的服务器上,不带任何参数启动 EasyTier,该节点就可作为公共服务器,搭建成自己的节点服务器。
2、关闭转发
另外,默认情况下, EasyTier 的每个节点都允许为其他虚拟网提供转发服务,即使该节点已经指定了 网络名 (--network-name
) 和 网络密钥 (--network-secret
)、并已加入一个虚拟网。
若需改变此行为,可通过 --relay-network-whitelist
参数限定可被转发的网络名白名单(空格分割的通配符列表,如 "ab* abc"
)。当该参数的列表为空时,就不会为所有其他网络提供转发服务。
3、私有模式
如果你希望 EasyTier 仅在你的虚拟网络中提供服务,而不希望其他虚拟网的节点连接到你的节点,可以使用 --private-mode true
参数启动 EasyTier。
更多使用技巧,请参阅官方文档:https://easytier.cn/guide/introduction.html
再次致谢Easytier!!!