第一阶段:先把路由器离线配置好

在不把上游网线接入 WAN 的情况下,先完成 R5408 的静态 WAN、LAN 与 DHCP:

  • WAN 使用原服务器的已授权上游地址、原有网关和掩码;
  • LAN 使用独立私网(本例 192.168.50.0/24);
  • DHCP 池避开服务器静态地址,防止新旧设备在上游同时争用同一个 IP。

随后在「虚拟服务器」中增加端口映射(清单见上一篇)。

第二阶段:Ubuntu 从固定上游 IP 迁移到私网

这台机器的网卡是 Intel X550,日常服务网卡为 eno2,系统使用 systemd-networkd, 有效配置由 Netplan 生成。一个有意思的小坑:普通用户一开始看不到 /etc/netplan/, 切换到有权限的账号后,才找到真正的源文件 /etc/netplan/50-cloud-init.yaml;运行时生成的 /run/systemd/network/10-netplan-eno2.network 并不适合直接修改。

迁移前确认了三件事:NetworkManager 为 inactive、systemd-networkd 为 active、 cloud-init status 为 disabled。先备份源配置,再更改地址和网关。Netplan 片段如下 (仅为最小示例):

network:
  version: 2
  renderer: networkd
  ethernets:
    eno2:
      dhcp4: false
      addresses:
        - 192.168.50.10/24
      routes:
        - to: default
          via: 192.168.50.1
      nameservers:
        addresses: [223.5.5.5, 8.8.4.4]

注意:DNS 只是该次实验采用的候选公共解析器,是否可用取决于上游策略。cloud-init 可能在其他机器上重生成网络配置,本例确认其已禁用,不应照抄这个前提。

输入 sudo netplan generate 检查语法,不要仅仅因语法正确就远程执行 netplan apply。 现场把服务器接至 R5408 LAN,用本地控制台运行 sudo netplan try:等待确认提示时按 Enter 接受;如果配置失败或未确认则自动回退。这比在唯一 SSH 会话中强制切换安全得多。

迁移步骤与验证顺序

随后验证:ping -c 4 192.168.50.1 四包全收、丢包率 0%;ip -4 addr show eno2 显示 新私网地址。接上上游 WAN 后,服务器对旧网关的 Ping 也四包全收——基础三层链路建立。

第三阶段:原 SSH 地址还能用吗?

能,但验证方法要分清楚。Ubuntu 上 sshd 同时监听 0.0.0.0:22 和 IPv6 监听地址; UFW 未启用,INPUT 默认 ACCEPT。Tailscale 还装有自己的 ts-input 链,其源地址限制并不 会直接拦截普通 192.168.50.0/24 来源。注意这只证明已检查的链路,没有证明所有 nftables/容器规则都不存在。

实际完成切换后,分别从上游网络与 NAT 侧发起 SSH,两个会话均成功进入同一台 Ubuntu, 服务器自身仍显示新私网地址。也就是说:既保留了上游沿用的旧 SSH 入口,又验证了内部经 原 WAN 地址访问时的 NAT 回环。

经过重写的终端摘要(只保留关键结论):

Ubuntu eno2: 192.168.50.10/24
Gateway test: 4 transmitted, 4 received, 0% loss
SSH server: listening on 0.0.0.0:22
Client #1: upstream network  -> A:22 -> login successful
Client #2: inside NAT        -> A:22 -> login successful
Outbound test: 6 transmitted, 6 received, 0% loss

这套流程值得记住的三条教训

  1. 把「服务器地址」与「服务入口地址」分开考虑。固定 IP 看似不能动,其实可以由 网关接管,再用 DNAT 保留已有服务入口,但这不等同于全协议透明桥接。
  2. 永远从服务可回退的方向迁移网络:备份 Netplan、离线配置路由器、先测内网、 再接 WAN、最后做外部和回环验证。远程科研服务器必须把本地控制台或维护窗口当成 必要条件。
  3. 能 Ping 通网关不等于所有业务可用;SSH 成功也不意味着 HTTPS、API、DNS、 Docker 与 Tailscale 都完成了端到端验收。本文的验收状态里,DNS/HTTPS/API 与无线 漫游策略仍标注「尚未逐项完整记录」。

下一篇:迁移后顺带发现的一个老问题——八芯全通的网线为什么只协商到百兆。