安装环境

安装gcc和git

yum install gcc -y
yum install git -y

安装go语言环境

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

检查环境安装

git --version //( >= 1.7.3 )
go version  // ( >=1.8.3 )

git版本要大于等于1.7.3

在服务器上搭建Ngrok服务

下载ngrok源码

git clone https://github.com/inconshreveable/ngrok.git

生成证书

进入目录

cd ngrok

moonce.com这里修改为自己的域名

export NGROK_DOMAIN="moonce.com"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

将新生成的证书替换,执行下面命令后 “y” 回车 一行一行执行代码

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

编译生成ngrokd(服务端)

make release-server

编译生成ngrok(客户端)

32位linux客户端

GOOS=linux GOARCH=386 make release-client

64位linux客户端

GOOS=linux GOARCH=amd64 make release-client

32位windows客户端

GOOS=windows GOARCH=386 make release-client

64位windows客户端

GOOS=windows GOARCH=amd64 make release-client

32位mac平台客户端

GOOS=darwin GOARCH=386 make release-client

64位mac平台客户端

GOOS=darwin GOARCH=amd64 make release-client

ARM平台linux客户端

GOOS=linux GOARCH=arm make release-client

开启远程服务

cd ~/ngrok
sudo ./bin/ngrokd -domain="moonce.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083"

显示此信息为启动成功

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry][tun] No affinity cache specified
[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80
[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083
[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

可新建start.sh放在ngrok目录,欲启动ngrok,执行该脚本即可

# start.sh

cd /root/ngrok
sudo nohup ./bin/ngrokd -domain="moonce.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

给start.sh添加权限

chmod 755 ~/ngrok/start.sh

开启客户机服务

下载与配置

以windows系统为例子,其他系统大同小异

将~/ngrok/bin/windows_amd64/里的文件下载到本地Windows下,博主放在D:\ngrok下

在D:\ngrok中新建文件,改名为 ngrok.cfg,内容如下:

server_addr: "moonce.com:8083"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "80"
      
  https:
    subdomain: "www"
    proto:
      https: "443"
 
  ssh:
    remote_port: 2222
    proto:
      tcp: "22"

  mstsc:
        remote_port: 52222      
        proto:
         tcp: "192.168.0.107:3389"

以上 8083 80 443 与 远程开启的端口一致

启动

在Windows中D:\ngrok新建文件 改名 start.bat

ngrok -config=ngrok.cfg start http https ssh mstsc

直接双击运行

开启远程服务(优化晋级)

创建虚拟网卡,使用nginx代理

查看网卡信息

[root@VM_0_12_centos ~]# ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:3b:39:3b:40  txqueuelen 0  (Ethernet)
        RX packets 1181  bytes 758592 (740.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1151  bytes 147675 (144.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.0.12  netmask 255.255.240.0  broadcast 172.30.15.255
        ether 52:54:00:fd:3d:cc  txqueuelen 1000  (Ethernet)
        RX packets 176503303  bytes 19029032846 (17.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 185188494  bytes 28348308239 (26.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.0.13  netmask 255.255.255.0  broadcast 172.30.0.255
        ether 52:54:00:fd:3d:cc  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 3657343  bytes 1464990072 (1.3 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3657343  bytes 1464990072 (1.3 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

根据已有网卡信息创建新的虚拟网卡

[root@VM_0_12_centos ~]# ifconfig eth0:0 172.30.0.13/24 up
[root@VM_0_12_centos ~]# ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:3b:39:3b:40  txqueuelen 0  (Ethernet)
        RX packets 1181  bytes 758592 (740.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1151  bytes 147675 (144.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.0.12  netmask 255.255.240.0  broadcast 172.30.15.255
        ether 52:54:00:fd:3d:cc  txqueuelen 1000  (Ethernet)
        RX packets 176503303  bytes 19029032846 (17.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 185188494  bytes 28348308239 (26.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.0.13  netmask 255.255.255.0  broadcast 172.30.0.255
        ether 52:54:00:fd:3d:cc  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 3657343  bytes 1464990072 (1.3 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3657343  bytes 1464990072 (1.3 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

<ifconfig命令>用法详情参照

生成服务

vi /etc/systemd/system/ngrok.service

在ngrok.service填入以下内容

Description=ngrok
After=network.target
 
[Service]
ExecStart=/opt/soft/ngrok/bin/ngrokd -domain=moonce.com  -httpAddr=172.30.0.13:80 -httpsAddr=172.30.0.13:443 -tunnelAddr=:7000
 
[Install]
WantedBy=multi-user.target

重载服务

systemctl daemon-reload

启动服务

systemctl start ngrok.service

停止服务

systemctl stop ngrok.service

开机自启动

虚拟网卡重启后会失效,所以我们把这些命令加入到开机自启动命令中

编辑/etc/rc.d/rc.local文件

vi /etc/rc.d/rc.local

将以下代码放入rc.local文件尾部

ifconfig eth0:0 172.30.0.13/24 up
systemctl start ngrok.service
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐