我们可以在 Linux 中为单个接口使用多个 IP 地址(eg. eth0:0, eth0:1)
。但是我们可以同时使用 DHCP 和静态 IP 吗?eth0:1
应该有一个静态 IP 地址,并且eth0:0
应该使用 DHCP 进行配置。
我们如何才能实现这两点?
答案1
是的,可以这样做。但是,您通常会使用 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 不会尝试管理您的设置。这是此处介绍。
答案2
在对同一问题的答案进行深入搜索后,我找到了一个解决方案,让网络管理器继续管理您的连接。首先,使用“编辑连接”>“添加”在网络管理器中正常创建 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 地址确认成功。
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
答案3
我查了一下,发现现在可以使用该nmcli
工具创建此配置。事实上,它允许完全控制 NetworkManager。nmcli 的手册页非常详尽且非常易懂。请参阅man nmcli
和man nm-settings
。
要设置此问题中的配置,最简单的方法是编辑当前的连接配置文件。从 GUI NetworkManager 工具中找出配置文件的名称,然后使用 CLI 编辑器对其进行编辑(此处名称为Ethernet connection
):
$ sudo nmcli c edit'以太网连接' ===| nmcli 交互式连接编辑器 |=== 编辑现有的“802-3-以太网”连接:“以太网连接 1” 输入‘help’或‘?’获取可用命令。 输入“describe [.]”获取详细属性描述。 您可以编辑以下设置:连接、802-3-以太网(以太网)、802-1x、dcb、ipv4、ipv6 nmcli>转到 ipv4 您可以编辑以下属性:方法、dns、dns 搜索、dns 选项、dns 优先级、地址、网关、路由、路由度量、忽略自动路由、忽略自动 dns、dhcp 主机名、dhcp 发送主机名、永不默认、可能失败、dad 超时、dhcp 超时、dhcp 客户端 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 工具感到困惑。它们最多不会向您显示静态地址。
答案4
更新已接受的答案,对于 ubuntu 20.04(带 netplan),官方文档对此并不十分清楚。但是,这就像将接口添加为 DHCP 并向其附加 IP 地址一样简单
cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
enp5s0:
dhcp4: true
addresses: [192.168.10.4/24]
应用 netplan(sudo netplan apply
)之后,结果是 DHCP 为我提供了一个 10.x 范围内的地址,但接口也获得了一个静态 IP。
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 04:7c:16:b9:b7:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.4/24 brd 192.168.10.255 scope global noprefixroute enp5s0
valid_lft forever preferred_lft forever
inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute enp5s0
valid_lft 86254sec preferred_lft 86254sec
致谢https://support.us.ovhcloud.com/hc/en-us/articles/360002987280-如何在 Ubuntu 中配置附加 IP 作为别名