一、前置准备
- 1 台有公网 ip 的 vps/服务器:Linux(Server)
- 1 台需要进行穿透的内网机器:Linux(Client)
二、在 Server 上部署 FRP 服务端
1、下载并解压 FRP
- 从 FRP GitHub Releases 查看最新版本的 FRP
- 进入想要下载到的文件夹
- 下载并解压对应文件夹并重命名,注意把示例中的文件名改成对应的文件名
sh
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
sh
1echo -e "[common]\nbind_port = 7000" > frps.ini
3、设置开机启动
- 创建 systemd 服务文件
sh
sh
1sudo nano /etc/systemd/system/frps.service
- 添加以下内容到服务文件中,将 /path/to/frps 和 /path/to/frps.ini 替换为您实际的 FRP 服务端可执行文件和配置文件路径
ini
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
- 重新加载 systemd 配置
sh
sh
1sudo systemctl daemon-reload
- 启动 FRP 服务端
sh
sh
1sudo systemctl start frps
- 设置开机启动
sh
sh
1sudo systemctl enable frps
- 检查服务状态
sh
sh
1sudo systemctl status frps
以下输出表示正常运行:
text
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
- 从 FRP GitHub Releases 查看最新版本的 FRP
- 进入想要下载到的文件夹
- 下载并解压对应文件夹并重命名,注意把示例中的文件名改成对应的文件名
sh
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 文件
- 使用 nano 或其他文本编辑器打开 frpc.ini
sh
sh
1nano frpc.ini
- 编辑文件内容
ini
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
注意:
<server_ip>
改成服务器 ip 地址127.0.0.1
按需改为客户端的内网 ip 地址local_port
是内网机器需进行代理的端口remote_port
是 Server 上访问内网服务的端口,需要是未占用的端口- 需要代理几个就加入几个这样的块
ini
ini
1[service name]
2type = tcp
3local_ip = 127.0.0.1
4local_port = <client_port>
5remote_port = <server_port>
3、启动 FRP 服务
- 创建一个新的服务文件:
sh
sh
1sudo nano /etc/systemd/system/frpc.service
- 添加以下内容到服务文件中,注意将 /path/to/frpc 和 /path/to/frpc.ini 替换为您实际的 FRP 客户端可执行文件和配置文件路径:
ini
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
- 重新加载 systemd 服务
sh
sh
1sudo systemctl daemon-reload
- 启动 frp 服务
sh
sh
1sudo systemctl start frpc
- 设置开机启动
sh
sh
1sudo systemctl enable frpc
- 检查服务状态
sh
sh
1sudo systemctl status frpc
以下输出表示正常运行:
text
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
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、端口占用
- 确保在内网机器和外网服务器上所使用的端口没有被其他应用占用