第3章:Linux系统环境搭建——Ubuntu Server 22.04 LTS安装、网络配置与SSH远程管理

工控网关这东西,说白了就是个“翻译官”。一头连着Modbus RTU/ASCII的现场总线,另一头要跟OPC UA服务器对话。操作系统选什么?我个人习惯是Ubuntu Server 22.04 LTS。为什么?稳定、驱动全、社区活跃,而且工控项目一跑就是三五年,LTS版本刚好对味。

这一章咱们就把底子打好。别小看安装和配置,我在现场见过太多因为系统装得马虎,后面调试抓狂的案例。嗯,咱们一步步来。

3.1 安装前的准备工作

先列个清单,省得到时候手忙脚乱。

项目 推荐配置 说明
CPU x86_64,双核以上 ARM架构也行,但驱动兼容性要提前验证
内存 ≥ 4GB 跑OPC UA Server + 数据库,4GB是底线
硬盘 ≥ 64GB SSD 工控日志增长很快,建议分区时预留/var空间
网络 双网卡 一张接工厂内网(Modbus),一张接办公网(OPC UA)
USB口 至少2个 一个插安装U盘,一个留给USB转485调试器
我的经验: 别用虚拟机跑生产环境的工控网关。延迟和稳定性差太多。我见过有人用VMware跑Modbus轮询,结果虚拟机快照回滚把串口映射搞丢了,现场停了两个小时。

3.2 安装Ubuntu Server 22.04 LTS

下载ISO镜像,用Rufus或balenaEtcher写进U盘。启动后你会看到一个紫色的安装界面。这里有几个关键点,我踩过坑,你注意一下。

3.2.1 语言与键盘布局

选English。别选中文。为什么?因为终端报错信息、日志文件、脚本路径全是英文,你选中文后有些工具会乱码。键盘布局选English (US),除非你确定现场用的是德式或法式键盘。

3.2.2 磁盘分区策略

我建议手动分区。自动分区会把所有空间给根分区,万一日志写满,系统直接挂掉。

# 推荐分区方案(64GB SSD为例)
/boot      → 1GB    (ext4)
/          → 20GB   (ext4)
/var       → 30GB   (ext4)   # 日志、数据库、OPC UA历史数据
swap       → 4GB    (交换分区,内存不够时保命用)
注意: 工控网关的/var分区一定要大。我曾经遇到一个项目,OPC UA历史数据每天增长500MB,默认分区一周就满了。系统直接拒绝写入,现场数据全丢了。

3.2.3 软件包选择

安装时只选“OpenSSH server”和“Standard system utilities”。别勾“Ubuntu Desktop”或“Docker”之类的,后面咱们手动装,更可控。

3.3 网络配置——双网卡隔离

工控网关最核心的网络设计就是“物理隔离”。一张网卡接工厂控制网(Modbus TCP/RTU),另一张接管理网(OPC UA客户端访问)。

Ubuntu Server 22.04默认用Netplan管理网络。配置文件在/etc/netplan/下,一般是00-installer-config.yaml。

3.3.1 查看网卡名称

ip link show
# 常见名称:enp0s3(NAT)、enp0s8(桥接)、enp0s9(内部网络)

3.3.2 配置示例(双网卡静态IP)

# /etc/netplan/00-installer-config.yaml
network:
  version: 2
  ethernets:
    enp0s3:          # 接工厂控制网(Modbus侧)
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
    enp0s8:          # 接管理网(OPC UA侧)
      dhcp4: no
      addresses:
        - 10.0.0.100/24
      # 注意:这张网卡不设网关,避免路由冲突
关键点: 管理网网卡不要配gateway4。否则系统会通过管理网去访问外网,工厂控制网的数据包可能走错路。我见过一个项目,Modbus TCP请求因为路由混乱,延迟从2ms飙到200ms。

配置完执行:

sudo netplan apply

验证一下:

ip addr show
ping -c 3 192.168.1.1   # 测试控制网网关
ping -c 3 10.0.0.1      # 测试管理网网关(如果有)

3.4 SSH远程管理——安全第一

工控网关通常放在机柜里,没显示器没键盘。SSH是你唯一的窗口。但默认配置太危险,咱们得加固一下。

3.4.1 安装与启动

安装时如果没选OpenSSH server,现在补上:

sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh

3.4.2 安全加固(必做)

编辑/etc/ssh/sshd_config,改这几个参数:

参数 推荐值 说明
Port 2222(或其他非标准端口) 别用22,扫描器第一个扫的就是22
PermitRootLogin no 禁止root直接登录,用普通用户+sudo
PasswordAuthentication no 关闭密码登录,只用密钥
PubkeyAuthentication yes 开启密钥认证
AllowUsers 你的用户名 只允许特定用户登录
避坑指南: 改Port之前,先确保防火墙放行了新端口。我曾经在远程机房改完端口忘了开防火墙,结果SSH断开了,人进不去。最后只能让现场同事用IPMI接显示器改回来。尴尬。

3.4.3 配置密钥登录

在客户端生成密钥对:

ssh-keygen -t ed25519 -C "工控网关密钥"
# 一路回车,生成 ~/.ssh/id_ed25519 和 id_ed25519.pub

把公钥传到网关:

ssh-copy-id -p 2222 用户名@网关IP
# 或者手动复制:
cat ~/.ssh/id_ed25519.pub | ssh -p 2222 用户名@网关IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

测试登录:

ssh -p 2222 用户名@网关IP

如果一切正常,再回去把PasswordAuthentication改成no,然后重启SSH服务:

sudo systemctl restart ssh

3.5 本章知识体系

下面这张图把咱们这一章的核心逻辑串起来了。你保存下来,以后部署新网关时对照着做。

Linux工控网关环境搭建流程 Linux工控网关环境搭建核心流程 1. 硬件与镜像准备 2. Ubuntu Server安装 3. 双网卡网络配置 4. SSH安全加固 硬件清单 • CPU: x86_64 双核+ • 内存: ≥4GB • 硬盘: ≥64GB SSD • 双网卡 安装要点 • 语言选English • 手动分区 • /var分区≥30GB • 仅选OpenSSH + 标准工具 Netplan配置 • 控制网: 静态IP+网关 • 管理网: 静态IP无网关 • 物理隔离 • 避免路由冲突 SSH加固清单 • 改端口、禁root、密钥登录 • 先开防火墙再改配置 最终目标 一个安全、稳定、可远程 维护的工控网关底座

3.6 验证与测试

装完别急着跑。做几个快速验证,确保环境没问题。

  1. 网络连通性: 从网关ping一下Modbus设备的IP,再ping一下OPC UA客户端的IP。两边都能通才算合格。
  2. SSH远程登录: 从你的笔记本用密钥登录网关,确认能正常执行sudo命令。
  3. 磁盘空间: df -h检查分区挂载是否正确,特别是/var。
  4. 系统更新: sudo apt update && sudo apt upgrade -y,把内核和补丁打上。
小技巧: 装完系统后,我习惯立刻拍一张“初始状态”的快照(如果是物理机,用Clonezilla备份整个磁盘)。以后系统崩了,直接恢复,不用重头再来。