Refor Blog

Linux 使用 frp 实现内网穿透,配置 systemd 自启动

发布日期:

环境

  • 服务端:可外网访问的 Debian 服务器
  • 客户端:Ubuntu 本地设备
  • frp 文件统一放在 /opt 目录,以下操作使用 root 用户

下载 frp

frp GitHub Releases 下载对应版本,服务端和客户端共用同一个包:

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
tar xf frp_0.44.0_linux_amd64.tar.gz

服务端配置

1. 部署文件

/opt 下新建 frp 目录,将 frps 可执行文件复制进去。

2. 创建配置文件 /opt/frp/frps.ini

[common]
bind_port = 7000
# token 改成自己的
token = 12345678

3. 创建 systemd 服务 /lib/systemd/system/frps.service

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

4. 启用并启动服务

systemctl daemon-reload
systemctl enable frps
systemctl start frps

客户端配置

1. 部署文件

/opt/frp 目录下,将 frpc 可执行文件复制进去。

2. 创建配置文件 /opt/frp/frpc.ini

[common]
# 填写服务器 IP
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
# token 要和服务器一致
token = 12345678

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

3. 创建 systemd 服务 /lib/systemd/system/frpc.service

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
ExecReload=/opt/frp/frpc reload -c /opt/frp/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

4. 启用并启动服务

systemctl daemon-reload
systemctl enable frpc
systemctl start frpc

配置完成后,在外部网络通过 服务器IP:7001 即可访问内网的 SSH 服务。更多穿透示例参见 frp 官方文档