通过脚本进行 Netplan 源路由

通过脚本进行 Netplan 源路由

我曾经使用过 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" 

答案1

要在 networkd 启动网络接口后运行脚本,您可以将它们添加到 /usr/lib/networkd-dispatcher/routable.d 目录。

相关内容