Как я могу (из CLI) назначить несколько IP-адресов одному интерфейсу?

На моем сервере я хочу назначить несколько IP-адресов одному NIC, но без использования устаревших ifconfig или устаревшее обозначение "псевдоним" (например, eth0:0) в /etc/network/interfaces потому что в IP Aliasing (на www.kernel.org) вы можете прочитать

IP-псевдонимы - это устаревший способ управления несколькими IP-адресами / масками на интерфейс

3 ответа

Решение
  1. Если вам нужен дополнительный IP-адрес, вы можете добавить его к любому интерфейсу на вашей машине с помощью

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

    например

     sudo ip address add 172.16.100.17/24 dev eth0
    

    добавил бы 172.16.100.17 используя 24-битную маску к списку адресов, настроенных для вашего 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-сессия выживет.

С новым инструментарием так же легко, как и со старым, добавить новые 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 addr а также ip 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
Другие вопросы по тегам