Условие: у вас есть локальная сеть с кучкой компьютеров, использующих приватные адреса. В сети также есть маршрутизатор с публичным адресом, в который он NAT’ит приватные адреса при выходе в интернеты. На маршрутизаторе через публичный интернет также включены VPNы, через которые к вашей сети подключено несколько других сетей, также использующих у себя внутри приватные адреса. Соединения от всех (ну или, может, только некоторых) компьютеров вашей сети должны обеспечиваться к компьютерам во всех удалённых сетях, и обратно – из всех тех сетей в вашу.
Засада: внезапно оказалось, что некоторые удалённые сети используют одинаковые диапазоны приватных адресов.
Вы знаете, какие компьютеры какие адреса используют во всех сетях, в частности, и одинаковые. Но поменять диапазоны адресов в удалённых сетях не выйдет, у них свои администраторы, которые не хотят их менять.
Настроить в VPNах автоматический NAT приватных адресов в публичные тоже не выйдет, нету их: у каждого VPN-сервера есть только один публичный адрес, который он использует для связи с другими серверами.
Вопрос: можете ли вы что-нибудь сделать в своей сети, чтобы соединения из неё ко всем компьютерам в удалённых сетях (и обратно тоже), успешно работали, даже если разные компьютеры в разных сетях имеют одинаковые адреса?
Вопрос 2: а если в некоторых удалённых сетях используются те же диапазоны приватных адресов, что и в вашей? Понятное дело, самое простое решение – поменять свой диапазон, но если его тоже нельзя менять, то что ещё можно сделать?
Оригинал этой записи в личном блоге.
no subject
А зачем в публичный?
В приватный.
Вообще же надо больше подробностей, чтобы предложить рабочий вариант: какой VPN используется, готовы ли удаленные админы настроить на своей стороне NAT.
Если все делать на своей стороне: принимать пакеты и NATить, - то связка из ip rule/ip route и iptables.
Например, у нас во всех удаленных точках одна и таже сеть: NAT-иться на удаленном роутере в IP-к, получаемый OpenVPN-ом.
no subject
Ну и по условию задачи менять что-то можно только у себя, удалённые админы ничего у себя переделывать не хотят..
Задачка-то чисто теоретическая. Хоть и спровоцирована аналогичной проблемой, но по факту была решена NAT'ом в публичные адреса из удалённой сетки.
no subject
no subject
Одинаковый даже шлюз.
В машине два интерфейса: eth0 поднят c IP (обычная сеть, глядит в Иентернет), eth1 (только технологичесике датчики на объектах) поднят без IP.
Поскольку не нужно выводить датчики в Интернет, то VirtualBox привязан к eth1, а уж виртуальная машина пользует его как обычный интерфейс с IP. Данные с датчиков идут в файлы в расшаренной папке.
no subject
no subject
Что за VPN? OpenVPN? IPSec?
no subject
2) IPsec, но это тоже не принципиально. Для разнообразия можно поиграться с OpenVPN'ом, или вообще с физическими сетками, подключёнными к отдельным ethernet-интерфейсам.
no subject
ниже
Короче в 2х словах. В твой личный блох я не пойду регитс
Оговорочка по Фрейду: Если используется взрослое оборудование типа сиськи и взрослый 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 вариаций на эту тему.
Re: Короче в 2х словах. В твой личный блох я не пойду реги
Ну в целом идея понятна, а детальки везде могут быть разные.