FRP进行内网穿透:完整指南与实战操作
FRP介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
github地址:https://github.com/fatedier/frp
自定义域访问内部 Web 服务(内网穿透)
1.下载frp程序到服务器上并解压
2.修改frps.toml
# frps.toml
bindPort = 7000
auth.token = "token"
服务的绑定端口为7000
添加token验证
3.启动frps服务端
./frps -c ./frps.toml
这样就算启动成功了!
- 客户端配置
在github上下载自己系统的 frp 。
修改 frpc.toml
#服务端的ip地址
serverAddr = "*.*.*.*"
#服务端的端口
serverPort = 7000
#token验证 如服务端没有配置token 则删除
auth.token = "token"
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
#本地服务的端口
localPort = 8090
#远程服务端映射的端口 注意防火墙要开启这个端口!
remotePort = 8080
5.启动客户端
.\frpc.exe -c .\frpc.toml
出现一下结果就说明 内网穿透已经成功了 !
服务端 shell启动脚本
#!/bin/bash
FRPS_PATH="./frps"
FRPS_CONF="./frps.toml"
PID_FILE="/var/run/frps.pid"
start() {
if [ -f $PID_FILE ]; then
echo "frps is already running."
else
nohup $FRPS_PATH -c $FRPS_CONF > /dev/null 2>&1 &
echo $! > $PID_FILE
echo "frps started."
fi
}
stop() {
if [ -f $PID_FILE ]; then
kill $(cat $PID_FILE)
rm -f $PID_FILE
echo "frps stopped."
else
echo "frps is not running."
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac