利用frp构建公网转发节点实现内网SSH穿透
基础环境与依赖确认
部署反向代理隧道前,需确认以下基础设施已就绪:
- 具备外网访问能力的内部网络主机(本文演示基于 Ubuntu 发行版)。
- 分配有独立公网 IPv4 地址的云主机或虚拟专用服务器。
- 稳定的网络链路以维持长连接会话。
核心程序获取与目录规划
通过终端拉取官方发布的二进制归档,并完成解压与路径整理。此处采用流式下载工具获取资源:
curl -LO https://github.com/fatedier/frp/releases/download/v0.55.0/frp_0.55.0_linux_amd64.tar.gz
tar -zxvf frp_0.55.0_linux_amd64.tar.gz
mv frp_0.55.0_linux_amd64 /opt/frp
标准化后的工作目录包含以下核心组件:
/opt/frp/frps与/opt/frp/frps.toml:公网侧监听进程及其策略定义文件。/opt/frp/frpc与/opt/frp/frpc.toml:局域网侧代理客户端及其路由映射文件。
公网服务端部署流程
首先定义网关节点的通信参数。创建服务端配置文件 /etc/frp/server.toml:
bindPort = 8840
log.level = "info"
随后注册系统级守护进程。编写服务单元文件 /etc/systemd/system/nat-gateway.service:
[Unit]
Description=FRP Public Gateway Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/opt/frp/frps -c /etc/frp/server.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
完成文件放置后,重载初始化脚本并激活网关服务:
sudo systemctl daemon-reload
sudo systemctl enable --now nat-gateway
局域网客户端部署流程
在内部主机上编辑代理路由策略。新建配置文件 /etc/frp/client.toml:
serverAddr = "203.0.113.88"
serverPort = 8840
user = "lan-workstation-01"
[[proxies]]
name = "ssh-remote-tunnel"
type = "tcp"
localIP = "192.168.50.102"
localPort = 22
remotePort = 5022
构建客户端的系统服务单元 /etc/systemd/system/nat-client.service:
[Unit]
Description=FRP Intranet Proxy Client
After=network-online.target
[Service]
Type=simple
ExecStart=/opt/frp/frpc -c /etc/frp/client.toml
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
执行相同的系统服务注册与启动指令:
sudo systemctl daemon-reload
sudo systemctl enable --now nat-client
运行状态核验
服务加载后,可通过日志追踪指令确认控制通道握手结果:
journalctl -u nat-gateway -f
journalctl -u nat-client -f
当日志输出包含 login to server success 标识时,表明数据隧道已正常建立。服务端运行状态参考:
客户端运行状态参考:
远程接入与安全组策略
通道就绪后,任意外部终端均可通过公网节点的映射端口直连内网主机:
ssh -p 5022 admin_user@203.0.113.88
若连接请求持续超时,通常源于云厂商的虚拟防火墙未放行对应流量。需在网络控制台添加入站规则,显式允许 TCP 8840(信令交互)与 TCP 5022(业务转发)的入方向访问。