DHCP和静态IP地址同时在一个接口上

我们可以在Linux中为单个接口使用多个IP地址(eg. eth0:0, eth0:1) 。 但是我们可以同时使用DHCP和静态IP吗? eth0:1应具有静态IP地址,并且应使用DHCP配置eth0:0

我们怎样才能完成两者?

是的,这可以做到。 但是,通常使用eth0和eth0:0代替eth0:0和eth0:1。 您可以像这样设置/ etc / network / interfaces文件:

 auto lo eth0 eth0:0 iface lo inet loopback iface eth0 inet dhcp iface eth0:0 inet static address ... netmask ... 

您可能不希望在eth0:0接口上设置网关,因为这可能与您从DHCP获得的网关设置冲突。 如果在/ etc / network / interfaces中输入手动设置,则需要确保网络管理员不会尝试管理您的设置。 这包括在内 。

经过深入搜索同一问题的答案后,我找到了一个解决方案,让Network Manager继续管理您的连接。 首先,使用“编辑连接”>“添加”在网络管理器中正常创建DHCP连接。 这将创建一个位于/ etc / NetworkManager / system-connections /中的文件。 使用超级用户权限在文本编辑器中打开此文件。 示例: sudo nano / etc / NetworkManager / system-connections / DHCPEthernet

代码看起来像这样:

 [802-3-ethernet] duplex=full mac-address=00:0E:C6:88:31:43 [connection] id=DHCPEthernet uuid=26af83f1-c48c-4454-9038-bbb4bec3e3a3 type=802-3-ethernet timestamp=1405008541 [ipv6] method=auto [ipv4] method=auto 

在ipv4部分下添加一行,以获取要添加的静态IP地址。 我在这个例子中使用192.168.10.1而没有网关

 address1=192.168.10.1/24,0.0.0.0 

保存文件,然后使用网络管理器断开连接,然后重新连接到网络。 Ping将确认两个IP地址都能正常运行。 ip addr的输出证实了成功。

 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 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: wlan0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 14:10:9f:d7:22:0b brd ff:ff:ff:ff:ff:ff inet 172.20.1.71/24 brd 172.20.1.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 fe80::1610:9fff:fed7:220b/64 scope link valid_lft forever preferred_lft forever 3: eth2:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0e:c6:88:31:43 brd ff:ff:ff:ff:ff:ff inet 172.20.1.60/24 brd 172.20.1.255 scope global eth2 valid_lft forever preferred_lft forever inet 192.168.10.1/24 brd 192.168.10.255 scope global eth2 valid_lft forever preferred_lft forever inet6 fe80::20e:c6ff:fe88:3143/64 scope link valid_lft forever preferred_lft forever 

我查了一下,发现,现在可以使用nmcli工具创建这个配置。 实际上,它允许完全控制NetworkManager。 nmcli的手册页非常透彻,非常容易理解。 见man nmcliman nm-settings

要在此问题中设置配置,最简单的方法是编辑当前的连接配置文件。 从GUI NetworkManager工具中找出配置文件的名称,并使用CLI编辑器进行编辑(此处名称为Ethernet connection ):

 $ sudo nmcli c edit'以太网连接'

 === |  nmcli交互式连接编辑器| ===

编辑现有的'802-3-ethernet'连接:'以太网连接1'

输入“帮助”或“?” 可用的命令。
输入'describe [。]'以获取详细的属性说明。

您可以编辑以下设置:连接,802-3-ethernet(以太网),802-1x,dcb,ipv4,ipv6
 nmcli> goto ipv4
您可以编辑以下属性:method,dns,dns-search,dns-options,dns-priority,addresses,gateway,routes,route-metric,ignore-auto-routes,ignore-auto-dns,dhcp-hostname,dhcp -send-hostname,never-default,may-fail,dad-timeout,dhcp-timeout,dhcp-client-id,dhcp-fqdn
 nmcli ipv4> set ipv4.addresses {your_address_here} / {your_network_prefix_here}
你还想把'ipv4.method'设置为'手动'吗?  [是]: 
 nmcli ipv4> 保存
连接“以太网连接”(87fa8e41-7fe3-435a-a2f2-29a9c8084d2d)已成功更新。
 nmcli ipv4> 退出

粗体部分是您的输入,用您的设置替换花括号中的东西。 回答关于ipv4.method的问题保留了DHCP配置。 之后您需要禁用并重新启用配置,这可以使用GUI工具或nmcli完成。

如果需要,还可以从命令行创建新连接:

 sudo nmcli -p connection add type ethernet ifname {your_interface_name} con-name MyConnection -- ipv4.addresses {your_address}/{your_prefix_length} ipv4.method auto 

再次,用您的设置替换花括号中的东西。

最后,如果您仍希望编辑配置文件,请记住在编辑后重新加载文件:

 sudo nmcli connection reload 

请注意,以这种方式创建的配置可能会混淆GUI工具。 充其量,他们不会向您显示静态地址。