Двухсторонняя подмена реальных IP серверов на виртуальные стандартами Сisco

Напишу заметку, больше для себя, так как решение этой задачки неожиданно потребовало усилий для решения, и материал может пригодиться в будущем, так как подобные задачи нередки. Задача была следующая:
Создал VPN туннель с организацией партнером, и нужно было, чтобы трафик гонялся между парой серверов в нашем ЦОД и парой серверов в их зоне. Задача тривиальная, решаемая роутингом и натом.
Однако был нюанс, что по партнерской политике безопасности, обращаться на реальные ip адреса как им к нам так и нам к ним запрещено. Для таких целей специально выделяются адреса из CIDR диапазона. необходимо было пробросить трафик между серверами с использованием двойной подмены адресов источника и назначения.

Исходные данные:
Четыре сервера на их стороне со скрытыми реальными адресами подменяют адресами 172.20.20.1, 172.20.20.2, 172.20.20.3 и 172.20.20.4
Первый сервер на нашей стороне боевой, находится в демилитаризованной зоне с реальным адресом 88.100.90.88 (подключен к cisco на интерфейс Gi0/1) нужно подменить на 172.30.30.1
Второй сервер на нашей стороне тестирования, находится в локальной сети с реальным адресом 192.168.10.1 (подключен на интерфейс Gi0/2) нужно подменить на 172.30.30.2

Их сервера слушают наши пакеты на порту 10000
Наши сервера слушают их пакеты на порту 20000

Gi0/1 и Gi0/2 для ната являются inside а Tunnel5 outside.

Построен IPSec тунель между организациями. На нашей стороне Tunnel5 смотрит к ним.
Сначала хотел решить посредством static nat с порта на порт с адреса на адрес. но не вышло. Правила такого ната закроют порты от доступа по реальным адресам, а это не подходит, так как по этим портам на серверах идут и другие клиенты.
Потом пробовал nat overload туннельного интерфейса, что тоже не заработало. Итоговое решение оказалось вот таким:

Добавил маршрутизацию для виртуальных адресов и подсетей туда, где за виртуальными адресами будут прятаться реальные сервера:
ip route 172.30.30.1 255.255.255.255 GigabitEthernet0/1
ip route 172.30.30.2 255.255.255.255 GigabitEthernet0/2
ip route 172.20.20.0 255.255.255.248 Tunnel5

Добавил ACL разрешающий пройти трафику с внешних виртуальных адресов на мои виртуальные адреса:
ip access-list extended extcorp-vpn-inside
permit ip 172.20.20.0 0.0.0.7 172.30.30.0 0.0.0.3

Добавил роутмап, уточняющий маршрут трафика для виртуальных сетей:
route-map extcorp-vpn-inside-map permit 10
match ip address extcorp-vpn-inside

Добавил static nat, по которому приходящие извне пакеты натятся так только тогда, когда совпадают правила ACL привязанного к роутмапу:
ip nat inside source static tcp 88.100.90.88 20000 172.30.30.1 20000 route-map exеtorp-vpn-inside-map extendable
ip nat inside source static tcp 192.168.10.1 20000 172.30.30.2 20000 route-map exctorp-vpn-inside-map extendable

После этого с сервров партнеров стало возможно подключиться на порт 20000 наших серверов по виртуальным адресам. Дальше нужна видимость их серверов от наших.

Добавил ACL разрешающий трафик от реальных адресов серверов до виртуальной сети организации партнера:
ip access-list extended real-vpn-externalcorp
permit ip host 88.100.90.88 172.20.20.0 0.0.0.7
permit ip host 192.168.10.1 172.20.20.0 0.0.0.7

Создал два пула, по одному на каждый сервер. Пулы вырожденные до единственного адреса самих серверов:
ip nat pool dmz-to-excorp-pool 172.30.30.1 172.30.30.1 netmask 255.255.255.252
ip nat pool lan-to-excorp-pool 172.30.30.2 172.30.30.2 netmask 255.255.255.252

И, наконец, наттинг с подменой для обоих пулов:
ip nat inside source list real-vpn-externalcorp pool lan-to-excorp-pool overload
ip nat inside source list real-vpn-externalcorp pool dmz-to-excorp-pool overload

Все. После этого сервера стали видеть друг друга по виртуальным адресам и коннектиться по искомым портам. Так как мне не известны параметры настроек натов и роутинга на их стороне, другая сторона может быть настроена аналогичным, зеркальным образом.
Удобство этого метода хорошо тем, что при замене реального ip адреса внутри организации, не нужно оповещать об этом сторону партнера для переписывания правил на их стороне. Нужно просто сделать поправки в нате и ACL у себя.

Поделиться

Опубликовать в Facebook
Опубликовать в LiveJournal

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>