服务器-frp内网穿透部署

pepper 2025-11-14

这篇博客介绍了在Ubuntu22.04上部署frp-0.48.0内网穿透服务。

内网穿透允许我们在公共网络中安全地访问位于私有网络中的设备。其中一种常用的实现方式是使用frp(Fast Reverse Proxy)工具。frp是一个开源的内网穿透工具,它提供了简单而强大的功能,可以帮助我们轻松地实现内网穿透,让我们能够方便地访问内网资源。

服务端(公网IP服务器)

  1. 下载frp frp-0.48.0的下载地址为:fatedier/frp/releases/tag/vv0.65.0

    #直接使用weget命令,使用github加速镜像
    wget https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
    

    FinRpt Framework Diagram

  2. 将文件上传至服务器

    将下载的frp的.tar.gz文件传到服务器中(建议使用xftp)

    # 在服务器中使用下面的命令解压.tar.gz文件
    tar -zxvf frp_0.65.0_linux_amd64.tar.gz
    

    将解压后的文件夹移动到/root/目录下

    # 移动到root目录下
    sudo mv frp_0.48.0_linux_amd64/ /root/frp
    
    # 将文件夹以及其子文件权限设置为仅root可读可写
    sudo chmod -R 700 frp
    
    # 将文件夹与其子文件的拥有者设置为root用户
    sudo chown -R root:root frp
    
  3. frps配置

    为了方便起见,以下配置需要切换到root用户,用sudo也可行。

    # 进入到frp目录
    cd /root/frp
    # 编辑frps的配置文件
    nano frps.ini
    

    下面是frps服务器端的配置文件的参考,虚线中间的端口用户名密码请根据自己的需求更改

    
    [common]
    # --------------------------------------------------------------------------------------
    # bind_port为frps和frpc通信的端口,需要在防火墙中放行该端口
    bind_port = 80001
    # dashboard_port 网页界面的端口,在网页中输入ip:dashboard_port,可以查看frpc的连接情况
    dashboard_port = 80002
    # frps的连接密码,这里需要和frpc.ini文件中的token保持一致
    token = password
    
    # 80002端口下的dashboard网页用户名密码,用来作为管理界面
    dashboard_user = user
    dashboard_pwd = password
    # --------------------------------------------------------------------------------------
    
    max_pool_count = 50
    log_file = /root/frp/logs/frps.log
    log_level = info
    log_max_days = 10
    # 我这里打开了tls加密,根据个人情况决定是否要开
    tls_only = true
    
  4. 设置开机自启动

     # 先打开服务文件
     cd /etc/systemd/system/
     nano frps.service
    
     # 将下面内容写入到frps.service
     [Unit]
     Description=Frp Server Service
     After=network.target
    
     [Service]
     Type=simple
     User=root
     Restart=on-failure
     RestartSec=5s
     ExecStart=/root/frp/frps -c /root/frp/frps.ini
     ExecReload=/root/frp/frps -c /root/frp/frps.ini
     LimitNOFILE=1048576
    
     [Install]
     WantedBy=multi-user.target
    
  5. 保存后执行下面命令启动开机自启动

    # 修改完一次配置文件,就需要reload一下
    systemctl daemon-reload
    # 打开服务
    systemctl start frps.service
    # 暂停服务
    systemctl stop frps.service
    # 设置开机自启动
    systemctl enable frps.service
    ## 最后一定要检查一下服务是否打开
    systemctl status frps.service
    

客户端(windows/ubuntu)

  1. 安装frp文件同上

  2. 切换到root用户,编辑frpc的配置文件,这里修改client的配置

    # 进入到frp目录
    cd /root/frp
    # 编辑frpc的配置文件
    nano frpc.ini
    
  3. 编辑frpc的配置文件。

    [common]
    # 比如域名baidu.com / 它对应ip 180.101.49.11
    server_addr = 你的服务器的IP地址(如果是动态IP,使用ddns的域名也行)
    # server_port和frps中的bind_port对应
    # 即由于服务器上在端口80001开启了服务,所以你需要请求80001
    server_port = 80001
    # 与frps配置文件中的token对应,这个用来校验身份
    token =  password
    tls_enable = true
    
    # 第一个服务类型为tcp的ssh远程连接
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    # 下面的remote_port端口需要在部署frps的服务器中放行该端口
    # 即我本地的22端口映射到公网服务器上的remote端口,服务器要打开这个端口,区分上面的服务端口80001
    remote_port = 2222
    
    # 第二个服务类型为udp的windows远程桌面连接,可以注释掉
    [windows_remote]
    type = udp
    # 穿透的主机不仅局限于本机,这个地方我还不太明白
    local_ip = 192.168.123.100
    local_port = 3389
    # 需要在部署frps的服务器中放行3389端口
    remote_port = 3389
    

补充一下: 一台 FRP 服务器 + 两个客户端(完美方案),我们保持[common]不要变。

核心规则其他如下

  • 一台服务器足够,不用多开
  • 两个客户端的 代理名字不能重复 [pc1_ssh] [pc2_ssh]
  • 两个客户端的 端口不能重复 remote_port = 10001 # 端口1 remote_port = 10002 # 不同端口,注意在服务器上面打开那两个端口,命令如下ufw allow 10001/tcp ufw allow 10002/tcp
  • 服务端完全不用改!直接通用。

当客户端是wsl里面的ssh

  • 注意wslssh服务已经打开,并且检查wslssh服务端口,一般不是22,可能被我们修改为了8022也有可能,所以要注意检查。
  • 检查安装指令
    • apt install openssh-server -y 安装ssh
    • service ssh start 开启服务
    • systemctl status ssh 查看状态
  • 如果还要开启rdp的服务,一般wsl是没有这个服务的,所以在local_ip 处修改为 host.docker.internal,这个需要尝试。
  1. 客户端启动frpc服务

    cd /etc/systemd/system/
    nano frpc.service
    

    将下面的内容写入到frpc.service

    [Unit]
    Description=Frp Client Service
    After=network.target
    
    [Service]
    Type=simple
    User=root
    Restart=on-failure
    RestartSec=5s
    ExecStart=/root/frp/frpc -c /root/frp/frpc.ini
    ExecReload=/root/frp/frpc -c /root/frp/frpc.ini
    LimitNOFILE=1048576
    
    [Install]
    WantedBy=multi-user.target
    
  2. 保存后执行下面命令启动开机自启动

    systemctl daemon-reload
    systemctl start frpc.service
    # 修改完配置 需要restart
    systemctl restart frpc.service
    systemctl enable frpc.service
    
    # 注意最后检查是否与服务器实现通信
    systemctl status frpc.service
    

    FinRpt Framework Diagram

至此完成所有步骤.