驱动数字化 质变

从权威的技术洞察,到精准的软硬配置,为企业的每一次转型提供决策支持。

架构师笔记
告别 TeamViewer!用 Tailscale + 边缘网关实现 PLC “零信任”远程调试 (含路由配置)

2026-01-22 13:19:00

#远程运维 #Tailscale #WireGuard #PLC调试 #零信任 #内网穿透


一、 场景痛点:端口映射是“安全自杀”

在 2026 年,很多集成商为了省钱,依然在做危险操作:

  • 现状:为了让出差的工程师能修改工厂里的西门子 S7-1500 程序,直接在 4G 路由器的防火墙上把 Port 102 (S7协议) 映射到公网 IP。

  • 后果

  1. 被扫爆:Shodan 搜索引擎能在 15 分钟内发现这个暴露的 PLC。

  2. 勒索病毒:黑客通过 PLC 漏洞渗透进内网,导致全厂停工勒索比特币。

  3. IP 冲突:工厂局域网是 192.168.1.x,工程师家里的 Wi-Fi 也是 192.168.1.x,VPN 连上了也通不了(网段冲突)。

架构师指令严禁端口映射


我们要实现的是 “Site-to-Site” 级的虚拟组网。不仅要安全,还要解决网段冲突,且不需要公网 IP。


二、 架构设计:Subnet Router (子网路由)

我们不需要在 PLC 上安装任何软件(PLC 也装不了)。


我们利用连接 PLC 的 Linux 边缘网关(如树莓派、RK3568、x86工控机)作为“跳板机” (Subnet Router)。

  • 原理:网关运行 Tailscale,宣称自己拥有工厂网段(如 10.0.50.0/24)的路由权。

  • 效果:工程师在家里打开笔记本的 Tailscale 客户端,直接 Ping 10.0.50.5 (PLC IP),流量会自动经过加密隧道,由工厂网关转发给 PLC。

拓扑图


工程师笔记本 (Tailscale Client) <--(加密隧道/NAT穿透)--> 工厂网关 (Tailscale Router) <--(局域网)--> PLC/HMI


三、 核心实施步骤 (Copy & Paste)

假设工厂网关运行的是 Ubuntu/Debian,内网 IP 为 192.168.1.10,PLC IP 为 192.168.1.5。

1. 开启 Linux 内核转发 (IP Forwarding)

这是 90% 的人失败的原因。Linux 默认不转发流量,必须开启。


Bash
# 临时生效
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf


2. 安装并启动 Tailscale


Bash
curl -fsSL https://tailscale.com/install.sh | sh


3. 关键配置:通告子网路由 (Advertise Routes)

启动 Tailscale,并告诉控制台:“把发往 192.168.1.0/24 的流量都交给我”。


Bash
# 启动并广播路由
sudo tailscale up --advertise-routes=192.168.1.0/24 --accept-routes



4. 控制台授权 (Admin Console)

登录 Tailscale 网页控制台:

  1. 找到这台网关设备。

  2. 点击 "Edit route settings"

  3. 打开 "Subnet routes" 开关。

  4. (可选) 禁用 Key Expiry:防止 180 天后密钥过期导致断连。

5. 工程师端连接

工程师在自己的 Windows/Mac 上安装 Tailscale 并登录。


此时,打开 TIA Portal 或 GX Works,直接输入 PLC 的局域网 IP 192.168.1.5,即可像在现场一样下载程序。


四、 踩坑复盘 (Red Flags)

1. 经典的“网段冲突” (IP Conflict)

  • 现象:工厂用 192.168.1.x,工程师家里也用 192.168.1.x。VPN 连上了,但电脑不知道 192.168.1.5 到底是家里的打印机还是工厂的 PLC。

  • 对策

    • 架构规范严禁在工厂使用 .0.x, .1.x, .31.x 等家用常见网段

    • 补救措施:如果改不了工厂 IP,可以使用 Tailscale 的 "4via6" 功能(高级 NAT),把工厂 IP 映射为一个全新的虚拟 IP 段。

2. 广播/多播失效 (Broadcast/Multicast)

  • 现象:博途 (TIA Portal) 的“搜索设备”功能找不到 PLC。

  • 原因:Tailscale 是三层 VPN(基于 IP),不支持二层广播(基于 MAC)。

  • 对策直接输入 IP 连接。大多数工业软件(如 WinCC, Kepware)都支持指定 IP。如果必须用二层发现(如 PROFINET 设置名称),只能上更复杂的 VxLAN 方案或派人去现场。

3. ACL 权限失控

  • 风险:一旦开启子网路由,工程师能访问该网段下的所有设备(包括财务电脑)。

  • 对策:在 Tailscale 控制台配置 ACL (Access Control Lists) JSON,只允许特定用户访问特定 IP + Port (102)。


五、 关联资源与选型

Tailscale 是用户态 VPN,对 CPU 性能有一定要求(加密解密消耗)。

  • 硬件推荐

    • NanoPi R4S / R6S:双网口神器,做纯 VPN 网关性能极佳,能跑满 500Mbps 宽带。


    • 倍福 (Beckhoff) CX 系列:如果现场已有倍福控制器(Windows/BSD),可直接安装 Tailscale Windows 版作为网关,省去额外硬件。



一键配置脚本

总是忘记 sysctl 命令?


我们编写了一个 Shell 脚本,自动检测系统环境、开启转发、安装 Tailscale 并配置看门狗(防止 VPN 进程挂掉)。