当我的系统启动时,它应该检查给定接口(例如 eth0)是否可以进行 DHCP 配置,以及网络中是否存在 DHCP 服务器。如果是,则应使用 DHCP。如果不存在,则应使用预定义的静态 IP 地址。
- 我知道如何在启动时执行脚本
- 我知道如何指定接口/etc/网络/接口
我尝试使用 dhclient,例如
dhclient -1 # Try once to get a lease. One failure, exit with code 2.
看http://www.computerhope.com/unix/dhclient.htm
然而,即使根本没有可用的连接,dhclient 也总是返回“0”。
正确的方法是什么?
答案1
如果您的静态设置不会与任何内容发生潜在冲突,那么一个简单的选择就是设置网络别名。对于非别名连接,您可以将其配置为 DHCP,然后使用静态连接配置别名连接。这样,如果 DHCP 可用,则从技术上讲,两个连接都处于活动状态,大概只有 DHCP 连接真正“适用于”您正在使用的网络。如果 DHCP 不可用,它会自行分配一个 169 地址,并且不起作用,但静态别名可以。编辑后,不要忘记重新启动或重启服务。
/etc/network/interfaces 示例
auto eth0
allow-hotplug eth0
iface eth0 inet dhcpauto eth0
allow-hotplug eth0
iface eth0 inet dhcp
auto eth0:1
iface eth0:1 inet static
name Ethernet alias LAN card
address 192.168.1.7
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
详细信息请见此处:https://www.cyberciti.biz/faq/linux-creating-or-adding-new-network-alias-to-a-network-card-nic/