内网映射

Ngrok

https://ngrok.com/

1
2
./ngrok authtoken token密钥
./ngrok http 端口

Sunny-Ngrok

https://www.ngrok.cc/

1
./sunny clientid 隧道id

Ngrok私服

1
2
apt-get install build-essential golang mercurial git
git clone https://github.com/tutumcloud/ngrok.git ngrok
  1. 服务端编译
1
2
3
4
5
6
7
cd ngrok
NGROK_DOMAIN="ngrok.avan.com"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.cr
  1. 启动服务
1
2
# /root/ngrok
bin/ngrokd -tlsKey=server.key -tlsCrt=server.cr -domain="ngrok.avan.com" -httpAddr=":8000" -httpsAddr=":8443"
  1. 客户端编译

Windows

1
GOOS=windows GOARCH=amd64 make release-client

Mac

1
GOOS=darwin GOARCH=amd64 make release-client

执⾏对应的命令会在bin⽬录下⽣成相对应的windows、mac⽬录,ngrok.exe就存放在对应⽬录下。将对应的ngrok.exe下载到本地。

1
2
# start.sh
./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=weixin 3000
1
2
3
# ngrok.cfg
server_addr: "ngrok.avan.com:4443"
trust_host_root_certs: false
  1. nginx反向代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /etc/nginx/sites-enabled/ngrok
server {
listen 80;
server_name *.ngrok.avan.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_set_header Host $http_host:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 1;
proxy_send_timeout 120;
proxy_read_timeout 120;
}
}
  1. 启动服务

配置ngrok服务

1
2
3
4
5
6
7
8
9
#/etc/systemd/system/ngrok.service
[Unit]
Description=ngrok
After=network.target
[Service]
ExecStart=/root/ngrok/bin/ngrokd -tlsKey=server.key -tlsCrt=server.cr -
domain="ngrok.josephxia.com" -httpAddr=":8000" -httpsAddr=":8443"
[Install]
WantedBy=multi-user.target

启动

1
2
3
4
// ⼜⼀次载⼊ systemd,扫描新的或有变动的单元
systemctl daemon-reload
// 启动ngrok
systemctl start ngrok

Sidoc

https://www.sidoc.cn/frp.html