Zerotier+Moon+Nginx实现内网穿透搭建网站
由于Zerotier服务器在国外,导致在国内的速度不快,所以官方推荐设置自己的moon服务器做节点加速。moon服务器需要24小时不挂机,并且有固定ip,对硬件要求不高,所以云服务器比较符合做moon服务器
第一步:在云服务器linux上安装Zerotier客户端:
curl -s https://install.zerotier.com/ | sudo bash
默认监听的端口是9993
,这个端口需要对外提供服务,需要在服务器防火墙和云服务提供商的安全组的UDP传输类型进行设置放行。
安装完成后,输入命令检查是否安装成功:
zerotier-cli info
代表已经安装成功。
第二步:进入zerotier官网创建一个虚拟网络:
访问官网:https://my.zerotier.com,注册登录之后,点击Create A Network按钮创建一个虚拟网络
看到记录产生的时候,代表已经创建成功。点击创建成功的NETWORKID,会进入到网络参数配置详情页:
↑ 可以对Name进行修改方便日后识别
↑ 尽量创建一个私有的网络,这样相对安全一些,需要管理员手动通过才能加入到该网络。
↑ 选择一个虚拟网络网段,为了好记,我选择了192.168.192.*这个网段。
第三步:把云服务器linux加入虚拟网络:
输入命令加入网络:
zerotier-cli join [network_ID]
↑ 反馈join ok代表加入成功。
↑ 回到官网网络详情页,页面下方会发现一条记录,通过观察Address发现正是云服务器申请加入。点击Auth通过,即可加入此虚拟网络。
↑ 点击通过后,过几秒钟(不需要刷新页面)会发现,系统为云服务器分配了ip 185,可以在short-name文本框中为这台机器起一个名字方便识别。
回到linux中,输入命令观察是否加入成功:
zerotier-cli listnetworks
↑ 从反馈的描述中得知已加入成功。
输入ifconfig观察ip:
↑ zerotier已为系统生成了虚拟网卡,ip也没问题。
第四步:配置Moon
进入zerotier-one程序目录:
cd /var/lib/zerotier-one
生成moon配置文件:
zerotier-idtool initmoon identity.public >> moon.json
运行后moon.json就生成出来了,
vim moon.json
需要编辑红框位置的配置节点stableEndpoints,指定为当前云服务器的外网ip与监听端口号
↑ 需要注意ip与端口号直接用/分割,而不是:
生成.moon文件:
zerotier-idtool genmoon moon.json
↑ 生成成功
将生成的.moon文件移动到moons.d目录下
mkdir moons.d
mv 000000xxxxxx.moon moons.d
重启zerotier-one服务
systemctl restart zerotier-one
配置开机启动
systemctl enable zerotier-one.service
至此,moon服务器就搭建好了,接下来是在客户端中配置moon节点
在linux和wondows下配置Moon:
假设现在公司本地有一台运行的linux系统,没有公网ip,平时想在家里也能连接操作它:
登录到这台本地linux服务器,安装客户端:
curl -s https://install.zerotier.com | sudo bash
windows客户端则是登录官网下载页https://www.zerotier.com/download/下载安装即可
输入命令查看当前所在网络下的所有机器:
zerotier-cli listpeers
识别到moon的主机之后,输入命令将其由LEAF变为MOON:
zerotier-cli orbit [节点ID] [节点ID] #linux
zerotier-cli.bat orbit [节点ID] [节点ID] #windows
zerotier-cli listmoons #列出加入的Moon节点
zerotier-cli orbit <world ID> <seed> #加入某个Moon节点
zerotier-cli deorbit <world ID> #离开某个Moon节点
windows与linux已经双双设置成功~
ping测试:(ping zerotier为其生成的虚拟ip)
用windows 在本地网络环境下 ping linux
用windows 在异地网络环境下ping linux
PS:经测试,有时候加入网络识别的慢一些,有可能是开启了代理的原因,如果长时间服务器没有识别到,建议检查网络后重试。
使用Nginx反向代理到内网:
我想了想好像不用部署Moon都可以,后续验证了再说吧;其实就是网络使用线上的,服务器使用本地的。等我验证清楚再说吧。
线上Nginx反向代理:
server {
listen 80;#内网穿透
server_name www.域名.com;
location / {
proxy_pass http://192.168.180.120:80;#内网穿透局域网服务的IP地址和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
内部服务器无需多说,自己搭建即可。
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
热门文章
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
-
Mac 安装mysql并且配置密码 2024-11-20
-
阿里云不同账号(跨账号)ECS服务器同地域如何实现免费内网互通? 2024-11-12
-
electron安装使用better-sqlite3并解决NODE_MODULE_VERSION xxx. This version of Node.js requires 2024-11-06
-
Zerotier+Moon+Nginx实现内网穿透搭建网站 2024-08-23
mysql如何给运营人员添加只有查询权限的账号