Назад | Перейти на главную страницу

Статический маршрут в 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.

Добавление маршрута через скрипт initramfs не помогло. Не знаю почему.

Ответ в другом потоке сработал: Полное шифрование диска Ubuntu в Hetzner Cloud добавляет статический маршрут в initramfs

Открыть файл /usr/share/initramfs-tools/scripts/functions, ищите configure_networking() (около строки 412 в Ubuntu 18.04) и добавьте следующее непосредственно перед закрытием }:

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() {

Создайте небольшой вспомогательный скрипт, который настраивает вашу статическую маршрутизацию. В соответствии с руководство по initramfs-tools сценарии в / etc / initramfs-tools / scripts / nfs-premount выполняются после включения сетевого интерфейса, но вам может потребоваться поместить сценарий в другой подкаталог.

Вам нужно будет использовать ip route синтаксис, потому что AFAIK более старый 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.