Jump to content

Recommended Posts

Posted

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

Posted

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

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

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

 

Posted

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

 

[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

 

Posted (edited)
21 minutes ago, LostSoul said:

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

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

 

20 minutes ago, vlad11 said:

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

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

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

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

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

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

 

 

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

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

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

 

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

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

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

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

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

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

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

 

Posted

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


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

Цитата

 

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

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

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

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

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

 

Posted (edited)

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

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

local 192.168.16/24 dev lo

 

Edited by 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.