Перейти к содержимому
Калькуляторы

centos добавить кучу ip на интерфейс

есть 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 такие вещи кошерно делаются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я вдоволь натрахавшись,  передумал делать кошерно.

и сделал прямо грубо, цинично и вот так вот

#!/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 - да что ему будет то?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте указать диапазон:

 

[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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

21 minutes ago, LostSoul said:

и сделал прямо грубо, цинично и вот так вот

так то ничего, но что если при загрузке стартует приложение, которое создает сокеты на этих адресах? конечно можно не менее цинично вставить рестарт этого приложения в конец скрипта .. ))

 

20 minutes ago, vlad11 said:

Попробуйте указать диапазон

я писал выше, что пробовал range. неплохо работает на небольших диапазонах, но даже 256 интерфейсов создаются неприемлемо долго.

Изменено пользователем kaktak

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

16 минут назад, kaktak сказал:

так то ничего, но что если при загрузке стартует приложение, которое создает сокеты на этих адресах? конечно можно не менее цинично вставить рестарт этого приложения в конец скрипта .. ))

ну так и настройте в systemd запуск этого скрипта раньше, чем вашего приложения.

а можно и net.ipv4.ip_nonlocal_bind=1 в sysctl.conf прописать

 

 

18 минут назад, kaktak сказал:

но даже 256 интерфейсов создаются неприемлемо долго.

ARPCHECK=no  прописали?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

arpcheck не пробовал спасибо за наводку. А вас тогда почему range не устроил? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 минуты назад, kaktak сказал:

arpcheck не пробовал спасибо за наводку. А вас тогда почему range не устроил? 

ну потому что если вы посмотрите на мой скрипт, то увидите что IP явно больше, чем 256.

Под такое количество IP пришлось в системе крутить уже и лимиты на число файлов, и приложение пересобирать.

Редактировать подобный конфиг в текстовом редакторе было уже лень, и я решил что раз все равно кодить скрипт, то чем кодить генератор конфига к ifcg проще подгружать напрямую так сказать в ядро сразу.

И быстрее и лучше и побочных эффектов я не нашел.

( но у меня отдельный контейнер lxc под эти задачи )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всегда посмеиваюсь над квалификацией местных советчиками


вот так можно заасайнить на хост целую подсеть:

Цитата

 

# 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, которые скрипт разворачивает в кучу алиасов - ну привет вам из криокамеры

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, s.lobanov сказал:

после чего хост будет считать всю сеть "своей", т.е. (в том числе) отвечать на arp

попробовал , работает, даже на centos 6.

Да ты просто шайтан :-)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Красиво. А как это увязать с сетевыми скриптами centos? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Static route configuration is stored in a /etc/sysconfig/network-scripts/route-interface file. 

попробуйте наверно в файл просто прописать: 

local 192.168.16/24 dev lo

 

Изменено пользователем guеst

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.