选择 Ngrok和Frp
Ngrok
https://github.com/inconshreveable/ngrok
- Go语言实现
- Ngrok1开源,Ngrok2闭源
- 存在bug,且不再维护
Frp(Fast Reverse Proxy)
https://github.com/fatedier/frp
- 完全开源
- 功能更丰富
部署Frp
下载
Centos
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
tar -zxvf frp_0.21.0_linux_amd64.tar.gz
Windows
https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_windows_amd64.zip
配置
服务端1
2
3
4
5
6[common]
bind_port = 7000
vhost_http_port = 8080
log_file = ./frps.log
token = ${u.token}
subdomain_host = ${u.domain}
客户端1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[common]
server_addr = ${u.server.ip}
server_port = 7000
token = ${u.token}
[ssh000]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web000]
type = http
local_port = 80
subdomain = ${u.subdomain}
启动
服务端
./frps -c frps.ini &
客户端
./frpc -c frpc.ini &
注意
- 多个客户端,ssh000,web000,remote_port都不能重复
- 客户端与服务端时间最多不可超过15分钟
- 防火墙
开机自启
服务端
vi /usr/lib/systemd/system/frps.service1
2
3
4
5
6
7
8
9
10
11[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=${frps_full_path} -c ${frps.ini_full_path}
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
service frps start/status/stop
systemctl enable frps
systemctl restart frps
客户端
vi /usr/lib/systemd/system/frpc.service1
2
3
4
5
6
7
8
9
10
11[Unit]
Description=frpc daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=${frpc_full_path} -c ${frpc.ini_full_path}
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
service frpc start/status/stop
systemctl enable frpc
systemctl restart frpc