我如何(从CLI)为一个接口分配多个IP地址?

在我的服务器上,我想为一个NIC分配多个IP地址,但不使用/etc/network/interfaces中不推荐使用的ifconfig或过时的“别名”表示法(如eth0:0 ),因为在IP别名中 (在www.kernel上)。 org)你可以阅读

IP别名是管理每个接口的多个IP地址/掩码的过时方法

  1. 如果您目前只需要一个额外的IP地址,则可以将其添加到计算机上的任何界面

      sudo ip address add / dev  

    例如

      sudo ip address add 172.16.100.17/24 dev eth0 

    将使用24位网络掩码添加172.16.100.17到为eth0配置的地址列表。

    你可以查看结果

     ip address show eth0 

    你可以再次删除这个地址

     sudo ip address del 172.16.100.17/24 dev eth0 

    当然,重新启动计算机时会丢失这些更改。

  2. 要使附加地址永久化,您可以通过添加表单的多个节来编辑文件/etc/network/interfaces

     iface eth0 static address 172.16.100.17/24 

    所以它看起来像

     iface eth0 inet dhcp iface eth0 inet static address 172.16.100.17/24 iface eth0 inet static address 172.16.24.11/24 

    您甚至可以将dhcp保留为主地址。

    要在不重启的情况下激活这些设置,请使用ifdown/ifup类的

     sudo ifdown eth0 && sudo ifup eth0 

    如果要远程连接到服务器,将这两个命令放在一行中是很重要的 ,因为第一个命令会丢弃您的连接! 通过这种方式,ssh-session将继续存在。

使用新的工具包,就像使用旧工具包一样容易添加新的IP地址:

 ip addr add 192.168.1.1/24 dev eth0 

再次使用ip addr show时,您会看到分配给该接口的第二个IP地址:

 2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0 inet 192.168.1.1/24 scope global eth0 inet6 fe80::223:54ff:fe45:f307/64 scope link valid_lft forever preferred_lft forever 

删除该IP地址:

 ip addr del 192.168.1.1/24 dev eth0 

iproute2套件:

iproute2套件是通过netlink协议在内核和用户空间之间进行进程间通信的通信套件。 它应该取代整个标准的网络工具。 这是他们取代的:

  • ifconfig – > ip addrip link
  • route – > ip route
  • arp – > ip neigh
  • iptunnel – > ip tunnel
  • ipmaddr – > ip maddr
  • netstat – > ss

一种方法是:

 sudo ip addr add 192.168.0.2/24 dev eth1