Я использовал Ubuntu 14.04 и 16.04, но теперь при установке новых или обновлении серверов до 18,04, обнаружился netplan.
Машины работают с DHCP, и у меня в настоящее время есть несколько сетевых сценариев, который работает на ifup для установки политик маршрутизации в отношении нескольких серверов интерфейсов и в отношении выхода dhclient для автоматической установки имени хоста.
Как я могу сделать это с Netplan? Я читал об установке статической маршрутизации от источника, но я хочу, чтобы она была динамично сделана от DHCP.
И для выхода dhclient, сделайте я должен использовать systemd-networkd
?
См. ниже сценарии.
/etc/network/if-up.d/source-route
#!/bin/sh
if [ "$METHOD" = loopback ]; then
exit 0
elif [ "$METHOD" = static ] || [ "$METHOD" = dhcp ]; then
IF_ADDRESS_IPv4="$(ip address show $IFACE | grep 'inet ' | awk '{print $2}' | cut -d '/' -f 1)"
IF_GATEWAY_IPv4="$(echo "$IF_ADDRESS_IPv4" | cut -d. -f1-3).1"
ip route flush table "T$IFACE"
ip route add default via "$IF_GATEWAY_IPv4" dev "$IFACE" table "T$IFACE"
ip rule add from "$IF_ADDRESS_IPv4" lookup "T$IFACE"
fi
/etc/dhcp/dhclient-exit-hooks.d/set-fqdn-hostname
#!/bin/sh
# dhclient change hostname script for Ubuntu
# /etc/dhcp/dhclient-exit-hooks.d/set-fqdn-hostname
# logs to syslog
logger --id=$$ -t dhclient-tlmat "set-fqdn-hostname: BEGIN"
logger --id=$$ -t dhclient-tlmat "set-fqdn-hostname: reason $reason"
if [ $reason = "RENEW" ] || [ $reason = "REBOOT" ] || [ $reason = "REBIND" ] || [ $reason = "BOUND" ]; then
echo $new_host_name > /etc/hostname
logger --id=$$ -t dhclient-tlmat "set-fqdn-hostname: hostname $new_host_name.$new_domain_name"
hostname $new_host_name.$new_domain_name
fi
logger --id=$$ -t dhclient-tlmat "set-fqdn-hostname: END"
Для запущения скриптов после, сетевой интерфейс поднят networkd, можно добавить их к/usr/lib/networkd-dispatcher/routable.d каталог.