1.概述:
frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。
2.简单的图解:

3.准备工作:
1.一个域名(www.test.xyz)
2.一台有公网IP的服务器(阿里云、腾讯云等都行)
3.一台内网主机
4.下载frp,选择适合的版本下载
解压如下:

我这里服务器端和客户端都放在了/usr/local/frp/目录下
4.执行命令
123456# 服务器端给执行文件添加权限cd /usr/local/frp
sudo chmod 777 frps# 客户端给执行文件添加权限cd /usr/local/frp
sudo chmod 777 frpc
5.修改配置文件
1.公网服务器端:
123456789101112131415161718192021222324# 打开服务器端配置文件vim ./frps.ini# 我的填写内容如下:[common]
bind_port = 7000 # 服务端与客户端通信端口dashboard_port = 7500 # 后台管理端口dashboard_user = admin # 后台登录用户名dashboard_pwd = admin
vhost_http_port = 7002 # http穿透端口vhost_https_port = 7003 # https穿透端口max_pool_count = 50
token = xxxxxx # 身份验证令牌,frpc要与frps一致tcp_mux = true
log_file = /usr/local/frp/frps.log # 日志相关log_level = info
log_max_days = 3
authentication_timeout = 0 # 服务器与客户端时间相差15min会连接失败,0表示不验证subdomain_host = test.xyz # 注册的域名privilege_mode = true
注意:访问的端口一定要开放
启动frps:
1234567# 前台启动./frps -c ./frps.ini# 后台启动./frps -c ./frps.ini &# 后台永久运行nohup ./frps -c ./frps.ini &
启动成功后,可以访问后台管理界面(这里举例地址:www.test.xyz:7500)

2.客户端(内网主机):
123456789101112131415161718192021222324252627# 打开客户端配置文件vim ./frpc.ini# 我的填写内容如下:[common]
server_addr = 10.10.xxx.xxx # 公网服务器ipserver_port = 7000 # 公网服务端通信端口token = xxxxxx # 令牌,与公网服务端保持一致tcp_mux = true
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端口代理[web01] # 添加web节点type = http
local_ip = 192.168.xxx.xxx
local_port = 8080 # 本地8080端口可以通公网服务器7002端口访问,这里我的8080跑着tomcatsubdomain = web01 # 自定义子域名
启动frpc
1234567# 前台启动./frpc -c ./frpc.ini# 后台启动./frpc -c ./frpc.ini &# 后台永久运行nohup ./frpc -c ./frpc.ini &
frpc启动成功示例如下:

6.最终结果验证:
1.测试ssh节点:
使用xshell连接通过公网服务器连接内网主机

测试连接成功:

2.测试web01节点:
请求地址:http://web01.test.xyz:7002 能访问到内网的tomcat首页

7.设置frp开启自启动
使用systemd管理frp:
1.服务端:
12345678910111213141516171819202122232425262728293031# 需要先 cd 到 frp 解压目录.# 复制文件cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini# 编写 frp service 文件,以 ubuntu 为例vim /usr/lib/systemd/system/frps.service # 有时候需要手动创建system文件夹# frps.service内容如下[Unit]
Description=frps
After=network.target
[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target# 启动 frp 并设置开机启动systemctl enable frps
systemctl start frps
systemctl status frps# 部分服务器上,可能需要加 .service 后缀来操作,即:systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service
2.客户端:
1234567891011121314151617181920212223242526272829303132# 需要先 cd frp 解压目录.# 复制文件cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini# 编写 frp service 文件,以 centos7 为例vim /usr/lib/systemd/system/frpc.service # 有时候需要手动创建system文件夹# frpc.service内容如下[Unit]
Description=frpc
After=network.target
[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target# 启动 frp 并设置开机启动systemctl enable frpc
systemctl start frpc
systemctl status frpc# 部分服务器上,可以需要加 .service 后缀来操作,即:systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service
8.避坑:
尽量避开浏览器 ERR_UNSAFE_PORT,这些端口浏览器会识别为不安全端口,不能访问;例如下端口:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061621, // tcpmux7, // echo9, // discard11, // systat13, // daytime15, // netstat17, // qotd19, // chargen20, // ftp data21, // ftp access22, // ssh23, // telnet25, // smtp37, // time42, // name43, // nicname53, // domain77, // priv-rjs79, // finger87, // ttylink95, // supdup101, // hostriame102, // iso-tsap103, // gppitnp104, // acr-nema109, // pop2110, // pop3111, // sunrpc113, // auth115, // sftp117, // uucp-path119, // nntp123, // NTP135, // loc-srv /epmap139, // netbios143, // imap2179, // BGP389, // ldap465, // smtp+ssl512, // print / exec513, // login514, // shell515, // printer526, // tempo530, // courier531, // chat532, // netnews540, // uucp556, // remotefs563, // nntp+ssl587, // stmp?601, // ??636, // ldap+ssl993, // ldap+ssl995, // pop3+ssl2049, // nfs3659, // apple-sasl / PasswordServer4045, // lockd6000, // X116665, // Alternate IRC [Apple addition]6666, // Alternate IRC [Apple addition]6667, // Standard IRC [Apple addition]6668, // Alternate IRC [Apple addition]6669, // Alternate IRC [Apple addition]
本文大部分资料来源于CSDN,版权及知识产权归原作者所有。