跳转至

Frp

frp 简介

官方:

内网穿透类型

类型 描述
tcp 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务
udp 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务
http 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权
https 针对 HTTPS 应用定制了一些额外的功能
stcp 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口
sudp 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口
xtcp 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转
tcpmux 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务

服务端安装

使用 systemd 管理服务 /usr/lib/systemd/system/frps.service

[Unit]
Description = Frp Server Service
After = network.target syslog.target
Wants = network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/root/frp_0.48.0_linux_amd64/frps -c /root/frps.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

设置开机自启

systemctl enable --now frps

参考配置如下:

[common]
bind_addr     = 0.0.0.0
bind_port     = 7000
bind_udp_port = 7001
kcp_bind_port = 7000

dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd  = admin
dashboard_tls_mode = false

enable_prometheus = true

log_file = /var/log/frp/frps.log
log_level = error
log_max_days = 3
disable_log_color = false

authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = 12345678

allow_ports = 22,80,443,11080,11443
max_pool_count = 10
max_ports_per_client = 10

客户端安装

使用 systemd 管理服务 /usr/lib/systemd/system/frpc.service

[Unit]
Description = Frp Client Service
After = network.target syslog.target
Wants = network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/root/frp_0.49.0_linux_amd64/frpc -c /root/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

设置开机自启

systemctl enable --now frpc

参考配置如下:

# frpc.ini
[common]
server_addr = 47.108.210.201
# Same as the 'kcp_bind_port' in frps.ini
server_port = 7000

# auth token
authentication_method = token
token = tk-token

# log
log_file = /var/log/frp/frpc.log
log_level = debug
log_max_days = 3
disable_log_color = false

[http]
type = tcp
local_port = 80
local_ip = 10.244.244.11
remote_port = 11080
use_encryption = true
use_compression = true

[https]
type = tcp
local_port = 443
local_ip = 10.244.244.11
remote_port = 11443
use_encryption = true
use_compression = true