575 字
3 分钟
frp

安装#

直接去官网下载二进制文件,systemctl部署就行, 或者用docker部署最合适。公网服务器用frps,内网服务器用frpc。除了网络可能要注意一下,别的都比较常规。 镜像就去dockerhub上找的最多下载的就行frpc,frps

services:
frpc:
image: snowdreamtech/frpc:latest
container_name: frpc
restart: always
volumes:
- ./frpc.toml:/etc/frp/frpc.toml
environment:
TZ: "Asia/Shanghai"
networks:
- internal_proxy
networks:
internal_proxy:
name: internal_proxy
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
gateway: 172.20.0.1

配置#

最主要用的其实还是tcp,udp。官方文档已经讲的很详细了。他的功能也不只有tcp,udp的穿透功能,

serverAddr = "47.98.238.251"
serverPort = 7001
auth.method = "token"
auth.token = "xxx"
[[proxies]]
name = "minecraft"
type = "tcp"
localIP = "bzl_mc" #docker自带的dns功能,写内网地址就行
localPort = 25565
remotePort = 38291
[[proxies]]
name = "bzl-mc-voice"
type = "udp"
localIP = "bzl_mc"
localPort = 24454
remotePort = 24454
[[proxies]]
name = "flask_backend"
type = "tcp"
localIP = "flask_backend"
localPort = 5000
remotePort = 5000

wireguard#

没啥好说的,主要还是看官网,他有个很灵性的视频,主机和客户端的比较,非常清楚。

配置#

有公网的主机#

作为vpn的网段的网关,[interface]配置一下暴露的端口,网段和私钥. [peer]里要配置所有要连到这个vpn里的设备。拿着客户端的公钥可以验证,客户端的安全。

[Interface]
# VPN网关地址(服务器在VPN中的IP)
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
PrivateKey = <私钥>
[Peer]
PublicKey = <公钥>
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25
[Peer]
PublicKey = <公钥>
AllowedIPs = 10.0.0.3/32
PersistentKeepalive = 25

没公网的客户机#

设置mtu是因为windows默认发的太大了,加上wireguard的头就超过1500B了,超过了协议规范。

[Interface]
PrivateKey = <私钥>
Address = 10.0.0.2/24
MTU = 1280
[Peer]
PublicKey = <公钥>
AllowedIPs = 10.0.0.0/24
Endpoint = <公网服务器的IP>
PersistentKeepalive = 25

是不是很简单,对照起来。wireguard是用UDP,没走TCP,那些脚本小子扫wireguard服务器,他如果私钥错误了,连返回报错都没有,除非同时撞到了服务器的公钥和客户机的私钥,不然不可能进的来。千万不要把内网的项目包括(Openclaw)发布到公网,即使F2a,ssl,密码都弄得看起来很安全,但是可能项目本身有漏洞,万一呢,直接暴露端口,攻击面太大了。

frp
https://blog.cannian.space/posts/2026-3-11-frp/
作者
Cannian
发布于
2026-03-11
许可协议
CC BY-NC-SA 4.0