使用frp解决内外网打通的问题以下优势:
动态IP适配:客户端主动连接服务端,IP变化时自动重连,无需手动维护。
安全性:通过Token认证和HTTPS加密保障通信安全。
扩展性:支持多协议代理(TCP/UDP/HTTP)和负载均衡。
解压提前下载好的软件:frp_0.61.1_linux_amd64.tar.gz,解压后保留 frps 和 frps.toml(服务端文件)。
编辑 frps.toml,配置核心参数:
bindPort = 7000 # 客户端与服务端通信端口 vhostHttpPort = 8203 # HTTP代理映射端口,可选 auth.token = "your token" # 客户端需同步此Token webServer.addr = "0.0.0.0" #绑定ip webServer.port = 7500 #端口可选 #webServer.user = "admin" #可选 #webServer.password = "admin123" #可选
开放防火墙端口
sudo firewall-cmd --add-port=7000/tcp --permanent # 通信端口 sudo firewall-cmd --add-port=8023/tcp --permanent # HTTP服务端口 sudo firewall-cmd --reload
保存后验证配置:
./frps verify -c ./frps.tom
运行命令:
./frps -c ./frps.toml
并配置开机自启动(示例Systemd服务):
sudo vim /etc/systemd/system/frps.service
[Unit] Description=Frp Server [Service] ExecStart=/path/to/frp_0.61.1/frps -c /path/to/frp_0.61.1/frps.toml [Install] WantedBy=multi-user.target
执行:
sudo systemctl enable frps #开机启动 sudo systemctl start frps #启动服务
解压上面步骤下载的压缩包frp_0.61.1_windows_amd64.zip,保留 frpc.exe 和 frpc.toml。
编辑 frpc.toml,配置核心参数:
serverAddr = "云服务公网IP" serverPort = 7000 #与服务端配置保持一致 auth.token = "your toke" #与服务端配置保持一致 [[proxies]] name = "test-http" #可自定义 type = "http" #表示接口用http请求,可以切换为tcp localIP = "127.0.0.1" localPort = 80 #本地Web服务端口 customDomains =["域名.com"] #绑定域名(需解析至云服务端IP)
若需多服务代理,可配置多个代理段。
Windows:
./frpc -c ./frpc.toml
开放端口:7000(FRP通信)、8023/443(HTTP/HTTPS)、7500(管理面板,可选)。
允许 frpc.exe 或 frpc 进程通过防火墙,开放本地HTTP服务端口(如80)。
在 frpc.toml 中启用HTTPS:
[http_proxy] type = https plugin = https2http plugin_local_addr = 127.0.0.1:80 plugin_crt_path = /path/to/cert.pem plugin_key_path = /path/to/key.pem
可以使用Let's Encrypt免费证书。
服务端:访问 http://云服务器IP:7500(管理面板),查看客户端连接状态。
客户端:观察日志输出 Start proxy success 表示连接成功。
先检查本地web服务是否正常:
本地访问:http://localhost:80 确保服务正常;
服务端请求本地web服务
通过云服务器生成的公网地址(如 http://your.domain.com:8023)访问本地HTTP接口:
curl http://your.domain.com:8023/
如果返回的响应和本地服务响应相同,即表示穿透成功。