在 Linux 上使用 systemd-networkd 在同一个网卡上使用 dhcp 和静态 ip

在 Linux 上使用 systemd-networkd 在同一个网卡上使用 dhcp 和静态 ip

我有一个便携式设备,有时需要连接到互联网(进行更新),但大多数情况下会通过以太网电缆直接连接到笔记本电脑。我希望我的用户在连接到路由器时能够享受 dhcp ip 的即插即用优势,但在没有 dhcp 服务器时仍能够访问设备。

我基本上想这样做,但是使用 systemd-networkd: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth0:0 iface eth0:0 inet static address 192.168.0.130 netmask 255.255.255.0

我如何使用 systemd-networkd 实现这一点,有没有更好的方法来实现相同的结果?

答案1

您可以在网络接口上启用 DHCP,还可以设置其他 IPv4/IPv6 地址。

这是一个示例配置:/etc/systemd/network/eth0.network

[Match]
Name=eth0

[Network]
DHCP=yes

[Address]
Address=192.168.0.130/24

其结果是:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:8d:c0:32 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.130/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 86357sec preferred_lft 86357sec
    inet6 fe80::a00:27ff:fe8d:c04d/64 scope link 
       valid_lft forever preferred_lft forever

192.168.0.130是静态 IPv4,10.0.2.15来自 DHCP 的 IPv4。

答案2

您可以按如下方式配置dhclient.conf:

timeout 10;

lease {
interface "eth0";
fixed-address 10.0.0.10;
option subnet-mask 255.255.255.0;
}

interface "ep0" {
prepend domain-name-servers 10.0.0.1;
}

这会将您的 dhcp 配置为在 10 秒内未从 DHCP 服务器获取 IP 地址后超时,并在 /24 网络上提供地址 10.0.0.10。您还可以在配置中设置 DNS 服务器。以下是我从中获取此配置的手册页链接

http://www.freebsd.org/cgi/man.cgi?query=dhclient.conf&sektion=5&n=1

相关内容