The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"хитрый NAT"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Маршрутизаторы CISCO и др. оборудование. (Cisco маршрутизаторы)
Изначальное сообщение [ Отслеживать ]

"хитрый NAT"  +/
Сообщение от mik73 (ok), 26-Сен-23, 19:08 
Есть маршрутизатор CISCO (IOS 12.4 если это зачем-то важно).
Есть вот такая схема сети (связаны два корпоративных сегмента):

сеть2 10.0.2.0/24 - router2 - router1 - cеть1 192.168.1.0/24

При этом между сетями должен ходить трафик, но сеть2 принимает пакеты только от адресов 10.0.0.0/8, допустим. Сделать с этим ничего нельзя (router2 недоступен по управлению).

Соответственно на router1 устраиваем статический NAT и всё прекрасно работает:

Int e1
rem сеть1
Ip addr 192.168.1.1/24
Ip nat inside

Int e2
rem к сети2
172.16.0.1/30
Ip nat outside

ip route 10.0.2.0 255.255.255.0 e1
ip nat inside source static network 192.168.1.0 10.0.1.0 /24

Причем трансляция получается  "один в один", сохраняются все номера портов и если пакет ушёл из сети1 от адреса, допустим от 192.168.1.10, то в сети2 он виден как пришедший от 10.0.1.10, то же самое для любого адреса - т.е. все отправители пакетов, пришедших в сеть2, там однозначно идентифицируется (что нужно).

а теперь задача усложняется. кроме подключения к сети2 на router1 появляется подключение допустим, к Интернету (сети3).

                                сеть3 (интернет)
                                 ^
                                 |
сеть2 10.0.2.0/24 - router2 - router1 - cеть1 192.168.1.0/24

а в сети1 есть один хост (допустим, 192.168.1.100), который должен как ходить как в сеть 2 по прежней схеме, так и в сеть3 (Интернет). А остальные хосты должны по прежнему ходить в сеть2, но не должны в сеть3.

казалось бы должно сработать что-то вроде:

Int e1
rem сеть1
Ip addr 192.168.1.1/24
Ip nat inside

Int e2
rem в сеть2
172.16.0.1/32
Ip nat outside

Int e3
в сеть 3
1.1.1.1/29
ip nat outside

ip route 10.0.2.0 255.255.255.0 e1
ip route 0.0.0.0 0.0.0.0 1.1.1.2

ip nat inside source static network 192.168.1.0 10.0.1.0 /24
ip nat inside source list 150 int e2 overload

access-list 150 rem описывает весь трафик с 192.168.1.100, кроме отправленного в сеть 10.0.2.0 - и этот трафик должен бы попадать в соответствующую запись nat
access-list 150 deny ip host 192.168.1.100 10.0.2.0 0.0.0.255
access-list 150 permit ip ip host 192.168.1.100 any

Но ничего не получается. Трафик от 192.168.1.100, согласно таблицам трансляции и статистике nat, сначала транслируется в трафик от 10.0.1.100, а потом, если отправлен в произвольную сеть, а не на 10.0.2.0, то вообще никуда не попадает.

Понятно, что что-то делаю не так. Но как получить желаемое иначе - придумать не могу.
                                
                                

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "хитрый NAT"  +/
Сообщение от elk_killa (ok), 27-Сен-23, 11:08 
добавьте в правило nat(ip nat inside source route-map NAT_*) rm вида:

route-map NAT_2R2 permit 10
match ip address NAT_10.0.1.0
match interface e2

route-map NAT_2Global permit 10
match ip address NAT_150
match interface e3

Ответить | Правка | Наверх | Cообщить модератору

2. "хитрый NAT"  +/
Сообщение от mik73 (ok), 27-Сен-23, 16:57 
Cпасибо за наводку. Получилось. По ходу поэкспериментировал, выяснил следующие неочевидные вещи:

1. Если есть трансляция вида ip nat inside source static - то ничего не получается. Адрес источника всегда и сразу транслируется из 192.168.1.100 в 10.0.1.100 - независимо от адреса назначения.

2. Если использовать динамическую трансляцию типа source list, создав ACL типа:
ip access list ext NAT_10
   permit ip 192.168.1.0 0.0.0.255 10.0.1.0 0.0.0.255
ip access list ext NAT_150
   deny   ip any 10.0.1.0 0.0.0.255
   permit ip host 192.168.1.100 any
то опять не работает, всё то же самое, что с source static

3. Если поменять местами записи в ACL NAT_150 (cначала permit источник, потом deny получатель) -
то  с 192.168.1.100 всё начинает всегда уходить на интерфейс во внешнюю сеть, даже то, что предназначено в сеть 10.0.2.0.

4. Если сделать хотя бы одну запись для трансляции  через route-map (вторую можно оставить через list) - то всё работает.

Есть в этом что-то удивительное.


  

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру