November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, June 6th, 2017 01:54 pm

Условие: у вас есть локальная сеть с кучкой компьютеров, использующих приватные адреса. В сети также есть маршрутизатор с публичным адресом, в который он NAT’ит приватные адреса при выходе в интернеты. На маршрутизаторе через публичный интернет также включены VPNы, через которые к вашей сети подключено несколько других сетей, также использующих у себя внутри приватные адреса. Соединения от всех (ну или, может, только некоторых) компьютеров вашей сети должны обеспечиваться к компьютерам во всех удалённых сетях, и обратно – из всех тех сетей в вашу.

Засада: внезапно оказалось, что некоторые удалённые сети используют одинаковые диапазоны приватных адресов.
Вы знаете, какие компьютеры какие адреса используют во всех сетях, в частности, и одинаковые. Но поменять диапазоны адресов в удалённых сетях не выйдет, у них свои администраторы, которые не хотят их менять.
Настроить в VPNах автоматический NAT приватных адресов в публичные тоже не выйдет, нету их: у каждого VPN-сервера есть только один публичный адрес, который он использует для связи с другими серверами.

Вопрос: можете ли вы что-нибудь сделать в своей сети, чтобы соединения из неё ко всем компьютерам в удалённых сетях (и обратно тоже), успешно работали, даже если разные компьютеры в разных сетях имеют одинаковые адреса?

Вопрос 2: а если в некоторых удалённых сетях используются те же диапазоны приватных адресов, что и в вашей? Понятное дело, самое простое решение – поменять свой диапазон, но если его тоже нельзя менять, то что ещё можно сделать?

Оригинал этой записи в личном блоге.

Tuesday, June 6th, 2017 01:20 pm (UTC)
>Настроить в VPNах автоматический NAT приватных адресов в публичные тоже не выйдет, нету их

А зачем в публичный?
В приватный.

Вообще же надо больше подробностей, чтобы предложить рабочий вариант: какой VPN используется, готовы ли удаленные админы настроить на своей стороне NAT.
Если все делать на своей стороне: принимать пакеты и NATить, - то связка из ip rule/ip route и iptables.

Например, у нас во всех удаленных точках одна и таже сеть: NAT-иться на удаленном роутере в IP-к, получаемый OpenVPN-ом.
Tuesday, June 6th, 2017 01:55 pm (UTC)
завести подсети новых диапазонов параллельно старым, прописать маршруты до них на маршрутизаторах. Завести новые записи в DNS, чтобы сервис в соседней подсети ресолвился в ip-адрес в новом диапазоне. Ну и само собой, новые диапазоны уже не должны пересекаться.
Tuesday, June 6th, 2017 02:09 pm (UTC)
У меня такая ситуация: два не моих сегмента на одной машине.
Одинаковый даже шлюз.

В машине два интерфейса: eth0 поднят c IP (обычная сеть, глядит в Иентернет), eth1 (только технологичесике датчики на объектах) поднят без IP.
Поскольку не нужно выводить датчики в Интернет, то VirtualBox привязан к eth1, а уж виртуальная машина пользует его как обычный интерфейс с IP. Данные с датчиков идут в файлы в расшаренной папке.



Edited 2017-06-06 02:11 pm (UTC)
Tuesday, June 6th, 2017 05:13 pm (UTC)
Так где тебе отвечать то?
Tuesday, June 6th, 2017 05:20 pm (UTC)
Что ты пользуешь как рутер/VPN концентратор то?
Что за VPN? OpenVPN? IPSec?
Wednesday, June 7th, 2017 09:17 am (UTC)
как видишь я не дождался и ответил
ниже
Tuesday, June 6th, 2017 06:48 pm (UTC)
Спрашивали - отвечаем:

Оговорочка по Фрейду: Если используется взрослое оборудование типа сиськи и взрослый VPN типа IPSec. Без второго рутера или VRF-ов будет тот еще гемор, поэтому возьмем за постулат что это у нас есть
0. Допустим есть 1 реальный IP и два рутера
1. Делаем 2 дополнительных VLAN и два VLAN интерфейса на обоих рутерах. VLAN с внутренней сеткой тоже остается. Примем что VL1 имеет адресацию IP_1, VL2 IP_2 и во внутренней сетке у нас IP_3. В Интернет у нас смотрит RIP_1.1.
2. На рутере 1 поднимаем 2 вилан интерфейса из VL1 и VL2 с адресами IP_1.1/30 и IP_2.1/30 соответсвенно. Адрес IP_3.1/24 (пусть будет /24, но это не принципиально) у нас уже работает.
3. На рутере 3 поднимаем 2 вилан интерфейса из VL1 и VL2 с адресами IP_1.2/30 и IP_2.2/30.
4. На рутере 1 поднимаем DNAT для 500/udp и 4500/udp вида RIP_1.1 > IP_1.2
3. Переносим конфиги всех VPNов на рутер 2
4. На Рутере 1 в таблице маршрутизации делаем следующие вещи: сетка_за_VPN_тунеллем_1 > IP_2.2, сетка_за_VPN_тунеллем_2 > IP_2.2, сетка_за_VPN_тунеллем_N > IP_2.2
5. На рутере 1 в таблице маршрутизации делаем вот так: новая_сетка_которая_нигде_не_появляется > IP_2.2
6. На рутере 2 поднимаем NAT типа IP_3 to новая_сетка_которая_нигде_не_появляется и новая_сетка_которая_нигде_не_появляется to IP_3 (1 to 1 NAT)
7. При настройке VPN с Удаленной_сетью_где_такие_же_IP_3_как_у_нас в настройках указываем не IP_3, а новая_сетка_которая_нигде_не_появляется (Proxy-id или Encryption domain)

Получется что Дядя_от_туда будет к нам идти не на IP_3 (который такойже как и у него и хуйсработает), а на фейковую новая_сетка_которая_нигде_не_появляется. А нам, чтобы попасть к дяде_от_туда нужно идти на новая_сетка_которая_нигде_не_появляется

Все это справедливо для VRFов, физических интерфейсов вместо VL интерфейсов и тп.

Описал только основной принцип. В уравнениях куча переменных и каждый случай - уникальный. Ни ACL ни все такое прочее описывать не буду - заебусь. Есть 100500 вариаций на эту тему.