FRP
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp服务端
CentOS7安装frps
- 下载安装包
wget https://github.com/fatedier/frp/releases/download/v0.28.2/frp_0.28.2_linux_amd64.tar.gz
- 解压文件
tar -xzvf frp_0.28.2_linux_amd64.tar.gz
- 创建frps文件夹
mkdir frps
- 拷贝服务端文件到frps文件夹
cd frp_0.28.2_linux_amd64
cp frps frps_full.ini frps.ini ../frps
- 测试frps是否正常运行
./frps --help
正常显示如下:
[root@hecs-centos-7 frps]# ./frps --help
frps is the server of frp (https://github.com/fatedier/frp)
Usage:
frps [flags]
Flags:
--allow_ports string allow ports
--bind_addr string bind address (default "0.0.0.0")
-p, --bind_port int bind port (default 7000)
--bind_udp_port int bind udp port
-c, --config string config file of frps
--dashboard_addr string dasboard address (default "0.0.0.0")
--dashboard_port int dashboard port
--dashboard_pwd string dashboard password (default "admin")
--dashboard_user string dashboard user (default "admin")
-h, --help help for frps
--kcp_bind_port int kcp bind udp port
--log_file string log file (default "console")
--log_level string log level (default "info")
--log_max_days int log max days (default 3)
--max_ports_per_client int max ports per client
--proxy_bind_addr string proxy bind address (default "0.0.0.0")
--subdomain_host string subdomain host
-t, --token string auth token
-v, --version version of frpc
--vhost_http_port int vhost http port
--vhost_http_timeout int vhost http response header timeout (default 60)
--vhost_https_port int vhost https port
-
编辑frps.ini
# 下面这句开头必须要有,表示配置的开始 [common] # frp 服务端端口,客户端通过这个端口注册到服务端(必须) bind_port = 7000 # 仪表盘端口,只有设置了才能使用仪表盘(即后台) dashboard_port = 7500 # 仪表盘访问的用户名密码,如果不设置,则默认都是 admin dashboard_user = admin dashboard_pwd = admin # http、https监听端口(端口可以自定义,外网服务器的对应端口要开放) vhost_http_port = 10080 vhost_https_port = 10443
-
启动frps命令
./frps -c ./frps.ini
- 保持frps后台运行命令
nohup ./frps -c ./frps.ini &
配置systemctl 操作 frps
- 创建frps.service
sudo vim /lib/systemd/system/frps.service
- 在frps.service里添加一下内容 ExecStart 根据自己的实际路径填
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini //启动服务的命令(此处写你的frps的实际安装目录)
[Install]
WantedBy=multi-user.target
- 开启服务器开机自动启动frps
sudo systemctl enable frps
- 启动frps
sudo systemctl start frps
- 重启frps
sudo systemctl restart frps
- 停止frps
sudo systemctl stop frps
- 查看日志
sudo systemctl status frps
访问frps控制台
frp客户端
windows安装frpc
-
访问 github.com/fatedier/fr… ,下载最新版本
-
解压到本地目录,编辑frpc.ini
# 下面这句开头必须要有,表示配置的开始
[common]
# frp服务端的地址
server_addr = 0.0.0.0
# frp服务端的端口
server_port = 7000
# 配置http内网穿透
# 为配置项取的别名,可以配置多个监听
[http]
# 监听类型
type = http
# 监听本地的地址
local_ip = 127.0.0.1
# 监听本地的端口
local_port = 8080
# 自定义域名(custom_domains和subdomain只能配置一个,frp根据配置的值,判断是否转发请求)
custom_domains = hw2.smilezq.cn
- 在cmd中运行frpc.exe
D:\program\frp_0.36.2_windows_amd64>frpc.exe
2021/03/31 18:14:55 [I] [service.go:304] [9a47f97bc995ae1c] login to server success, get run id [9a47f97bc995ae1c], server udp port [0]
2021/03/31 18:14:55 [I] [proxy_manager.go:144] [9a47f97bc995ae1c] proxy added: [http]
2021/03/31 18:14:55 [I] [control.go:180] [9a47f97bc995ae1c] [http] start proxy success
- 访问内网穿透地址
h2.smilezq.cn:10080
custom_domains和subdomain
custom_domains:
-
自定义域名
,用于定义http内网穿透时访问的地址,可以配置多个,以英文逗号分隔访问格式:http://custom_domains:port
-
当frps.ini 配置了subdomain_host,custom_domains不能是其子域名或者泛域名
subdomain:
子域名
,和frps.ini 配置的subdomain_host协作使用,实现多个内网穿透的配置
访问格式:http://subdomain.subdomain_host:port
frp实现http内网穿透客户端配置
# 下面这句开头必须要有,表示配置的开始
[common]
# frp服务端的地址
server_addr = 0.0.0.0
# frp服务端的端口
server_port = 7000
# 配置http内网穿透
# 为配置项取的别名,可以配置多个监听
[http]
# 监听类型
type = http
# 监听本地的地址
local_ip = 127.0.0.1
# 监听本地的端口
local_port = 8080
# 自定义域名(custom_domains和subdomain只能配置一个,frp根据配置的值,判断是否转发请求)
custom_domains = hw2.smilezq.cn
frp实现windows远程客户端配置
# 下面这句开头必须要有,表示配置的开始
[common]
# frp服务端的地址
server_addr = 0.0.0.0
# frp服务端的端口
server_port = 7000
# 为配置项取的别名
[windowsControl]
# 监听类型
type = tcp
# 监听本地的地址
local_ip = 127.0.0.1
# 监听本地的端口
local_port = 3389
remote_port = 3389