
Я настраиваю машину, которую буду использовать в тестовой сети и на которой будет размещено много веб-сайтов. Я хотел бы, чтобы у этого хоста было много (порядка 20 тыс.) IP-адресов.
Я знаю, что я мог бы добавить их все с помощью скрипта, который, скажем,
ip addr add <ip>/<mask> dev eth0
и получить их всех таким образом. На самом деле, это работает просто отлично, но перезагрузку оно, очевидно, не переживет.
Если я изменю, /etc/sysconfig/network-scripts/ifcfg-eth0
я смогу назначить статический IP-адрес, который будет постоянным, но не думаю, что таким образом смогу назначить больше одного IP-адреса.
Есть ли способ назначить много статических IP-адресов на постоянной основе?
Полагаю, в худшем случае я мог бы создать собственную службу IP и заставить ее выполнять ip
команды через службу systemd, но мне было интересно, есть ли более канонический способ сделать это.
решение1
Я не проверял, поддерживает ли он десятки тысяч, но, похоже, вы можете указать много адресов ifcfg-
непосредственно в файле, если сообщите NetworkManager, что собираетесь это сделать.
Первым шагом было сообщить об этом NetworkManager, что я и сделал
nmcli con mod eth0 ipv4.method manual
Затем я модифицировал его /etc/sysconfig/network-scripts/eth0
так, чтобы он имел
IPADDR0=<ip0>
NETMASK0=<mask0>
IPADDR1=<ip1>
NETMASK1=<mask1>
и затем eth0
имел оба этих адреса (по крайней мере после перезагрузки).
Обновление: Увы для меня, этот метод допускает только до 256 адресов на интерфейс. (Если вам интересно, вы можете увидеть ограничение для версии 0.9.10, которая поставляется с Fedora 21, в исходном коде на строке 1366 src/settings/pluginos/ifcfg-rh/reader.c.)
решение2
Это легко, когда понимаешь.
Я знаю два способа, либо отдельные ifcfg-eth:x
файлы для отдельных адресов, либо ifcfg-eth0-rangex
файлы для диапазонов IP. Файл помещается в /etc/sysconfig/network-scripts/
папку.
Итак, первый случай. Просто скопируйте /etc/sysconfig/network-scripts/ifcfg-eth0
в /etc/sysconfig/network-scripts/ifcfg-eth0:0
. Откройте его в редакторе и изменитеУСТРОЙСТВОк eth0:0 иIPADDRна то, что вы хотите. Перезагрузите вашу сеть ( systemctl restart network
на centos 7). Повторите шаг и увеличьте x на единицу.
Во втором случае вы копируете /etc/sysconfig/network-scripts/ifcfg-eth0
в /etc/sysconfig/network-scripts/ifcfg-eth0-range0
. Затем открываете файл в редакторе и заменяетеIPADDRсIPADDR_STARTи добавитьIPADDR_ENDс соответствующими начальными и конечными IP диапазона. Перезагрузите сеть, как указано ранее, и изменения вступят в силу.
решение3
копировать /etc/sysconfig/network-scripts/ifcfg-eth0
и /etc/sysconfig/network-scripts/ifcfg-eth0:0
редактировать
DEVICE="eth0:0"
BOOTPROTO="static"
IPADDR=192.168.230.252
NETWORK=192.168.230.0
NETMASK=255.255.255.0
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
Вы должны быть в одной сети.
перезагрузить.
Если вы не можете перезагрузиться, попробуйте ifconfig eth0:0 up
(эту часть не проверял)
видетьhttp://www.cyberciti.biz/faq/linux-creating-or-adding-new-network-alias-to-a-network-card-nic/