LINUX.ORG.RU
ФорумAdmin

Сеть в сети

 , , ,


0

1

Здравствуйте. Помогите с настройкой сети.

Нужно построить такую структуру: https://i.imgur.com/t2RZUIK.png

Есть:
свитч,
в него включены физические сервера server01…N, адреса бриджа br0 172.25.1.10,20,30…,
на каждом сервере есть виртуальные сервера vm1…N, адреса br1 виртуалок 172.25.1.21,22,…

Нужно:
докер контейнеры ctN будут иметь интерфейс включенный в br1, нужно каждому выдать IP который будет доступен с любого другого контейнера.
При этом важно не менять существующую адресацию сети, так как это развалит все остальное что крутится на серверах.

Пока серверов 6, виртуалок 24, контейнеров несколько тысяч, но предполагается рост.

Главный вопрос, как добавить на все (br0, br1) сеть 10.0.0.0/8 и из нее выдавать адреса контейнерам. Гугл не помог.

Заранее благодарен.

★★

Последнее исправление: karaien (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

karaien ★★
() автор топика
Ответ на: комментарий от karaien

как добавить на все (br0, br1) сеть 10.0.0.0/16 и из нее выдавать адреса контейнерам

Проблема пустить две сети по одной физической.

Неправильные вопросы порождают неправильные ответы.
Сформулируй правильный вопрос

zolden ★★★★★
()
Ответ на: комментарий от karaien

Э. VLAN если тебе нужна изоляция. А выдавать dhcp-сервер может только в своей сети адреса - научись в файрволлы. Ну и вообще в твоём случае свитч управляемый? Ну разведи всё по разным VLAN.

Deleted
()

как добавить на все (br0, br1) сеть 10.0.0.0/16

Попробуйте добавить на все br-интерфейсы адреса со второй картинки, только добавлять нужно с маской /8 - 10.x.y.z/8.
По идее сразу всё должно заработать.

spirit ★★★★★
()
Ответ на: комментарий от Deleted

Как раз VLAN тут ни к чему.
Нужно сохранить сеть 172.25.1.0/24 и добавить 10.0.0.0/8, и любой контейнер должен быть доступен с любой точки сети, в том числе и любого другого контейнера.

karaien ★★
() автор топика
Ответ на: комментарий от spirit

Да, /8, случайно написал /16.
Просто с 10.0.0.0/8 заработает, но нужно сохранить 172.25.1.0/24.

На серверах еще много чего крутится и ломать это нельзя.

karaien ★★
() автор топика
Ответ на: комментарий от karaien

На один интерфейс можно добавить любое количество адресов.

ip addr add 172.25.1.1/24 dev br0
ip addr add 10.0.0.1/8 dev br0

Чем это проще автоматизировать – зависит от дистрибутива.

iliyap ★★★★★
()
Ответ на: комментарий от karaien

Так вы текущие адреса не убирайте, 10.x.x.x добавляйте новыми к уже имеющимся.
Старые адреса тоже ж висят на br-интерфейсах ?

Вообще сами по себе адреса нигде (кроме контейнеров) не нужны. На ВМ и железные сервера их стоит добавлять чисто для теста (чтоб можно было пингануть при надобности). Для начала можно никакие адреса нигде не задавать, а поднять по одному контейнеру на каждом сервере/ВМ, задать эти адреса на них и проверить связь. Должно работать.

spirit ★★★★★
()

докер контейнеры ctN будут иметь интерфейс включенный в br1

Это у вас как реализовано? Какой тип docker network аттачится в контейнеры?

Исходя из описания вашей схемы, проблем нет никаких, все должно работать как написал в предыдущем комменте spirit

samson ★★
()

А объясните, откуда у вас вообще такое желание эмулировать такую конфигурацию: несколько эзернет в один хаб в каждой vm? Если бы было по одному интерфейсу, то разрулить можно было б просто указать MAC vm-ки = IP на DHCP.

vodz ★★★★★
()

А вообще, раз дело касается docker-контейнеров, то и разруливать было бы не плохо средствами docker network. И первое, что приходит в голову - это docker network -d macvlan --subnet --ip-range. Т.е. для первой виртуалки на первом сервере что то вроде этого:

$ docker network create -d macvlan --subnet=10.0.0.0/8 \
         --ip-range=10.1.1.0/24 -o parent eth0 srv1vm1-network
$ docker network connect srv1vm1-network ct01
# еще можно использовать --ip опцию
# или если контейнер еще не запущен, то
$ docker run --network=srv1vm1-network --name ct0 ...
...

Но в этом случае docker-host из контейнеров не виден.

Можно через overlay network сделать. Можно и через bridge нагородить, не знаю, на сколько это правильно.

Что за мост br1 у вас и для чего он нужен? Контейнеры случайно не к default bridge network подключены? На vm покажите результат команд

$ docker network ls
$ sudo brctl show
$ ip addr

ps: и наверное тег docker добавить было бы не лишним

samson ★★
()
Последнее исправление: samson (всего исправлений: 2)

Если я не ошибаюсь, тут нужны vlan

Shulman
()
Ответ на: комментарий от samson

docker network create -d macvlan –subnet=10.0.0.0/8
–ip-range=10.1.1.0/24 -o parent eth0 srv1vm1-network

От же я протупил. То что нужно.

Пробовал:

docker network create --driver=bridge \
	--subnet=10.0.0.0/8 --ip-range=10.1.1.0/24 \
	-o "com.docker.network.bridge.name=br1" br1

Но докер перетирал настройки br1.

Теперь все работает как надо.

karaien ★★
() автор топика
Ответ на: комментарий от karaien

докер перетирал настройки br1

потому что в случае -d bridge он создает/настраивает мост (обычно docker0 а не b1). А что бы это все было в локалке, надо добавить в этот мост интерфейс смотрящий в локалку - eth0 например. И тут непонатно как поднимать сеть и докер при загрузке системы. Сделать то это все можно, но вроде как для вашей задачи рекомендуется именно macvlan (исходя из документации докер)

samson ★★
()
Ответ на: комментарий от karaien

а вам связь эта нужна именно через сеть 10.0.0.0/8 или без разницы? Так то можно использовать default bridge network для коммуникации container-host.

samson ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.