一、前置准备

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

二、在 Server 上部署 FRP 服务端

1、下载并解压 FRP

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

2、配置 frps.ini 文件

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

3、设置开机启动

  1. 创建 systemd 服务文件
sh
1sudo nano /etc/systemd/system/frps.service
  1. 添加以下内容到服务文件中,将 /path/to/frps 和 /path/to/frps.ini 替换为您实际的 FRP 服务端可执行文件和配置文件路径
ini
 1[Unit]
 2Description=FRP Server Service
 3After=network.target
 4
 5[Service]
 6Type=simple
 7User=root
 8ExecStart=/path/to/frps -c /path/to/frps.ini
 9Restart=on-failure
10
11[Install]
12WantedBy=multi-user.target
  1. 重新加载 systemd 配置
sh
1sudo systemctl daemon-reload
  1. 启动 FRP 服务端
sh
1sudo systemctl start frps
  1. 设置开机启动
sh
1sudo systemctl enable frps
  1. 检查服务状态
sh
1sudo systemctl status frps

以下输出表示正常运行:

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

三、在 Client 上部署 FRP 客户端

1、下载并解压 FRP

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

2、配置 frpc.ini 文件

  1. 使用 nano 或其他文本编辑器打开 frpc.ini
sh
1nano frpc.ini
  1. 编辑文件内容
ini
 1[common]
 2server_addr = <server_ip>    # 替换为Server公网ip
 3server_port = 7000
 4#
 5
 6[port1]
 7type = tcp
 8local_ip = 127.0.0.1    # 按需替换为设备内网ip
 9local_port = 22。  # ssh连接默认端口
10remote_port = 2002    # 选择一个Server上未被占用的端口
11
12[port2]
13type = tcp
14local_ip = 127.0.0.1
15local_port = 445    # SMB默认端口
16remote_port = 8888

注意:

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

3、启动 FRP 服务

  1. 创建一个新的服务文件:
sh
1sudo nano /etc/systemd/system/frpc.service
  1. 添加以下内容到服务文件中,注意将 /path/to/frpc 和 /path/to/frpc.ini 替换为您实际的 FRP 客户端可执行文件和配置文件路径:
ini
 1[Unit]
 2Description=FRP Client Service
 3After=network.target
 4
 5[Service]
 6Type=simple
 7User=root
 8ExecStart=/path/to/frpc -c /path/to/frpc.ini
 9Restart=on-failure
10
11[Install]
12WantedBy=multi-user.target
  1. 重新加载 systemd 服务
sh
1sudo systemctl daemon-reload
  1. 启动 frp 服务
sh
1sudo systemctl start frpc
  1. 设置开机启动
sh
1sudo systemctl enable frpc
  1. 检查服务状态
sh
1sudo systemctl status frpc

以下输出表示正常运行:

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

四、注意事项

1、防火墙设置

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

2、安全性设置

  • 在生产环境中,建议配置 FRP 的 TLS 加密和身份验证,以确保数据传输的安全性。
  • 在 frps.ini 和 frpc.ini 中添加认证和加密配置:
ini
 1# 在 frps.ini 中
 2[common]
 3bind_port = 7000
 4token = your_secure_token
 5
 6# 在 frpc.ini 中
 7[common]
 8server_addr = <server_public_ip>
 9server_port = 7000
10token = your_secure_token

3、端口占用

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