前言:有公网IP服务器的同学可以利用FRP(Fast Reverse Proxy)进行内网穿透,稳定、方便、可控,简单配置1到2个文件即可启动服务。
1.下载源
-
github:
https://github.com/fatedier/frp#connecting-to-frps-via-http-proxy
-
release包:
https://github.com/fatedier/frp/releases
2.配置
服务端:frps相关的文件
frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = root
dashboard_pwd = csdn123456
tls_enable = true
authenticate_new_work_conns = true
authentication_method = token
token = 123456
客户端:frpc相关的文件
frpc.ini
[common]
server_addr = ucloudserver
server_port = 7000
tls_enable = true
authenticate_new_work_conns = true
authentication_method = token
token = 123456
# 这个名字可以自定义,但必须唯一。
# 如果是其它客户机也需要代理(也就是穿透)ssh服务,那么这里的名字可以是[ssh-client2],remote_port = 229。
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 并不是说客户端的22和服务端的228保持长连接。而是为了实现ssh这个服务,服务端本地基于228进行各类通信,客户端基于22进行各类通信。
remote_port = 228
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 808
注意:在server端的防火墙要打开对应端口,本示例中需要打开7000(用于内网穿透过程保持长连接)、7500(仪表盘)、228(用于ssh)、808(用于Nginx),同时,为了监听的安全性,需要配置token。
3.自定义脚本
1. 服务端
- 启动脚本 start-server.sh
#!/bin/bash
./frps -c ./frps.ini > ./log &
- 停止脚本 stop-server.sh
#!/bin/bash
ps -ef | grep frps | grep -v grep | awk '{print $2}' | xargs kill -9
2. 客户端
- 启动脚本start-client.sh
#!/bin/bash
./frpc -c ./frpc.ini > ./log &
- 停止脚本stop-client.sh
#!/bin/bash
ps -ef | grep frpc | grep -v grep | awk '{print $2}' | xargs kill -9
-
重启脚本
客户端修改frpc.ini配置后,如果需要更新配置,则需要通过服务端远程重启客服端服务frpc
1) private-restart-client.sh
#!/bin/bash
ps -ef | grep frpc | grep -v grep | awk '{print $2}' | xargs kill -9 >> log 2>&1
echo "已停止frpc"
#sleep 3s
./frpc -c ./frpc.ini >> log &
echo "已重启frpc"
2)restart-client.sh
#!/bin/bash
nohup sh private-restart-client.sh &
注意:需要重启服务时,通过服务端ssh连接进入客户端,在客户端下执行脚本./restart-client.sh
4.设置开机重启
只需要把重启脚本和指令加入到/etc/rc.d/rc.local
文件中即可
# 1.确保rc.local的可执行权限
chmod +x /etc/rc.d/rc.local
# 2./etc/rc.d/rc.local末尾中添加执行脚本指令
cd /opt/module/frp_0.34.3_linux_amd64/ && ./restart-client.sh