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

43

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

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

guntbert
источник
ifconfig устарела? Я не знал
Махеш
@Mahesh Да, ifconfig - это артефакт эпохи SysV. «iproute2» - более современный инструмент. ifconfig будет некоторое время на разных дистрибутивах, но да, он устарел; «не рекомендуется» - это просто разговорный термин, который мы использовали для обозначения «искать что-то более новое для использования».
Дэвид Бец

Ответы:

48
  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.1724-битную маску сети в список адресов, настроенных для вас 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-сессия выживет.

guntbert
источник
Вы можете сделать vpn с более чем одним IP-адресом, установив его из менеджера программного обеспечения.
Майкл
После добавления или удаления IP перезагрузка в Ubuntu 16.04.3 LTS не требуется
Daniel F
1
похоже, если в более новых версиях Ubuntu не рекомендуется использовать downdown.
Саджук
20

С новым инструментарием так же легко, как и со старым, добавить новые 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
хаос
источник
Спасибо за предоставление соответствующих команд.
Гюнтберт
THX @ CHAO, ну, может я могу иметь больше IP-адресов, чем мой нет интерфейсов в моей системе?
Лазарь
@jazzz Да, как вы можете видеть в выводе моего интерфейса выше, ему назначено 2 IP-адреса (192.168.0.100 и 192.168.1.1). Вы можете добавить еще один, если хотите.
хаос
@chaos, но как я могу использовать их для экземпляра я хочу создать группу для многоадресной рассылки ,, я могу сформировать группу из них ,, пожалуйста , вы можете сослаться на мой вопрос askubuntu.com/questions/547105/...
Lazarus
1
@chaos Я принимаю мой собственный ответ вместо вашего превосходного, потому что вашему не хватает «постоянства», которого я ожидаю от конфигурации сервера.
Гюнтберт
0

Одним из способов является:

sudo ip addr add 192.168.0.2/24 dev eth1
Берт
источник