| 2025-09-10
在许多网络应用场景中,我们常常面临着需要访问位于内网环境中的设备或服务的情况,但由于缺乏公网IP或者受到防火墙的限制,这些服务难以直接从外网进行访问。此时,内网穿透技术便发挥了关键作用。frp(FastReverseProxy)作为一款开源且高效的内网穿透工具,支持TCP、UDP、HTTP、HTTPS等多种协议,以其配置简单、性能卓越以及活跃的社区支持,成为众多用户实现内网穿透需求的首选。下面将详细介绍frp内网穿透的使用教程。
1、公网服务器:需要一台拥有公网IP的服务器,例如可以选择阿里云、腾讯云等云服务器提供商的产品。同时,要确保在服务器安全组或防火墙设置中开放相关端口,以保障frp服务的正常通信。
2、内网设备:即运行着需要被外网访问服务的设备,比如本地电脑、NAS(网络附属存储)设备等。
3、下载frp:前往frp的GitHubRelease页面(https: //github.com/fatedier/frp/releases),根据公网服务器和内网设备的操作系统(如Windows、Linux、macOS等)以及CPU架构(如amd64、386、arm、arm64等),下载对应的frp版本。务必保证服务端与客户端的frp版本一致,以确保兼容性和稳定性。例如,常见的x86-64架构的Windows系统可下载“frp_xx_windows_amd64.zip”,Linux系统amd64架构下载“frp_xx_linux_amd64.tar.gz”。
1、解压下载好的frp压缩包。在Linux系统下,使用命令“tar-zxvffrp_*.tar.gz”解压;在Windows系统中,直接解压下载的zip文件。解压完成后,进入解压后的目录。
2、编辑配置文件“frps.ini”(Linux下使用“vifrps.ini”命令编辑,Windows下可用记事本等文本编辑器)。以下是一个基本的配置示例:
[common]
bind_port=7000#客户端连接服务端的端口,可自行设定,但需确保未被其他程序占用
token=your_secure_token#设置用于客户端与服务端认证的令牌,保障连接安全,客户端需配置相同令牌
dashboard_port=7500#服务端仪表盘端口,通过浏览器访问“http://服务器公网IP:7500”可查看frp服务状态,可自定义
dashboard_user=admin#服务端仪表盘登录用户名
dashboard_pwd=your_password#服务端仪表盘登录密码
log_file=./frps.log#日志文件保存路径
log_level=info#日志级别,可选择debug、info、warn、error等,info为记录一般信息
log_max_days=7#日志文件保留天数
3、配置完成后,在Linux系统下,使用命令“./frps-cfrps.ini”启动frp服务端;在Windows系统中,通过命令行进入frp服务端程序所在目录,执行“frps.exe-cfrps.ini”启动服务端。
1、限制可代理的端口范围:为增强安全性,可在“frps.ini”中配置允许代理的端口范围。例如:
allow_ports=6000-7000,8000,9000-9100#允许代理6000到7000端口、8000端口以及9000到9100端口范围
2、域名访问支持:若希望通过域名访问内网服务,可在服务端配置文件中添加如下设置:
vhost_http_port=80#HTTP服务端口
vhost_https_port=443#HTTPS服务端口
3、设置开机自启(以Linux为例):
-使用文本编辑器(如vim)在“/etc/systemd/system”目录下创建一个“frps.service”文件,内容如下:
[Unit]
Description=frpserver
After=network.targetsyslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/path/to/frps-c/path/to/frps.toml#修改为实际的frps程序路径和配置文件路径
[Install]
WantedBy=multi-user.target
-使用systemd命令管理frps服务,启动frp:“sudosystemctlstartfrps”;停止frp:“sudosystemctlstopfrps”;重启frp:“sudosystemctlrestartfrps”;查看frp状态:“sudosystemctlstatusfrps”。
-最后,设置开机自启:“systemctlenablefrps”。
1、同样解压下载好的frp客户端压缩包,并进入解压目录。
2、编辑客户端配置文件“frpc.ini”。以下是一个示例配置,以暴露SSH服务和Web服务为例:
[common]
server_addr=服务端公网IP#填写frp服务端的公网IP地址
server_port=7000#与服务端配置的bind_port一致
token=your_secure_token#与服务端配置的token一致
[ssh]
type=tcp#代理类型为TCP
local_ip=127.0.0.1#本地服务IP,一般为127.0.0.1表示本机
local_port=22#本地SSH服务端口,默认为22
remote_port=6000#公网访问的端口,可自定义,但需确保未被服务端占用且符合服务端允许代理的端口范围
[web]
type=http#代理类型为HTTP
local_port=8080#本地Web服务端口,根据实际Web服务端口设置
custom_domains=www.yourdomain.com#若使用域名访问,填写绑定的域名,若无域名可忽略
3、配置完成后,在Linux系统下,使用命令“./frpc-cfrpc.ini”启动frp客户端;在Windows系统中,通过命令行进入frp客户端程序所在目录,执行“frpc.exe-cfrpc.ini”启动客户端。
若内网中有多个服务需要穿透,可在“frpc.ini”中继续添加配置项。例如,添加远程桌面(RDP)服务和内网NAS的HTTP服务配置:
[rdp]
type=tcp
local_port=3389#Windows默认远程桌面端口
remote_port=7001#公网访问远程桌面的端口
[nas]
type=http
local_port=5000#内网NAS服务端口
subdomain=nas#子域名,需服务端配置subdomain_host支持,若无域名可忽略
1、SSH连接测试:在拥有公网环境的设备上,使用SSH命令连接内网的SSH服务。例如:“ssh-p6000user@服务端公网IP”,其中“6000”为客户端配置的“remote_port”,“user”为内网SSH服务的用户名。若能成功连接并登录,说明SSH服务穿透成功。
2、Web服务测试:若配置了Web服务穿透,在公网设备的浏览器中输入“http: //服务端公网IP:远程端口”(如配置了域名,则输入“http: //www.yourdomain.com”),若能正常访问到内网的Web服务页面,表明Web服务穿透成功。
3、其他服务测试:对于其他类型的服务,如数据库服务、远程桌面服务等,可根据相应的客户端工具,使用公网访问地址(服务端公网IP和对应的远程端口)进行连接测试,验证内网穿透是否成功。
1、内网穿透原理:内网穿透是一种将位于私有网络(内网)中的服务暴露到公共网络(外网),使得外网用户能够访问内网服务的技术。其主要通过在公网设立一个中转服务器,内网设备与中转服务器建立连接,中转服务器接收外网请求并转发到对应的内网设备,从而实现通信。常见的内网穿透技术包括端口映射、反向代理等,frp采用的是反向代理原理。
2、frp与花生壳对比:花生壳也是一款知名的内网穿透工具。与frp相比,花生壳的优势在于其使用相对简单,无需自行搭建服务器,官方提供了完整的服务,适合对技术要求不高、追求便捷性的用户。但部分高级功能可能需要付费。而frp作为开源工具,用户可以根据自身需求灵活定制配置,并且在性能优化、协议支持等方面有更大的自主性,对于有一定技术基础的用户来说更具吸引力。
3、frp安全机制:frp提供了多种安全保障措施。一方面,通过设置token进行客户端与服务端的身份认证,只有token匹配的客户端才能与服务端建立连接,防止非法接入。另一方面,支持TLS加密传输,对传输的数据进行加密处理,避免数据在传输过程中被窃取或篡改。同时,还可以通过设置服务端的允许代理端口范围、IP白名单等方式,进一步增强安全性,确保只有授权的服务和IP能够通过frp进行访问。