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