美文网首页
基于Ngrok搭建内网穿透服务器

基于Ngrok搭建内网穿透服务器

作者: 我叫钱多多_ | 来源:发表于2018-09-12 16:47 被阅读0次

    内网穿透ngrok

    @[TeachOfNgrok]

    步骤:

    1.安装Go语言环境(解压,设置环境变量在此处省略)

    wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz

    2.安装Git并且拉取源码包

    mkdir ngork 建立并进入文件夹ngork

    3.生成证书

    
        #为base域名dagm.com生成证书
        openssl genrsa -out rootCA.key 2048
        openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=gmlgtf.com" -days 5000 -out rootCA.pem
        openssl genrsa -out device.key 2048
        openssl req -new -key device.key -subj "/CN=gmlgtf.com" -out device.csr
        openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
    

    4.替换证书文件

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

    5.开始编译ngrok

    make release-server
    测试并运行ngrokd(ngrokd在bin文件夹中)
    ./bin/ngrokd -domain="gmlgtf.com" (默认使用 http:80 https:443 tunnelAddr:4443)//该方式为当前进程运行,关闭命令行程序终止
    后台运行:nohup ngrokd -domain="gmlgtf.com" -log="ngrok.log" -httpAddr=":8081" -httpsAddr=":8054" &

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

    出现上图表示服务端正常启动了

    6.编译客户端不同平台用不同的编译参数

    • 我在这里使用的是mac 64位编译
    
         GOOS=darwin GOARCH=amd64 make release-client
    

    7.通过scp 命令下载客户端文件到本地

    scp {root}@{ip}:{文件的位置} {本机存放文件的位置}
    //注意不需要将整个ngork文件下载,只需要下载对应的客户端文文件即可,比如mac下就是darwin_amd64文件夹下面的ngrok

    8.在刚才下载的文件目录下创建ngrok.cfg文件

    cfg的文件名随意,只需要和待会的启动命令中的参数保持一致即可

    9.运行客户端程序

    出现 客户端连接服务端成功的界面图

    表示和服务端连接上了,

    log 参数可写可不写,如果写了会在当前目录下建立一个log文件
    ngrok -subdomain demo -config=ngrok.cfg -log=ngrok.log 4000
    demo随便取,不重复即可,4000为我本机开放的服务端口
    效果图


    效果图

    第二个连接地址可在外网环境下访问

    10.将ngrokd添加到环境变量

    
        vim ~/.bashrc
        export PATH=$PATH:/root/go/src/github.com/inconshreveable/ngrok/bin
        source ~/.bashrc
    

    11. 压轴重点(遇到的坑)

    本内网穿透是基于阿里云的服务器,环境为ubantu 16.04
    常见的问题: 连接的时候一直出现红色的reconnectioning

    • 可能的原因:

    1.服务端启动的时候对应的端口没有开放(使用telbet ip port 检查是否开放),如果没有开放,参考下面如何开放云服务器端口
    2.同时保证自己的云服务器服务器解析已经开放对应的端口(以TCP协议)
    3.域名DNS解析配置错误(以及域名和二级域名(或者更多级)域名均需要配置,建议使用通配符)

    如何开放linux服务器端口(这种方式是临时修改,不是永久)

    iptables -A INPUT -p tcp --dport 777 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 777 -j ACCEPT

    再查看下 iptables -L -n 是否添加上去, 看到添加了

    Chain INPUT (policy DROP)
    target prot opt source destination
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:777
    Chain OUTPUT (policy ACCEPT)
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:777

    客户端编译参数参数

    
        Linux 平台 32 位系统:GOOS=linux GOARCH=386
        Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
        Windows 平台 32 位系统:GOOS=windows GOARCH=386
        Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
        MAC 平台 32 位系统:GOOS=darwin GOARCH=386
        MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
        
        ARM 平台:GOOS=linux GOARCH=arm
    

    相关文章

      网友评论

          本文标题:基于Ngrok搭建内网穿透服务器

          本文链接:https://www.haomeiwen.com/subject/vpfbgftx.html