zhaxnb
Published on 2025-04-02 / 3 Visits
0
0

frp 初体验

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。


一、环境准备

下载

wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz

解压

tar -xzvf ./frp_0.61.2_linux_amd64.tar.gz

自启配置

  1. 创建 frps.service 文件

    使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

    $ sudo vim /etc/systemd/system/frps.service
    

    写入内容

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target
    
    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /path/to/frps -c /path/to/frps.toml
    
    [Install]
    WantedBy = multi-user.target
    
  2. 使用 systemd 命令管理 frps 服务

    # 启动frp
    sudo systemctl start frps
    # 停止frp
    sudo systemctl stop frps
    # 重启frp
    sudo systemctl restart frps
    # 查看frp状态
    sudo systemctl status frps
    
  3. 设置 frps 开机自启动

    sudo systemctl enable frps

二、公网服务器配置

  1. 安装并配置FRP服务端

下载对应版本的FRP(GitHub Release),配置frps.ini

[common]
bind_port = 7000              # 客户端与服务端通信的端口
vhost_http_port = 80          # HTTP虚拟主机端口(供Nginx反向代理)
token = your_token            # 客户端与服务端通信的凭证

启动frps

nohup ./frps -c frps.ini &> frps.log &
  1. 配置Nginx反向代理与SSL

编辑Nginx配置文件(如/etc/nginx/sites-available/public-domain.com),监听443端口并配置SSL证书:

server {
    listen 443 ssl;
    server_name public-domain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:80;  # 转发到frps的HTTP端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 80;
    server_name public-domain.com;
    return 301 https://$host$request_uri;  # 强制HTTP跳转HTTPS
}

重启Nginx:

systemctl restart nginx

三、内网客户端(Windows)配置

  1. 安装并配置FRP客户端

下载FRP客户端,配置frpc.ini

[common]
server_addr = 公网服务器IP
server_port = 7000
token = your_token

[web_proxy]
type = http
local_ip = 127.0.0.1
local_port = 8000          # 本地反向代理监听的端口
custom_domains = public-domain.com

启动frpc

.\frpc.exe -c frpc.ini
  1. 配置本地反向代理(Nginx)

在Windows上安装Nginx,配置监听8000端口并转发请求至目标网站:

server {
    listen 8000;
    location / {
        proxy_pass https://inner_site.com;  # 目标校园网HTTPS地址
        proxy_set_header Host inner_site.com;
        proxy_ssl_server_name on;            # 传递SNI信息
        proxy_ssl_verify off;                # 若目标证书为自签名,需关闭验证
    }
}

启动Nginx:

start nginx

相关链接


Comment