做本地开发想要测试程序或项目(微信开发、网站搭建、Minecraft服务器、各种外网端口连接项目),如果重新找一台外网服务器,上传、处理、运行环境,并且允许80、3306或者其他端口, 是一件非常麻烦的事情。
这时就需要用到内网映射的工具,首先想到的应该是国内的贝锐旗下产品(花生壳、花生棒),但是花生壳提供的服务非常有限,如果涉及网站搭建,域名、流量等等都是计费的,价格不菲,那么,何不使用自己的域名以及一个价格合适的VPS,搭建一个自己的内网端口转发服务端呢?
在介绍XTunnel之前,先简述一下,Github上开源的内网映射的项目,还有frp、ngrok,关于这三者的比较,日后另述。
XTunnel 是 国人 d1sm 在 Github 上的一个项目,不过目前已经商用,商用项目为 网络通,所以删除了 Github 上的代码,教程所用到的是网络上fork的其他分支,不保证为原版,而今天主要是记录一下XTunnel Linux服务端+Windows客户端的搭建教程,以及利用PC电脑+VPS+域名映射本地网站的场景记录。
XTunnel包含服务端与客户端:
服务端支持:Linux(Centos,Ubuntu,Debian)、Windows
客户端GUI:C语言(Windows)、Java(OS X,Linux)
(点击对应环境或语言下载所需文件,文件暂时使用 soft.im 提供的镜像)
准备的工具:一台能连接外网的Windows(运行客户端),一台开放外网端口的Linux服务器(运行服务端)、一个或多个可操控DNS记录的域名(网站端口需要以域名为CNAME记录供客户端使用),以及上面对应的客户端和服务端文件。
一、服务端搭建:(本次 Centos 7.2)
| rm -f install_xt.sh wget http://soft.im/XTunnel/install_xt.sh chmod +x install_xt.sh ./install_xt.sh 2>&1 | tee install.log |
依次运行以上命令,过程无交互操作,出现以下提示,即表示安装成功
| XTunnel is running,log file /xtunnel/server.log |
Ubuntu、Debian若安装错误,需要切换到 Dash
| sudo dpkg-reconfigure dash //选择no |
二、服务端配置:
1.如果需要用作网站端口,你需要绑定一个域名,供客户端使用的CNAME,以下命令中“域名”替换为你的域名(建议使用二级域名)
| mkdir -p /xtunnel/cnf/ ; echo 域名 > /xtunnel/cnf/domain_name ; sh /xtunnel/restart.sh |
2.在你的域名控制面板中绑定A记录到运行服务端的服务器IP
3.用于客户端连接服务端的端口号默认为TCP 180端口,若需要设置其他端口号,可运行以下命令修改。
| mkdir -p /xtunnel/cnf/ ; echo 端口号 > /xtunnel/cnf/listen_port ; sh /xtunnel/restart.sh |
4用于网站映射的端口号默认为80,若需要设置其他端口号,可运行以下命令修改。
| mkdir -p /xtunnel/cnf/ ; echo 端口号 > /xtunnel/cnf/web_port ; sh /xtunnel/restart.sh |
5.用于客户端连接服务端的密码默认为空,若需要添加密码,可运行以下命令添加,
| mkdir -p /xtunnel/cnf/ ; echo 密码 >> /xtunnel/cnf/password ; sh /xtunnel/restart.sh |
XTunnel支持多密码,输入不同密码,相当于不同的客户端用户,绑定列表也是相对独立的。
三、客户端配置(Windows为例,需要能连接外网)
1.下载XTunnel客户端并安装
2.以管理员身份打开,输入连接服务端的IP、端口、密码
若登陆成功GUI会有提示
3.开始添加映射,要注意的是GUI中自定义域名不支持绑定多个自定义域名,
依次填写好内网IP/端口,CNAMEA域名,自定义域名等,点击确认添加即可。
4.最后就使用服务端提供的三级域名,来测试一下是否连通吧!
5.如果设置了自定义域名,需要将提供的三级域名作为CNAME记录供自定义域名解析。
四、关于XTunnel的其他操作:(修改配置后均需重启服务)
1.列出密码:
| cat /xtunnel/cnf/password |
2.修改密码:
3.取消密码:
| rm -rf /xtunnelocks/cnf/password |
4.重启服务:
5.设置开机启动:
| chmod +x /etc/rc.local vi /etc/rc.local |
加入
6.卸载
| sh /xtunnel/stop.sh ; rm -rf /xtunnel |
7.启动
8.停止
9.显示日志
| tail -f /xtunnel/server.log |