目录
FRP轻松实现内网穿透
一、FRP是什么?
FRP(Fast Reverse Proxy) 是一款简单,好用,稳定的隧道工具。它是一款高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、KCP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。绕过复杂的网络对外服务从它开始,Go。
二、FRP怎么玩
1.FRP的通信过程
通信过程:内网服务器和公网虚拟机通过FRP建立隧道,用户请求公网虚拟机访问到内网服务器
2.FRP的名词解释
FRPC #FRP的客户端
FRPS #FRP的服务端
frps.ini #服务端的配置文件
frpc.ini #客户端的配置文件
3.使用FRP的前置准备
#公网服务器 = 阿里云、腾讯、天翼云等
1、一台有**固定IP**的公网服务器(Windows、Linux)
2、一台内网设备(Windows、Linux)
3、一台笔记本或台式机(调试用)
三、FRP如何部署
1.FRP服务端部署
步骤一:下载获取安装包
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
步骤二:解压安装包到/etc/frp目录
mkdir /etc/frp && tar -zxvf frp_0.33.0_linux_amd64.tar.gz -C /etc/frp
步骤三:修改FRP服务端配置文件
vim /etc/frp/frps.ini
----------
[common]
bind_port = 20001 根据实际情况个人喜好更新IP端口
提示:20001端口需要在阿里云等公网服务器的安全组、防火墙里面放通
----------
2.FRP客户端部署
步骤一:下载客户端安装包
windows端:
https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_windows_amd64.zip
Linux端:
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
步骤二:解压安装包到对应文件夹
mkdir /etc/frp && tar -zxvf frp_0.33.0_linux_amd64.tar.gz -C /etc/frp
步骤三:修改配置文件
vi /etc/frp/frpc.ini
----------
[common]
server_addr = 120.120.*.* #修改成服务端的公网IP或者域名也可以
server_port = 20001 #服务端的请求端口
[ssh] #Linux的ssh连接
#端口类型tcp、udp、http、https等
type = tcp
#内网设备的IP,可以是这台设备的自身或其他
local_ip = 192.168.3.2
#内网IP端口,22端口对应的是ssh
local_port = 22
#在外网访问的端口,自定义
remote_port = 26666
[RDP] #Windows远程桌面连接
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 28888
步骤四:启动程序,并放到后台启动
Linux端:
1、cd /etc/frp
2、nohup sh /etc/frp/frpc -c /etc/frp/frpc.ini &
Windows端:
1、打开CMD命令行提示符工具
2、cd c:\frp\
3、start /b frpc.exe -c c:\frp\frpc.ini
四、FRP设置成服务启动(Linux)
1.FRP服务端以服务的方式启动(Linux)
#1、编辑frps.service
vi /etc/frp/systemd/frps.service
[Unit]
Description=FRP to bypass NAT Network
Wants = network-online.target
After=network.target
[Service]
Type=simple
ExecStart=/etc/frp/frps -c /etc/frp/frps.ini
#ExecReload=/etc/frp/frps
#ExecStop=/etc/frp/frps
StandardOutput = syslog
StandardError = inherit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存
#2、复制frps.service到lib库
cp /etc/frp/systemd/frps.service /lib/systemd/system/
#3、重新加载,启动服务并设置开机自启动
systemctl-daemon-reload
systemctl start frps.service
systemctl enable frps.service
2.FRP客户端以服务的方式启动(Linux)
#1、编辑frpc.service
vi /etc/frp/systemd/frpc.service
[Unit]
Description=FRP to bypass NAT Network
Wants = network-online.target
After=network.target
[Service]
Type=simple
ExecStart=/etc/frp/frpc -c /etc/frp/frpc.ini
#ExecReload=/etc/frp/frpc
#ExecStop=/etc/frp/frpc
StandardOutput = syslog
StandardError = inherit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存
#2、复制frps.service到lib库
cp /etc/frp/systemd/frpc.service /lib/systemd/system/
#3、重新加载,启动服务并设置开机自启动
systemctl-daemon-reload
systemctl start frpc.service
systemctl enable frpc.service
四、FRP服务端拓展
1.点对点内网穿透配置
#frps.ini服务端
[common]
bind_port = 7000
bind_udp_port = 7000
#frpc.ini客户端【*在需要暴露到内网的机器上部署 frpc*】
[common]
server_addr = x.x.x.x
server_port = 7000
[p2p_ssh]
type = xtcp
#只有 【SK】 一致的用户才能访问到此服务,类似Token
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
#frpc.ini客户端【*在想要访问内网服务的机器上也部署 frpc*】
[common]
server_addr = x.x.x.x
server_port = 7000
[p2p_ssh_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = p2p_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
总结
优势:FRP可以在各种复杂的企业内网绕过管理员将应用、服务器通过建立隧道发布到外网。FRP可以作为运维人员的应急手段。比花某壳的内网穿透稳定。
缺点:容易被外部渗透,可以配合Token、frp+openVpn等使用加强安全性。并且FRP发布的应用网速的瓶颈在于固定IP的网速,而不是发起请求的客户端。
如果UP婆主有什么写的不对,欢迎大家提出建议并指出~谢谢大家
支持一下~别下次一定咯