kaktak Posted July 25, 2018 Posted July 25, 2018 есть centos 7 понадобилось стерминировать на нем 256 ip адресов первое, что нагуглил - ifcfg-xxx-range0. В принципе работает... Генерирует кучу интерфейсов типа xxx:0 xxx:1 и т.д. Но оочень медленно. Сервер уже загружается,а интерфейсы все еще генерируются.. Потом наткнулся на использование IPADDR1..2 и т.д. и прикрутил на лупбек 256 адресов примерно так: DEVICE=lo IPADDR=127.0.0.1 NETMASK=255.0.0.0 NETWORK=127.0.0.0 BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback IPADDR0=1.1.1.0 PREFIX0=32 IPADDR1=1.1.1.1 PREFIX1=32 IPADDR2=1.1.1.2 PREFIX2=32 ... IPADDR255=1.1.1.255 PREFIX255=32 все устраивает. загружает быстро и работает. Но. Понадобилось прикрутить еще 256 адресов... И тут выяснилось, что записи IPADDR256 и выше конфиг уже не воспринимает... Попытался создать алиас вида: DEVICE=lo:1 IPADDR0=1.1.2.0 PREFIX0=32 IPADDR1=1.1.2.1 PREFIX1=32 ... IPADDR255=1.1.2.255 PREFIX255=32 Тут опять странности... если сделать ifup lo:1, то все корректно поднимается, а если systemctl restart network, то нет... Подскажите, что я не так делаю то? И как вообще в centos такие вещи кошерно делаются? Вставить ник Quote
LostSoul Posted July 25, 2018 Posted July 25, 2018 я вдоволь натрахавшись, передумал делать кошерно. и сделал прямо грубо, цинично и вот так вот #!/bin/bash blocks="100.125.0 100.125.1 100.125.2 100.125.3 100.125.4 100.125.5 100.125.6 100.125.7 100.125.8 100.125.9" for i in $blocks do for n in `seq 0 255` do ip addr add $i.$n dev lo done done несколько лет полет нормальный. были-бы это какие-то внешние интерфейсы тогда имеет смысл стараться. А loopback - да что ему будет то? Вставить ник Quote
vlad11 Posted July 25, 2018 Posted July 25, 2018 Попробуйте указать диапазон: [root@linuxhelp network-scripts]# vim ifcfg-eth0-range0 DEVICE=eth0 HWADDR=00:0C:29:3F:43:A5 TYPE=Ethernet UUID=9aba66e1-41ab-4f3f-8f29-5a9c188f19ab ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR_START=192.168.5.184 IPADDR_END=192.168.5.186 NETMASK=255.255.255.0 DNS2=8.8.4.4 GATEWAY=192.168.5.1 DNS1=8.8.8.8 IPV6INIT=no USERCTL=no Вставить ник Quote
kaktak Posted July 25, 2018 Author Posted July 25, 2018 (edited) 21 minutes ago, LostSoul said: и сделал прямо грубо, цинично и вот так вот так то ничего, но что если при загрузке стартует приложение, которое создает сокеты на этих адресах? конечно можно не менее цинично вставить рестарт этого приложения в конец скрипта .. )) 20 minutes ago, vlad11 said: Попробуйте указать диапазон я писал выше, что пробовал range. неплохо работает на небольших диапазонах, но даже 256 интерфейсов создаются неприемлемо долго. Edited July 25, 2018 by kaktak Вставить ник Quote
LostSoul Posted July 25, 2018 Posted July 25, 2018 16 минут назад, kaktak сказал: так то ничего, но что если при загрузке стартует приложение, которое создает сокеты на этих адресах? конечно можно не менее цинично вставить рестарт этого приложения в конец скрипта .. )) ну так и настройте в systemd запуск этого скрипта раньше, чем вашего приложения. а можно и net.ipv4.ip_nonlocal_bind=1 в sysctl.conf прописать 18 минут назад, kaktak сказал: но даже 256 интерфейсов создаются неприемлемо долго. ARPCHECK=no прописали? Вставить ник Quote
kaktak Posted July 25, 2018 Author Posted July 25, 2018 arpcheck не пробовал спасибо за наводку. А вас тогда почему range не устроил? Вставить ник Quote
LostSoul Posted July 25, 2018 Posted July 25, 2018 2 минуты назад, kaktak сказал: arpcheck не пробовал спасибо за наводку. А вас тогда почему range не устроил? ну потому что если вы посмотрите на мой скрипт, то увидите что IP явно больше, чем 256. Под такое количество IP пришлось в системе крутить уже и лимиты на число файлов, и приложение пересобирать. Редактировать подобный конфиг в текстовом редакторе было уже лень, и я решил что раз все равно кодить скрипт, то чем кодить генератор конфига к ifcg проще подгружать напрямую так сказать в ядро сразу. И быстрее и лучше и побочных эффектов я не нашел. ( но у меня отдельный контейнер lxc под эти задачи ) Вставить ник Quote
s.lobanov Posted July 25, 2018 Posted July 25, 2018 всегда посмеиваюсь над квалификацией местных советчиками вот так можно заасайнить на хост целую подсеть: Цитата # ip -4 route add local 192.168.16/24 dev lo после чего хост будет считать всю сеть "своей", т.е. (в том числе) отвечать на arp (кстати, без всяких proxy-arp и proxy-arp-pvlan), любое приложение может биндится на любой ip из такой сети без non-local binding фичи Цитата # nc -l -s 192.168.16.100 -p 5000 & [1] 23830 # netstat -ntplu | grep 5000 tcp 0 0 192.168.16.100:5000 0.0.0.0:* LISTEN 23830/nc советовать делать алиасы через костыли типа IPADDR_START и IPADDR_END, которые скрипт разворачивает в кучу алиасов - ну привет вам из криокамеры Вставить ник Quote
LostSoul Posted July 25, 2018 Posted July 25, 2018 1 час назад, s.lobanov сказал: после чего хост будет считать всю сеть "своей", т.е. (в том числе) отвечать на arp попробовал , работает, даже на centos 6. Да ты просто шайтан :-) Вставить ник Quote
kaktak Posted July 26, 2018 Author Posted July 26, 2018 Красиво. А как это увязать с сетевыми скриптами centos? Вставить ник Quote
guеst Posted July 26, 2018 Posted July 26, 2018 (edited) Static route configuration is stored in a /etc/sysconfig/network-scripts/route-interface file. попробуйте наверно в файл просто прописать: local 192.168.16/24 dev lo Edited July 26, 2018 by guеst Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.