Назад |
Перейти на главную страницу
Как установить VPN-подключения к разным сетям с одинаковым CIDR?
Так,
У меня есть приложение, работающее в VPC, с (в настоящее время) VPN-подключением к месту разработки. Приложение доступно, скажем, по адресу 10.0.2.25 (IP-адрес внутреннего ELB, доступный только через VPN). У меня есть маршрутизатор с поддержкой VPN (он же клиентский шлюз), который не поддерживает BGP.
CIDR сети, в которой я нахожусь (клиентская сеть - 192.168.1.0/24), а на VPC есть виртуальный частный шлюз (vgwA) и соответствующее правило маршрутизации (Destination 192.168.1.0/24; Target wgwA).
Я могу получить доступ к приложению без каких-либо проблем (все группы ACL / безопасности настроены правильно).
Мой вопрос: что происходит, когда я хочу создать другое VPN-соединение с другим сайтом, но в чьей сети есть тот же блок CIDR (192.168.1.0/24) или блок CIDR, который может перекрывать (или включать) его (например, 192.168.1.0 / 16)? Успешно ли это - и смогут ли пользователи в клиентских сетях получить доступ к приложению?
В принципе, что мне нужно, чтобы иметь возможность устанавливать VPN-подключения к разным сетям, которые имеют одинаковый (или частично общий) CIDR? Клиентский шлюз с поддержкой BGP? Разные виртуальные шлюзы в одном VPC? (Я не думаю, что AWS позволяет это - и это действительно не имеет смысла) Правила маршрутизации, основанные на внешнем IP-адресе клиентского шлюза? (например, Destination: 87.44.75.124 Target: vgwA; - на самом деле не имеет смысла)
«Правильное» решение - изменить блок CIDR вашего VPC, чтобы предотвратить такое перекрытие. Поскольку это непростая задача, поскольку в настоящее время вам необходимо запускать копии ваших экземпляров во вновь созданном VPC, вы можете использовать следующий прием:
Определите свое VPN-устройство как динамический NAT, который преобразует неперекрывающийся IP-адрес в реальный частный IP-адрес вашего VPC, обеспечивая при этом локальный DNS для серверов в VPC с указанным выше набором неперекрывающихся IP-адресов.
Чтобы быть более конкретным, у вас будут следующие компоненты в клиентской сети, если предположить, что у вас есть какое-то устройство VPN:
- Маршрутизатор, обращенный к VPC, имеет маршрут IP-адреса, например, 192.168.3.0/24, указывающий на VPC.
- Клиент реализует внутренний DNS-сервер, который реализует записи DNS A типа: customer-A-record.customerdomain.com -> 192.168.3.x
- Локальные пользователи (домашняя сеть) получают доступ к ресурсам VPC, используя DNS-имена (НЕ IP-адреса); поэтому, когда пользователь внутренней сети пытается подключиться к хосту VPC по SSH или HTTP, он делает это против имени DNS (НЕ IP-адреса): customer-A-record.customerdomain.com
- Внутренний DNS-сервер преобразовывает DNS-имя в IP-адрес 192.168.3.x / 24
- В таблицах маршрутизации внутреннего маршрутизатора / коммутатора уровня 3 есть запись таблицы маршрутизации для 192.168.3.x / 24, указывающая на шлюз клиента VPC (который является шлюзом VPN в клиентской сети, завершающим VPN-соединение с VPC).
- Клиентский шлюз VPN получает пакет, идущий на 192.168.3.x / 24; он имеет статическую запись NAT DNAT назначения для преобразования 192.168.3.x-> 192.168.0.x
- Клиентский VPN-шлюз гарантирует, что исходный IP-адрес также транслируется, чтобы гарантировать наличие неперекрывающегося обратного IP-адреса, поэтому, помимо DNAT, все это источник NAT SNAT: 192.168.0.x-> 192.168.3.x (может быть другой исходной IP-подсетью - более эффективно использовать одно и то же для SNAT и DNAT)
- Клиентский шлюз VPN теперь пересылает пакет на свой туннель / интерфейс IPSec, который имеет (Source-IP, Destination-IP) = (192.168.3.x, 192.168.0.x), что создает конфликты в сети назначения (VPC).
- Хосты VPC получают неконфликтный пакет, делают с ним то, что должны делать, и отправляют ответный пакет вида (Source-IP, Destination-IP) = (192.168.0.x, 192.168.3.x) через VPN-туннель в клиентскую сеть
- Клиентский VPN-шлюз в клиентской сети выполняет как DNAT / SNAT, так и заканчивается другим неконфликтным ответом в форме (Source-IP, Destination-IP) = (192.168.3.x, 192.168.0.x), который он затем перенаправляет в свою локальную (домашнюю) сеть на 192.168.0.0/24.