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


16

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

我们如何才能做到这两者?


这是有关配置NetworkManager的问题吗?
madneon

Answers:


13

是的,可以这样做。但是,通常为此使用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没有尝试管理您的设置。这在这里介绍


9

经过一番密集的搜索来寻找相同问题的答案之后,我制定了一个解决方案,该解决方案使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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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

address1ipv4.addresses如果您使用的是API或nmcli,则此处找到的设置实际上是NetworkManager 的设置。在这种情况下,您还必须保持ipv4.method设置为“自动”。
戴夫2015年

正常创建连接后,/ etc / NetworkManager / system-connections /目录中仍然没有文件。他们被关在别的地方吗?也许是SELinux的事情?
Steve Jorgensen

2

我仔细检查并发现,如今可以使用该nmcli工具创建此配置。实际上,它允许完全控制NetworkManager。nmcli的手册页非常透彻,非常容易理解。请参阅man nmcliman nm-settings

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

$ sudo nmcli c编辑“以太网连接”

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

编辑现有的“ 802-3-ethernet”连接:“ Ethernet connection 1”

输入“帮助”或“?” 有关可用的命令。
键入“描述[。]”以获取详细的属性描述。

您可以编辑以下设置:连接,802-3-以太网(ethernet),802-1x,dcb,ipv4,ipv6
nmcli> 转到ipv4
您可以编辑以下属性:方法,dns,dns搜索,dns选项,dns优先级,地址,网关,路由,路由度量,忽略自动路由,忽略自动dns,dhcp主机名,dhcp -send-hostname,never-default,may-fail,dad-timeout,dhcp-timeout,dhcp-client-id,dhcp-fqdn
nmcli ipv4> 设置ipv4.addresses {your_address_here} / {your_network_prefix_here} 
您是否还想将“ ipv4.method”设置为“ manual”?[是]: 
nmcli ipv4> 保存
连接“以太网连接”(87fa8e41-7fe3-435a-a2f2-29a9c8084d2d)已成功更新。
nmcli ipv4> 退出

粗体部分是您的输入,请使用您的设置替换大括号中的内容。回答no有关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工具。充其量,它们不会向您显示静态地址。


0

Debian Buster / 10 NetworkManager nm-connection-editor现在可以从图形用户界面执行此操作。

编辑连接,打开“ IPv4设置”选项卡,然后:

  1. 将“方法”设置为“自动(DHCP)”。
  2. 在下面添加“其他静态地址”。

这将在中写入以下设置/etc/NetworkManager/system-connections/connection.nmconnection

[ipv4]
address1=10.0.0.1/24
method=auto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.