LINUX.ORG.RU
ФорумAdmin

Роутинг между двух одинаковых сетей на разных интерфейсах

 , ,


0

1

Добрый день!

На сервере есть два физических интерфейса, линки которых, смотрят в две сети сети с практически одинаковой адресацией, различаются лишь масками и назначением. Поясню, что ens6 это внешний интерфейс, а ens3 это внутренний, нужно чтобы пользователь подключался по ens6 и внутри машины видел сеть ens3

Сеть 172.31.30.0/24 ,gw172.31.30.254 – приватная –ens3
Сеть 172.31.31.0/23, gw172.31.31.254 – публичная –ens6

0.0.0.0         172.31.31.254   0.0.0.0         UG    0      0        0 ens6
172.31.30.0     0.0.0.0         255.255.255.0   U     0      0        0 ens3
172.31.30.0     0.0.0.0         255.255.254.0   U     0      0        0 ens6


Сейчас сложилась неприятная и ожидаемая ситуация, когда при двух поднятых интерфейсах, становится недоступен один из них. В данном случае ens6…

Подскажите пожалуйста как побороть такой роутинг…. Чтобы и внешние соединения по ens6 работали и внутренние по ens3



Последнее исправление: Doronin (всего исправлений: 1)

Покурить iproute2 (например Linux Advanced Routing & Traffic Control HOWTO) и наделать несколько таблиц маршрутизации?

Infra_HDC ★★★★★
()

Первое, что приходит в голову — вопрос «на фига было так делать»? Чего хотелось добиться? Далее, 172.31.31.0 с маской /23 — адрес не сети, но узла в ней, адресом сети было бы 172.31.31.0/24. Еще не понятно, должен ли по задумке сервер быть шлюзом между сетями? являются ли 172.31.30.254 и 172.31.31.254 адресами ens3 и ens6 на сервере?

dexpl ★★★★★
()

Мост, не? Если надо - фильтрующий мост. Гуглить в сторону bridge и ebtables

Update: ааа, еще и подсети разные. А как быть с клиентами в ens6 из подсети 172.31.30.0/24 ? Если доступ к ним не нужен - оставь всё как есть. Если нужен - меняй адресацию, иначе предвижу много боли.

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

Вклиниваемся в чужую приватную сетку, а оно по стечению обстоятельств пересекается с нашей. Поменять сети нельзя. Нужно получить что-то типа консольного сервера подключившись на него по ens6 из него получить доступ до сети и серверам в сети на ens3

являются ли 172.31.30.254 и 172.31.31.254 адресами ens3 и ens6 на сервере?

Нет, это адреса шлюзов сетей.

IP на интерфейсах ens3- 172.31.30.10/24 ens6- 172.31.30.100/23

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

Нужно получить что-то типа консольного сервера подключившись на него по ens6 из него получить доступ до сети и серверам в сети на ens3

Поменять сети нельзя.

Тогда могу лишь пособолезновать — придется или городить policy routing с NAT'ом пополам для узлов, физически подключенных к ens6 с адресами из 172.31.30.0/24 (как по мне — проще сразу удавиться патч-кордом), либо все-таки сделать на ens6 и за ним сеть 172.31.31.0/24. В любом случае шлюзу в чужой сети (172.31.30.254) придется объяснить, что в 172.31.31.0/24 нужно ходить через 172.31.30.10, а шлюзу в своей (172.31.31.254) — что к 172.31.30.0/24 ходить через 172.31.30.100 (точнее, через адрес, который будет назначен ens6, если адресацию в своей сети все же смените).

Update: если в своей сети и вправду столько узлов, что /24 не хватает, то за ens6 придется делать не 172.31.31.0/24, а, например, 172.31.32.0/23.

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

Да адрес узла, но сеть будет 172.31.30.0/23.

И я о том же.

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

Вот подумай. Хост с ип 172.31.30.16 из первой сети посылает пакет хосту с ип 172.31.31.24 во второй сети. Что произойдет, при условии что оба хоста сушествуют и работают?

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

Наоборот с хоста 172.31.31.24 из второй сети хосту 172.31.30.16 первой сети:)

iveg
()

С точки зрения сервера сети 172.31.30.0/23 и 172.31.30.0/24 различны, и у сервера нет никаких проблем с пониманием кому куда отвечать. Потому что https://en.wikipedia.org/wiki/Longest_prefix_match Однако, так как сети перекрываются, проблемы возникают у узлов из ens6, IP которых ложится в сеть 172.31.30.0/24, в том числе и у IP самого интерфейса. Поэтому, для начала дайте интерфейсу ens6 адрес вида 172.31.31.x, а при необходимости и клиенту за ens6 то же самое.

rubic
()

Еще есть arp proxy. Но вообще все уже написали выше, «хватит извращений и закопали стюардессу» (ц) поменять сеть у /24 не такая уже и проблема, чем городить костыли.

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

А то, что в каждой сети свой шлюз по умолчанию, ip-адрес которого не совпадает с адресами сервера ТС вас не смущает? Если машины в сети ens6 можно обдурить с помощью proxy arp, то чтобы ens3 отвечали на запросы из ens6 нужно делать SNAT.

Я вот вобще не понял, что нужно ТС:

нужно чтобы пользователь подключался по ens6 и внутри машины видел сеть ens3

Что значит «подключаться по интерфейсу» и «видить сеть внутри машины»?

mky ★★★★★
()

Объедини сетевые адаптеры в мост. Назначь основным IP, например, 172.31.30.x/24 а, дополнительным 172.31.31.x/24. Позаботься о смене маски на локальных компах.

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

Ну, как я понял автора, он желает из сети ens6 подключиться к серверу, например по ssh, и уже с сервера иметь доступ к сети за ens3. В этом случае рецепт должен работать.

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