内网穿透的主要目的: 让外网的计算机能访问内网的机器。
说到内网穿透,第一反应想到的可能就是花生壳和向日葵软件,但因为它是收费的,所以今天我们借助一个开源项目Ngrok来搭建自己的内网穿透服务器。
材料准备
- CentOS(amd64 6.X或7.X)服务器
- 公网域名 (没有的可以去万网注册)
- SSH远程连接软件 (如Xshell, SecureCRT, putty等)
搭建Ngrok服务器(CentOS 6.X或7.X)
准备工作
- 安装gcc编译器
1
yum install gcc -y
- 安装git工具
1
yum install git -y
- 克隆Ngrok源码
1
git clone https://github.com/inconshreveable/ngrok.git
- 安装Go语言环境在profile文件末尾添加以下的内容:
1
2
3wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
vim /etc/profile生效环境,并检查是否成功安装Go环境1
2
3#go lang
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin1
2source /etc/profile
go version
生成证书
1 | cd /ngrok |
覆盖原本证书
1 | yes|cp rootCA.pem /usr/local/ngrok/assets/client/tls/ngrokroot.crt |
编译Ngrok
查看不同系统下的不同配置信息
- 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
编译生成 Linux 服务端
1 | GOOS=linux GOARCH=amd64 make release-server |
编译生成 window 客户端
1 | GOOS=windows GOARCH=amd64 make release-client |
启动Ngrok服务
1 | cd /usr/local/ngrok |
Window客户端配置
ngrok配置文件
新建文件 ngrok.cfg
1 | server_addr: "my.domain.com:4443" |
根据自己域名和端口信息修改server_addr和remote_port
新建ngrok.bat
1 | ngrok -config="ngrok.cfg" start mstsc |
其中ngrok为之前编译的可执行文件ngrok.exe, 之前编译失败的可直接下载适用于windows 64位系统的ngrok程序 - ngrok-stable-windows-amd64.zip
运行ngrok.bat即可启动
Window开机ngrok自启动(非必选)
新建
ngrok.vbe
文件写入以下程序
1
2set ws=wscript.createobject("wscript.shell")
ws.run "ngrok.bat /start",0运行中启动 shell:startup
创建ngrok.vbe快捷方式拷贝到启动目录中
Window远程桌面连接
运行中启动 mstsc
输入ngrok服务器地址,用户和密码等
远程桌面成功效果图