Ninvfeng Blog

记录web开发中的所见所得

使用goproxy实现内网穿透

前提条件: 需要一台有公网IP的服务器

实现效果: 将公网服务器的一个端口映射本地的一个端口,如服务器为ninvfeng.com, 将服务器的8888端口映射到本地80端口, 然后浏览器访问http://ninvfeng.com:8888即可打开本地的站点, 对于开发需要公网访问的第三方接口特别方便

原理说明:内网穿透由三部分组成:client端,server端,bridge端;client和server主动连接bridge端进行桥接. 当用户访问server端,流程是:

  1. 首先server端主动和bridge端建立连接;
  2. 然后bridge端通知client端连接bridge端和目标端口;
  3. 然后client端绑定“client端到bridge端”和“client端到目标端口”的连接;
  4. 然后bridge端把“client过来的连接”与“server端过来的连接”绑定;
  5. 整个通道建立完成;
    1.png

操作步骤

1. 安装goproxy 下载地址: https://github.com/snail007/goproxy/releases 或者执行下面命令自动安装

 curl -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh | bash

2. 服务器执行以下命令启动服务端与桥接端

 proxy bridge -p ":9999" -C /root/proxy/proxy.crt -K /root/proxy/proxy.key --daemon
 proxy server -r ":8888@:80" -P "ninvfeng.com:9999" -C /root/proxy/proxy.crt -K /root/proxy/proxy.key -- 
 daemon

3. 将服务端的证书下载到本地

4. 本地执行

 proxy client -P "ninvfeng.com:9999" -C "D:/tools/proxy/proxy.crt" -K "D:/tools/proxy/proxy.key" --daemon

5. 完成,这时全世界访问ninvfeng.com:8888都可打开本地web目录,对微信开发之类的也是非常方便.

2.png

6. 使用到的开源项目: goproxy https://github.com/snail007/goproxy

文章评论已关闭!