一、前置准备

  1. 1 台有公网 ip 的 vps/服务器:Linux(Server)
  2. 1 台需要进行穿透的内网机器:Linux(Client)

二、在 Server 上部署 FRP 服务端

1、下载并解压 FRP

  1. FRP GitHub Releases 查看最新版本的 FRP
  2. 进入想要下载到的文件夹
  3. 下载并解压对应文件夹并重命名,注意把示例中的文件名改成对应的文件名
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -xzf frp_0.58.0_linux_amd64.tar.gz
mv frp_0.58.0_linux_amd64 frp
cd frp

2、配置 frps.ini 文件

echo -e "[common]\nbind_port = 7000" > frps.ini

3、设置开机启动

  1. 创建 systemd 服务文件
sudo nano /etc/systemd/system/frps.service
  1. 添加以下内容到服务文件中,将 /path/to/frps 和 /path/to/frps.ini 替换为您实际的 FRP 服务端可执行文件和配置文件路径
[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/path/to/frps -c /path/to/frps.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 配置
sudo systemctl daemon-reload
  1. 启动 FRP 服务端
sudo systemctl start frps
  1. 设置开机启动
sudo systemctl enable frps
  1. 检查服务状态
sudo systemctl status frps

以下输出表示正常运行:

● frpc.service - FRP Server Service
   Loaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2023-05-23 14:28:50 UTC; 2min 25s ago
 Main PID: 12345 (frpc)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/frps.service
           └─12345 /path/to/frps -c /path/to/frps.ini

三、在 Client 上部署 FRP 客户端

1、下载并解压 FRP

  1. FRP GitHub Releases 查看最新版本的 FRP
  2. 进入想要下载到的文件夹
  3. 下载并解压对应文件夹并重命名,注意把示例中的文件名改成对应的文件名
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -xzf frp_0.58.0_linux_amd64.tar.gz
mv frp_0.58.0_linux_amd64 frp
cd frp

2、配置 frpc.ini 文件

  1. 使用 nano 或其他文本编辑器打开 frpc.ini
nano frpc.ini
  1. 编辑文件内容
[common]
server_addr = <server_ip>    # 替换为Server公网ip
server_port = 7000
#

[port1]
type = tcp
local_ip = 127.0.0.1    # 按需替换为设备内网ip
local_port = 22。  # ssh连接默认端口
remote_port = 2002    # 选择一个Server上未被占用的端口

[port2]
type = tcp
local_ip = 127.0.0.1
local_port = 445    # SMB默认端口
remote_port = 8888

注意:

  1. <server_ip>改成服务器 ip 地址
  2. 127.0.0.1按需改为客户端的内网 ip 地址
  3. local_port是内网机器需进行代理的端口
  4. remote_port是 Server 上访问内网服务的端口,需要是未占用的端口
  5. 需要代理几个就加入几个这样的块
[service name]
type = tcp
local_ip = 127.0.0.1
local_port = <client_port>
remote_port = <server_port>

3、启动 FRP 服务

  1. 创建一个新的服务文件:
sudo nano /etc/systemd/system/frpc.service
  1. 添加以下内容到服务文件中,注意将 /path/to/frpc 和 /path/to/frpc.ini 替换为您实际的 FRP 客户端可执行文件和配置文件路径:
[Unit]
Description=FRP Client Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/path/to/frpc -c /path/to/frpc.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 服务
sudo systemctl daemon-reload
  1. 启动 frp 服务
sudo systemctl start frpc
  1. 设置开机启动
sudo systemctl enable frpc
  1. 检查服务状态
sudo systemctl status frpc

以下输出表示正常运行:

● frpc.service - FRP Client Service
   Loaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2023-05-23 14:28:50 UTC; 2min 25s ago
 Main PID: 12345 (frpc)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/frpc.service
           └─12345 /path/to/frpc -c /path/to/frpc.ini

四、注意事项

1、防火墙设置

  • 确保内网机器上local_port开放。
  • 确保服务器的防火墙允许 FRP 服务端口(7000)和remote_port的访问。

2、安全性设置

  • 在生产环境中,建议配置 FRP 的 TLS 加密和身份验证,以确保数据传输的安全性。
  • 在 frps.ini 和 frpc.ini 中添加认证和加密配置:
# 在 frps.ini 中
[common]
bind_port = 7000
token = your_secure_token

# 在 frpc.ini 中
[common]
server_addr = <server_public_ip>
server_port = 7000
token = your_secure_token

3、端口占用

  • 确保在内网机器和外网服务器上所使用的端口没有被其他应用占用