如何在 systemd 中的一个接口上设置多个 IP 地址?

如何在 systemd 中的一个接口上设置多个 IP 地址?

所以在 /etc/systemd/network 中我有一个文件 lan.network:

[Match]
Name=eth0

[Network]
DHCP=no

[Address]
Address=192.168.59.1/24

有时,我将其他设备带到同一接口上,但它位于单独的子网 (192.168.1.x) 上。为了访问该设备,我想有选择地在接口上运行两个 IP 地址。在 systemd 中执行此操作的最佳方法是什么?

在旧版本的 Debian (Wheezy) 中,我编辑/etc/network/interfaces并得到了如下内容:

auto eth0
iface eth0 inet static
address 192.168.59.1

iface eth0:1 inet static
address 192.168.1.5

因此,默认情况下 eth0 接口将被启用,当我需要访问 192.168.1.x 时,我会运行:

ifup eth0:1

答案1

据我了解,要永久执行此操作,您只需将所有地址堆积在一起,即:

Address=192.168.59.1/24 192.168.1.5/24

答案2

使用 Arch Linux、SystemD 249.2-1,这 (3) 种方法都不起作用(也尝试过这个答案

-------------------------
[Network]
Address=10.2.3.4/16
Address=10.6.7.8/16
-------------------------
[Network]
Address=192.168.59.1/24 192.168.1.5/24
-------------------------
[Address]
Address=10.2.3.4/16

[Address]
Address=10.6.7.8/16
-------------------------

相反,使用简单的 SystemD 服务,您可以在启动后设置第二个 IP...请参阅这个答案有关 systemd 服务创建的更多详细信息...奖励点:此方法允许您使用静态或 DHCP 作为主地址。

  • 触摸 /usr/local/bin/second_ip
  • chmod +x /usr/local/bin/second_ip
  • 如下编辑文件
#!/bin/bash
ip address add 10.10.128.128/16 dev eth0
  • 触摸 /etc/systemd/system/second-ip.service

  • 如下编辑文件

  • systemctl 启用第二个IP

     [Unit]
     Description=second ip service
     After=network.target
    
     [Service]
     User=root
     ExecStart=/usr/local/bin/second_ip                                                                                      Type=simple
    
     [Install]
     WantedBy=multi-user.target
    

相关内容