frps
基础使用
0、下载
centos
wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz
1、安装
tar -zxvf {}.tar.gz
tar -zxvf frp_0.43.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64/
vim frps.ini
2、设置防火墙
firewall-cmd --add-port={端口}/tcp --permanent
firewall-cmd --add-port={端口}/udp --permanent
# 重启防火墙
firewall-cmd --reload
3、复制关键文件
mkdir -p /etc/frp
cp frps.ini /etc/frp
cp frps /usr/bin
cp systemd/frps.service /usr/lib/systemd/system/
systemctl enable frps
systemctl start frps
4、启动
服务端
# verify 验证配置文件是否ok再开启
./frps verify -c ./frps.ini
# -c 指定配置文件
./frps -c ./frps.ini &
# 终止
pkill -9 frps
客户端
# -c 指定配置文件
# reload 热重载,自动监听配置文件变化来重启
./frpc reload -c ./frpc.ini &
./frpc. verify -c ./frpc.ini
常用命令
查看端口
netstat -lnpt | grep f
配置文件
主要配置文件:
- frps.ini - 服务端的配置
- frpc.ini - 客户端的配置
检查配置文件
frpc status -c ./frpc.ini
基础用例
- 服务端
# ./frps.ini
[common]
bind_port = 8080 # 服务端与客户端通信端口,对应 frpc.ini的bind_port
# dashboard_port = 7500 # 后台管理端口 - 功能少,可以不开启
# dashboard_user = admin # 后台登录用户名
# dashboard_pwd = admin
# vhost_http_port = 4526 # http穿透端口 非必要,如果本地假设了80端口的服务才用的上
# vhost_https_port = 4527 # https穿透端口 非必要,如果本地假设了443端口的服务才用的上
max_pool_count = 20 # 连接池
# authentication_method = token # 开启token验证,frps支持两种认证 oidc|token
token = aaa123 # 身份验证令牌,与frpc 的token 一致
tcp_mux = true
log_file = /home/cps/temp/frps.log # 日志相关 如果不启用,会默认打印在控制台
log_level = info
log_max_days = 3
authentication_timeout = 0 # 服务器与客户端时间相差15min会连接失败,0表示不验证
# subdomain_host = test.xyz # 注册的域名
# privilege_mode = true
- 客户端
# ./frpc.ini
[common]
server_addr = 42.192.78.8 # 公网服务器ip
server_port = 8080 # 公网服务端通信端口 的对应 frps.ini的bind_port
pool_count = 5 # 指定使用多少连接池
token = capsion@373704015.com # 令牌,与公网服务端保持一致 frps.ini
# tcp_mux = true
# authentication_method = token
log_file = /usr/local/frp/frpc.log # 日志相关
log_level = info
log_max_days = 3
authentication_timeout = 0 # 服务器与客户端时间相差15min会连接失败,0表示不验证
# [ssh] # 添加ssh节点
# type = tcp
# local_ip = 192.168.xxx.xxx
# local_port = 22
# remote_port = 7001 # 指明由公网服务器的7001端口代理 frps.ini[common]vhost_http_por
[project_name] # 添加一个tcp项目
type = tcp
local_ip = 127.0.0.1
local_port = 4040 # 本地项目的端口, 可以通过 frps.ini[common]vhost_http_port 访问
remote_port = 8081 # 映射到服务器的端口, 通过 服务器ip:remote_port 最终重定向到 本地的 127.0.0.1:4040
# [web]
# type = http
# local_port = 80
# custom_domains = test.example.com
# http_user = abc
# http_pwd = abc
坑
- 确保
remote_port
的端口在服务器上是开放访问的 - 确保
一些浏览器认为不安全的端口,可能会报错 ERR_UNSAFE_PORT
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]