| 2025-03-6
使用 frp 搭建内网穿透服务器,能让位于内网的服务暴露到公网,实现外网访问内网资源。主要步骤包括准备服务器环境、下载与配置 frp、启动 frp 服务并进行测试。以下为详细操作流程。
1、 选择服务器
可选用云服务器,如阿里云、腾讯云等,也可使用本地有公网 IP 的服务器。确保服务器操作系统为常见的 Linux 发行版,如 CentOS、Ubuntu 等。以 CentOS 7 为例,需先进行系统更新,在终端输入命令sudo yum update -y,更新系统软件包,保证系统处于最新状态,避免因旧版本漏洞影响后续操作。
2、 开放必要端口
frp 默认使用 7000 端口进行通信,还可能涉及到自定义的服务端口。在服务器的防火墙中开放这些端口。对于 CentOS 7,使用 firewalld 管理防火墙,执行以下命令开放 7000 端口:
sudo firewall - cmd --zone = public --add - port = 7000/tcp --permanent
sudo firewall - cmd --reload
若要映射 Web 服务的 80 端口或 443 端口,同样需开放:
sudo firewall - cmd --zone = public --add - port = 80/tcp --permanent
sudo firewall - cmd --zone = public --add - port = 443/tcp --permanent
sudo firewall - cmd --reload
1、 下载 frp
访问 frp 官方 GitHub 仓库(https://github.com/fatedier/frp/releases),根据服务器操作系统和架构下载对应的 frp 压缩包。例如,对于 64 位的 Linux 系统,下载形如frp_0.40.0_linux_amd64.tar.gz的文件。在服务器终端使用wget命令下载,假设下载链接为https://github.com/fatedier/frp/releases/download/v0.40.0/frp_0.40.0_linux_amd64.tar.gz,则执行:
wget https://github.com/fatedier/frp/releases/download/v0.40.0/frp_0.40.0_linux_amd64.tar.gz
下载完成后,使用tar命令解压:
tar - zxvf frp_0.40.0_linux_amd64.tar.gz
cd frp_0.40.0_linux_amd64
2、 配置 frp 服务端
进入解压后的目录,编辑frps.ini文件,此文件用于配置 frp 服务端。常见配置如下:
[common]
bind_port = 7000
用于身份验证的密钥,可自定义
token = your_secret_token
若要使用 dashboard 查看 frp 状态,可进行如下配置
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
bind_port指定 frp 服务端监听的端口,需与前面防火墙开放的端口一致;token为客户端连接服务端的身份验证密钥,务必设置复杂且保密;dashboard_port、dashboard_user和dashboard_pwd用于配置 frp 的管理界面,可通过http://服务器 IP:7500访问,用户名和密码分别为admin。
1、 上传 frp 客户端到内网机器
将解压后的 frp 目录中的frpc、frpc.ini等文件上传到需要穿透的内网机器。可使用scp命令,假设服务器 IP 为192.168.1.100,本地 frp 目录为frp_0.40.0_linux_amd64,执行:
scp - r frp_0.40.0_linux_amd64 root@192.168.1.100:/root/
2、 配置 frp 客户端
在 内网机器上编辑frpc.ini文件,以映射本地 Web 服务为例,配置如下:
[common]
server_addr = 服务器公网 IP
server_port = 7000
token = your_secret_token
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
server_addr填写 frp 服务端的公网 IP;server_port与服务端的bind_port一致;token与服务端设置的密钥相同。[web]部分为自定义的服务配置,type指定服务类型为http;local_ip和local_port表示本地服务的地址和端口;remote_port为在公网上访问该服务的端口。
1、 启动 frp 服务端
在 frp 服务端所在服务器的 frp 目录下,执行以下命令启动 frp 服务端:
nohup./frps - c./frps.ini &
nohup命令用于在后台运行程序,使其不随终端关闭而停止;&表示将程序放入后台执行。可通过查看日志文件nohup.out检查启动状态:
tail - f nohup.out
若显示类似frps: start proxy success,则说明服务端启动成功。
2、 启动 frp 客户端
在内网机器的 frp 目录下,执行以下命令启动 frp 客户端:
nohup./frpc - c./frpc.ini &
同样通过查看nohup.out日志文件确认启动状态。若启动成功,在浏览器中输入http://服务器公网 IP:8080(假设remote_port设置为 8080),即可访问到内网的 Web 服务。
1、 frp 高级配置:frp 支持 TCP、UDP 等多种协议的转发,还可配置子域名访问、HTTPS 代理等功能。例如,通过配置custom_domains参数可使用自定义域名访问内网服务,提升服务的专业性和可访问性。
2、 内网穿透安全问题:内网穿透将内网服务暴露到公网,增加了安全风险。可通过设置强密码、启用 SSL/TLS 加密、限制访问 IP 等方式增强安全性。例如,使用 Let's Encrypt 为 frp 服务配置免费的 SSL/TLS 证书,加密数据传输。
3、 其他内网穿透工具对比:除 frp 外,常见的内网穿透工具还有花生壳、ngrok 等。花生壳是商业化产品,使用相对简单;ngrok 功能强大但部分功能收费。与它们相比,frp 开源且可定制性强,适合有一定技术基础的用户根据需求灵活配置。