问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何搭建FRP服务器?详细步骤解析!

创作时间:
作者:
@小白创作中心

如何搭建FRP服务器?详细步骤解析!

引用
1
来源
1.
https://www.kdun.com/ask/1308469.html

FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议,通过在内网或防火墙后的机器上部署FRP,可以轻松实现内网穿透,将内网服务暴露到公网上。本文将详细介绍如何在Linux环境下搭建FRP服务器和客户端,并验证其功能。

准备工作

  1. 域名:一个用于访问的域名(如www.test.xyz)。
  2. 服务器:一台拥有公网IP的服务器(如阿里云、腾讯云等)。
  3. 内网主机:需要被穿透的内网设备。
  4. 下载FRP:从FRP官方Github下载适合的版本。

安装与配置

1. 服务端配置

创建目录并上传文件

mkdir -p /usr/local/frp
cd /usr/local/frp
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_amd64.tar.gz
tar -zxvf frp_0.49.0_linux_amd64.tar.gz

编辑配置文件

打开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 = aaa123 # 身份验证令牌
tcp_mux = true
log_file = /usr/local/frp/frps.log # 日志文件路径
log_level = info
log_max_days = 3
authentication_timeout = 0 # 不验证时间差
subdomain_host = test.xyz # 注册域名
privilege_mode = true

启动服务端

./frps -c ./frps.ini

2. 客户端配置

创建目录并上传文件

mkdir -p /usr/local/frp
cd /usr/local/frp
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_amd64.tar.gz
tar -zxvf frp_0.49.0_linux_amd64.tar.gz

编辑配置文件

打开frpc.ini并进行如下配置:

[common]
server_addr = 10.10.xxx.xxx # 服务端IP
server_port = 7000 # 服务端通信端口
token = aaa123 # 身份验证令牌
tcp_mux = true
log_file = /usr/local/frp/frpc.log # 日志文件路径
log_level = info
log_max_days = 3
authentication_timeout = 0 # 不验证时间差

[ssh] # SSH节点
type = tcp
local_ip = 192.168.xxx.xxx # 本地IP
local_port = 22
remote_port = 7001 # 远程端口

[web01] # Web节点
type = http
local_ip = 192.168.xxx.xxx # 本地IP
local_port = 8080 # 本地端口
subdomain = web01 # 自定义子域名
custom_domains = test.xyz # 主域名

启动客户端

./frpc -c ./frpc.ini

验证结果

  1. 测试SSH节点:使用Xshell等工具连接公网服务器,通过7001端口访问内网主机的SSH服务。
  2. 测试Web节点:在浏览器中访问http://web01.test.xyz:7002,应能访问内网Tomcat服务的首页。

设置开机自启动

1. 服务端开机自启动

复制文件

cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini

编写systemd服务文件

[Unit]
Description=frps
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动并设置开机自启

systemctl enable frps
systemctl start frps
systemctl status frps

2. 客户端开机自启动(以CentOS为例)

复制文件

cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini

编写systemd服务文件

[Unit]
Description=frpc
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动并设置开机自启

systemctl enable frpc
systemctl start frpc
systemctl status frpc

常见问题解答(FAQs)

Q1: FRP服务器无法启动怎么办?

A1: 请检查以下几点:

  • 配置文件错误:确保frps.inifrpc.ini中的配置正确无误,特别是端口和IP地址。
  • 端口占用:确认配置文件中的端口未被其他服务占用,可以使用netstat -tlnp | grep <端口号>查看端口占用情况。
  • 日志信息:查看日志文件(如frps.log)中的错误信息,有助于定位问题,如果日志文件没有生成,请检查文件路径和权限是否正确。
  • 依赖问题:确保系统已安装所有必要的依赖包,对于CentOS系统,可以使用以下命令安装依赖:
    yum install wget pcre libssl-dev gcc make
    
    对于Ubuntu系统,则使用:
    apt install wget pcre libssl-dev gcc make
    
  • 权限问题:确保运行FRP的用户对配置文件和日志文件具有读写权限,如果没有,可以使用chmod命令修改权限:
    chmod 600 /path/to/config
    
  • 防火墙设置:检查防火墙设置,确保所需的端口已被开放,对于CentOS系统,可以使用firewall-cmd命令;对于Ubuntu系统,则使用ufw命令,开放7000端口的命令为:
    firewall-cmd --permanent --add-port=7000/tcp && firewall-cmd --reload
    
    ufw allow 7000/tcp
    
  • 网络问题:确保服务器能够正常访问互联网,并且内网主机也能够与服务器通信,如果存在网络问题,可以尝试ping服务器的公网IP或域名来测试连通性,还需要确认服务器所在的网络环境允许进行端口映射和内网穿透操作,如果有任何限制或禁止此类操作的规定,则需要联系网络管理员进行调整。

如果以上步骤都无法解决问题,建议查看官方文档或社区论坛寻求更多帮助,同时也可以提供更详细的错误信息以便他人协助诊断问题所在,另外需要注意的是不同的操作系统版本之间可能存在差异因此在实际操作过程中需要根据具体情况灵活调整解决方案,最后如果遇到无法解决的技术难题也可以考虑升级到最新版本的FRP软件或者更换其他类似的内网穿透工具以满足需求。

Q2: FRP客户端无法连接到服务器怎么办?

A2: 请检查以下几点:

  • 服务器地址和端口:确保在frpc.ini中配置的服务器地址和端口正确无误,可以通过ping命令测试服务器地址是否可达。
    ping <服务器IP>
    
    如果无法ping通,请检查服务器的网络连接是否正常以及是否有防火墙阻止了ICMP请求,此外还可以尝试使用traceroute命令追踪数据包的路径以帮助定位网络问题所在的位置。
  • 身份验证令牌:确保客户端和服务端的token值一致且正确无误,不一致的令牌会导致连接失败,可以在配置文件中核对双方的token值是否匹配,如果仍然有问题可以尝试重新生成一个新的令牌并在两端同步更新后再试一次连接操作看是否能成功建立连接关系,另外需要注意不要将令牌泄露给未经授权的人以防止潜在的安全风险发生。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号