initramfs 中的静态路由

initramfs 中的静态路由

不幸的是,我的托管服务提供商要求使用静态路由进行网络配置(网关与主机 IP 位于不同的子网)。为此,我在网络配置文件 (/etc/network/interfaces) 中添加了以下几行:

post-up route add -host 172.31.1.1 dev ens3 && route add default gw 172.31.1.1

为了使用 cryptsetup 解锁加密的根驱动器,我安装了 dropbear,这样我就可以通过 SSH 进入 busybox 来提供加密密码。但是,我还没有找到在 initramfs 配置文件中添加静态路由的方法。有人知道如何做到这一点吗?有问题的服务器运行的是 Ubuntu 16.04。

答案1

创建一个小型辅助脚本来配置静态路由。根据initramfs-tools 手册 /etc/initramfs-tools/scripts/nfs-premount 中的脚本在网络接口启用后执行,但您可能需要将脚本放在另一个子目录中。

您需要使用ip route语法,因为据我所知旧route命令将不可用:

#!/bin/sh 
# /etc/initramfs-tools/scripts/nfs-premount/static-routes

ip route add default via 172.31.1.1 dev ens3 

exit 0 

并确保脚本chmod 755 /etc/initramfs-tools/scripts/nfs-premount/static-routes在运行之前是可执行的()update-initramfs

答案2

通过 initramfs 脚本添加路由不起作用。不知道为什么。

另一个帖子中的答案有效:Hetzner Cloud 上的 Ubuntu 全盘加密在 initramfs 中添加静态路由

打开文件/usr/share/initramfs-tools/scripts/functions,搜索configure_networking()(Ubuntu 18.04 上第 412 行左右)函数并在结束之前直接添加以下内容}

ip route add ${IPV4GATEWAY}/${IPV4NETMASK} dev ${DEVICE}
ip route add default via ${IPV4GATEWAY} dev ${DEVICE}
diff -p /usr/share/initramfs-tools/scripts/functions{.orig,}
*** ./functions.orig    2019-03-27 14:00:57.685412556 +0000
--- ./functions 2019-03-27 13:59:09.758130638 +0000
*************** configure_networking()
*** 410,415 ****
--- 410,418 ----
                /run/net-${DEVICE}.conf /run/net-*.conf /run/net6-*.conf
        netinfo_to_netplan /run/netplan \
                /run/net-${DEVICE}.conf /run/net-*.conf /run/net6-*.conf
+
+         ip route add ${IPV4GATEWAY}/${IPV4NETMASK} dev ${DEVICE}
+         ip route add default via ${IPV4GATEWAY} dev ${DEVICE}
  }

  netinfo_to_resolv_conf() {

相关内容