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