788 字
4 分钟
FRP 内网穿透综合部署手册
FRP 内网穿透综合部署手册
1. 部署方案选择
| 方案类型 | 适用场景 | 核心优势 |
|---|---|---|
| 传统二进制部署 | 物理服务器/长期稳定运行环境 | 资源占用低,直接进程管理 |
| 容器化部署 | 云环境/快速部署场景 | 环境隔离,一键启停 |
2. 服务端部署
2.1 传统二进制部署
2.1.1下载安装
$ wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz$ tar -zxvf frp_0.61.1_linux_amd64.tar.gz$ mv frp_0.61.1_linux_amd64 /usr/local/frps2.1.2修改配置文件
$ vi /usr/local/frps/frps.tomlbindPort = 7000 #服务端监听端口auth.method = "token" #服务端连接身份认证,默认tokenauth.token = "Token值" #服务端token密码vhostHTTPPort = 80vhostHTTPSPort = 443transport.tls.force = false #是否只接受启用了TLS的客户端连接transport.maxPortsPerClient = 20 #每个客户端可以创建多少隧道allowPorts = [ { start = 10000, end = 15000 }, #端口范围设置为10000-15000可用 { start = 30000, end = 40000 }, #同理,可设置多个端口范围开放 { single = 25565 }, #单端口设置,指定25565端口可用 { single = 25566 } #同理,可以设置多个单端口开放]2.1.3创建Systemd服务
$ vi /etc/systemd/system/frps.service[Unit]Description=frpsAfter=network.target
[Service]Type=simpleExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.tomlRestart=always
[Install]WantedBy=multi-user.target2.1.4启动服务器端的FRP
$ systemctl enable --now frps$ systemctl start frps2.2 容器化部署
2.2.1创建配置目录
$ mkdir -p /opt/frps && cd /opt/frps2.2.2配置文件
$ vi frps.tomlbindAddr = "0.0.0.0" # 公网IP地址bindPort = 7000auth.method = "token"auth.token = "your_secure_token"webServer.addr = "0.0.0.0"webServer.port = 7500 # 管理界面端口2.2.3Docker-compose配置
$ vi docker-compose.yamlversion: '3'services: frps: image: snowdreamtech/frps:0.61.1 container_name: frps restart: always network_mode: host volumes: - ./frps.toml:/etc/frp/frps.toml2.2.4启动服务
$ docker-compose up -d2.2.5停止服务
$ docker-compose stop3. 客户端部署
3.1 传统二进制部署
3.1.1安装步骤同服务端
$ mv frp_0.61.1_linux_amd64 /usr/local/frpc3.1.2修改配置文件
$ vi /usr/local/frpc/frpc.tomlserverAddr = "frp_server_ip" # frp服务器端IP地址serverPort = 7000auth.token = "your_secure_token"
[[proxies]]name = "ssh"type = "tcp"localIP = "127.0.0.1"localPort = 22remotePort = 7080transport.useEncryption = true3.1.3创建Systemd服务
$ vi /etc/systemd/system/frpc.service[Unit]Description=frpcAfter=network.target syslog.targetWants=network.target
[Service]Type=simpleExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.tomlRestart=always
[Install]WantedBy=multi-user.target3.1.4启动客户端的FRP
$ systemctl enable --now frpc$ systemctl start frpc3.2 容器化部署
3.2.1创建配置目录
$ mkdir -p /opt/frpc && cd /opt/frpc3.2.2修改配置文件
$ vi frpc.tomlserverAddr = "frp_server_ip" # frp服务器端IP地址serverPort = 7000auth.token = "your_secure_token"
[[proxies]]name = "web"type = "http"localPort = 8080customDomains = ["your.domain.com"]3.2.3Docker-compose配置
$ vi docker-compose.ymlversion: '3'services: frpc: image: snowdreamtech/frpc:0.61.1 container_name: frpc restart: always network_mode: host volumes: - ./frpc.toml:/etc/frp/frpc.toml3.2.4启动服务
$ docker-compose up -d3.2.5停止服务
$ docker-compose stop4. 多服务器连接配置
4.1 传统方式多实例
4.1.1创建多个配置文件
$ cp /usr/local/frpc/frpc.toml /usr/local/frpc/frpc@1.toml$ cp /usr/local/frpc/frpc.toml /usr/local/frpc/frpc@2.toml4.1.2创建多实例服务文件
$ vi /etc/systemd/system/frpc@1.service[Unit]Description=frpc instance %iAfter=network.target
[Service]Type=simpleExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc-%i.tomlRestart=always
[Install]WantedBy=multi-user.target4.1.3启动实例
$ systemctl enable --now frpc@1 frpc@2$ systemctl start frpc@1 frpc@24.2 容器化多实例
4.2.1为每个实例创建独立目录
$ mkdir -p /opt/frpc/{instance1,instance2}4.2.2启动时指定配置路径
$ docker run -d --name frpc1 \ -v /opt/frpc/instance1/frpc.toml:/etc/frp/frpc.toml \ --network host \ snowdreamtech/frpc:0.61.15. 安全加固措施
5.1 通用安全配置
5.1.1服务端配置增强
transport.tls.force = true # 强制TLS加密transport.maxPortsPerClient = 10 # 限制单客户端端口数附:网络拓扑示意图
[ 内网客户端 ] → (FRP Client) → [ 公网FRP Server ] ← (外部访问者) 加密隧道 端口映射 FRP 内网穿透综合部署手册
http://blog.xeu.asia/posts/技术折腾/frp-内网穿透综合部署手册/