当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

IP-aliases are an obsolete way to manage multiple IP-addresses/masks per interface

最佳解决方案

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

     sudo ip address add <ip-address>/<netmask> dev <interface>
    

    例如

     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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1988.html,未经允许,请勿转载。