LostSoul Опубликовано 27 сентября, 2018 · Жалоба Добрый день. Дано : Cisco 7206/NPE-G1 gi0/0 - в мир /30 стыковая сеть gi0/1 - внутренняя сеть с реальными IP 198.51.100.0/24 gi0/2 - внутренняя сеть с приватными IP 192.168.0.0/24 Задача - хочется сделать чтоб когда IP 192.168.0.10 обращаться во внешний мир , он транслировался в 198.51.100.10 при реализации "в лоб" у меня получается два варианта а) access-list 100 permit ip 192.168.0.0 0.0.0.255 any ip nat pool p1 198.51.100.10 198.51.100.10 prefix-length 30 ip nat source list 100 pool p1 в таком варианте весь входящий трафик на 198.51.100.10 перестает доходить до 198.51.100.10, а начинает вместо этого полностью транслироваться на 192.168.0.10 ( то есть получается nat симметричный , а не source nat ) б) access-list 100 permit ip 192.168.0.0 0.0.0.255 any ip nat pool p1 198.51.100.10 198.51.100.10 prefix-length 30 ip nat source list 100 pool p1 overload в таком варианте любые внешние подключения на адрес 198.51.100.10 начинают обламываться c connect refused. В обоих случаях работа устройства с адресом 198.51.100.10 полностью нарушается. Вопрос как добиться нормальной работы совместно устройств 198.51.100.10 и 192.168.0.10 одновременно , так чтоб при выходе в интернет подключения от них обоих приходили с 198.51.100.10? В Linux это делается так ( в одну команду ) iptables -t nat -I PREROUTING -s 192.168.0.10 -j SNAT --to-source 198.51.100.10 Как повторить этот подвиг на cisco? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ShyLion Опубликовано 27 сентября, 2018 · Жалоба ip nat inside source static 192.168.0.10 198.51.100.10 32 minutes ago, LostSoul said: Вопрос как добиться нормальной работы совместно устройств 198.51.100.10 и 192.168.0.10 одновременно Ааааа, захотелось сексу стоя в гамаке.... извиняйте Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 6 минут назад, ShyLion сказал: Ааааа, захотелось сексу стоя в гамаке.... извиняйте Что вы видите в этом сексуального? Это как бы типовой дизайн сети во множестве известных мне офисов. Когда рабочие станции имеет адреса к примеру 192.168.1.0 , а соответствующие им IP-телефоны 192.168.2.0 host-by-host , а на выходе с маршрутизатора они транслируются в 1 адрес чтоб попадать в ACL по IP на разных скриптах в CRM и прочих сервисах. Почему то что в любом красноглазом линуксе или микротике за 2 копейки работает в одно правило, на оборудовании от "лидера отрасли" требует каких то сверхестественных усилий? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 27 сентября, 2018 · Жалоба 14 минут назад, LostSoul сказал: Что вы видите в этом сексуального? Это обычно называется hairpin nat, иногда binat. Не уверен, что Cisco такое поддерживает, т.к. это именно извращение. Если уж хочется такого извращения, то лучше это делать на уровне доменных имен (чтобы одно имя разрешалось в зависимости от сети клиента). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 14 минут назад, alibek сказал: Если уж хочется такого извращения, то лучше это делать на уровне доменных имен (чтобы одно имя разрешалось в зависимости от сети клиента). вы сейчас вообще о чем-то другом думаете. указанная задача к плоскости dns вообще не относится, даже приблизительно. Извращением ( по моему мнению ) является именно захват на себя cisco того IP адреса , который используется как outside. Логичное поведение NAT : -Ко мне пришел пакет, он совпадает с одним из уже установленных через меня соединений? Да - транслируем , нет -- а он совпадает с одним из правил создания новой динамической трансляции? да - создаем , нет - пропускаем пакет на маршрутизацию. Идиотское поведение Cisco: -Ко мне пришел пакет, он совпадает с одним из уже открытых через меня соединений? нет . Он совпадает с каким-нибудь правилом создания новой динамической трансляции? Нет. А ДАВАЙ Я ЕГО ДРОПНУ!!!! Ничем, кроме как "альтернативной одаренностью" разработчиков IOS это не обьясняется. 14 минут назад, alibek сказал: Это обычно называется hairpin nat, иногда binat. Загуглил. Эти вещи не имеют отношения к моему вопросу. Мне не требуется чтоб устройства из сети 192.168.0.0 и 198.51.100.10 видели друг друга. Мне не требуется "двойной nat". dst nat в рамках вопроса вообще не обсуждается, только src nat Но так, чтоб те ip в которые идет трансляция не монополизировались маршрутизатором ,. а продолжали нормально функционировать Мне нужно чтоб устройства из этих двух сетей выходили в интернет одновременно. И чтоб новые входящие соединения из интернета на подсеть 198.51.100.10 корректно доходили. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба Сейчас попробовал немного изменить схему. Прописал что 198.51.100.128/23 находится за маршрутизатором R2 ( ip route add 198.51.100.128 255.255.128 198.51.100.126 ) и для указанной подсети все заработало в точности как ожидается. т.е. проблема именно с сеткой, которая прибита к циске как напрямую подключенная. Для адресов из такой сети ( непосредственно подключенной подсети ) , использованных как nat pool , циска считает своим долгом создать arp запись на себя. Для ip nat inside имеется какой-то параметр no-alias , вроде как раз для этого. А как задать тоже самое для ip nat source ( для NVI ) ? Может VRF как-то поможет? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 27 сентября, 2018 · Жалоба 8 минут назад, LostSoul сказал: Для адресов из такой сети ( непосредственно подключенной подсети ) , использованных как nat pool , циска считает своим долгом создать arp запись на себя. А как Вы себе представляете иначе? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 10 минут назад, UglyAdmin сказал: А как Вы себе представляете иначе? Я описал выше нормальную логику NAT. Как это делают линукс, микротик, джунипер , и так далее. Любой пришедший ip-пакет проверяется на принадлежность к одному из уже открытых соединений , затем проверяется не попадает ли он под правило создания новой трансляции, если нет то просто ПРОПУСКАЕТСЯ КУДА СЛЕДОВАЛ. Вы просто привыкли мыслить в типовой парадигме что белые IP-адреса , использованные как NAT-пулл нельзя более никуда отмаршрутизировать и они должны пропадать, прибитые к роутеру. Но это не так. Их спокойно можно назначить и на сервера , выполняющие какие-то полезные функции. Главное чтоб трафик в обе стороны проходил через один и тот же NAT-маршрутизатор. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 27 сентября, 2018 · Жалоба Если циска не будет арп-запись приколачивать на себя, куда пойдут ответные пакеты этой сессии? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 9 минут назад, UglyAdmin сказал: Если циска не будет арп-запись приколачивать на себя, куда пойдут ответные пакеты этой сессии? Что значит "ответные" от кого и кому? Есть маршрутизатор. У него со стороны аплинка g0/0 стыковый адрес , например 1.1.1.2/30 Со стороны нашей подсети g0/1 подсеть реальных адресов ( внутренняя сеть ) 198.51.100.1/24 Со стороны локалки с серыми адресами g0/2 192.168.0.1/24 Любые пакеты на dst 192.168.0.1/24 пойдут на g0/2 Любые пакеты на dst отличным от 192.168.0/24 , 198.51.100.0/24 и 127.0.0.0 пойдут на default gateway 1.1.1.1- к аплинку. Пакеты входящие от аплинка через g0/0 ( на dst 198.51.100.0/24 , а другие он к нам не роутит ) пойдут на g0/0 , туда где у нас эти адреса и используются. Кроме случая, если пакет пренадлежит NAT-соединению из сети 192.168.0 , тогда адрес и целевой интерфейс будет изменен согласно таблице ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 27 сентября, 2018 · Жалоба Рассматривайте все случаи. Например, 192.168.0.12 обращается на 198.51.100.12. У Вас же NAT не на интерфейс прописан, а на IP-адрес... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 3 минуты назад, UglyAdmin сказал: Рассматривайте все случаи. Например, 192.168.0.12 обращается на 198.51.100.12. рассматриваю. В этом случае пусть ничего не работает. Связи между этими двумя сетями не требуется. Хотя в том же линуксе и микротике с этим ноль проблем. Просто пишем так iptables -t nat -I PREROUTING -s 192.168.0.12 -d ! 198.51.100.0/24 -j SNAT --to-source 198.51.100.12 и все. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 27 сентября, 2018 · Жалоба iptables гибче, тут вопросов нет... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ShyLion Опубликовано 27 сентября, 2018 · Жалоба 3 hours ago, LostSoul said: Когда рабочие станции имеет адреса к примеру 192.168.1.0 , а соответствующие им IP-телефоны 192.168.2.0 host-by-host , а на выходе с маршрутизатора они транслируются в 1 адрес чтоб попадать в ACL по IP на разных скриптах в CRM и прочих сервисах. Много писал, стирал... удачи, Вам, коллега, короче :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба Лучше бы кто подсказал, как сделать чтоб циска не считала подвешенную на интерфейсе сеть за локально доступную. попробовать 192.168.0 сетку и nat в vfr с другим id увести? а как тогда сделать чтоб в нее нат и vrf main работал? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 27 сентября, 2018 · Жалоба 2 часа назад, LostSoul сказал: Лучше бы кто подсказал, как сделать чтоб циска не считала подвешенную на интерфейсе сеть за локально доступную. Что-то не понял глубину замысла... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Pinkbyte Опубликовано 27 сентября, 2018 · Жалоба ИМХО никак. Да и на Linux-е я от таких экспериментов отошел. Потому что это у вас сейчас одна железка наружу все белые адреса транслирует и NAT-ит. А когда их станет две ваша красивая схема развалится к хе^W черту. Не, святое дело любить черезжопные схемы. У самого кое-где есть IPv4-сетка с адресами /32 на обоих концах, поверх одного из которого зароучен еще один /32. На Cisco в VRF-е повторить такую конфигурацию если и можно, то оооочень геморройно - route-map+set vrf, вот это вот всё - явно зароутить адрес на интерфейс(а не на ip в диапазоне connected самого интерфейса) нельзя внутри VRF-а. Ну так и изначально я понимал что такая идея - костыль, ничего(кроме экономии белых адресов, да) не мешало сделать две сетки по /31. Следует чётко понимать, какие стандартные возможности есть у софта. А то мало ли вам захочется на старых Windows /31 поднять - бяда-бяда огорчение вас ждет. Хотя казалось бы - что такого, ну подсеть, ну 2 адреса всего - в чём проблема? А RFC 3021 отдельные не зря выпустили, ага... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 27 сентября, 2018 · Жалоба 4 часа назад, UglyAdmin сказал: Что-то не понял глубину замысла... Глубина замысла следующая Все то, что я хотел в исходном сообщении успешно работает по варианту Б , но только в том случае, если подсеть реальных адресов не прописана непосредственно на интерфейсе , а доступна через какой-нибудь r2 через gateway. то есть когда interface g0/1 ip address 198.51.100.1 255.255.255.0 так ничего не работает, циска поднимает любой адрес определенный в nat pool на себе. если же вот так ip route 198.51.100.0 255.255.255.0 <r2_gateway_ip> то вот так все работает, прямо как я хочу. Вот только ставить второй маршрутизатор ради реализации этой задачи на продакшен я не хочу. поэтому думаю, как бы заставить роутер думать что 198.51.100.0 не является directly connected для задач nat 3 часа назад, Pinkbyte сказал: А то мало ли вам захочется на старых Windows /31 поднять Это на каких конкретно старых, на 3.1 что ли? На windows 95 / windows nt 4.0 нормально поднималось. Две железки там никогда не будет. одну конкретную подсеть /24 всегда будет обслуживать непосредственно возле абонентов только одна железка. а дальше там конечно бордеров больше, но их этот nat уже не касается, он для них прозрачен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
UglyAdmin Опубликовано 28 сентября, 2018 · Жалоба Ну, можно /32 на лупбэк повесить, интерфейс аннамбередом прописать и на каждый живой IP прописать маршрут /32 в этот интерфейс. Но что-то мне это кажется "черезжопной схемой" (С). Ещё можно попробовать в качестве костыля маршрут /32 на 198.51.100.10 сделать, в тот же интерфейс. :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Pinkbyte Опубликовано 28 сентября, 2018 · Жалоба 10 hours ago, LostSoul said: На windows 95 / windows nt 4.0 нормально поднималось. https://social.technet.microsoft.com/Forums/ie/en-US/45f91dd0-ba93-403b-9679-741df0595556/unable-to-use-31-255255255254?forum=windowsserver2008r2networking Please understand that it is the expected behavior. The longest mask which is fully supported is a /30. В теме обсуждение Windows Server 2008 R2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 28 сентября, 2018 · Жалоба 59 минут назад, Pinkbyte сказал: В теме обсуждение Windows Server 2008 R2 оно поднимается не так, насколько я помню. реальный адрес по /32 маске вешается не на ethernet интерфейс , а на что-то типа loopback . а шлюз можно вообще на все адреса один или даже "серый" Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rivia Опубликовано 28 сентября, 2018 · Жалоба 11 hours ago, LostSoul said: Глубина замысла следующая Все то, что я хотел в исходном сообщении успешно работает по варианту Б , но только в том случае, если подсеть реальных адресов не прописана непосредственно на интерфейсе , а доступна через какой-нибудь r2 через gateway. то есть когда interface g0/1 ip address 198.51.100.1 255.255.255.0 так ничего не работает, циска поднимает любой адрес определенный в nat pool на себе. если же вот так ip route 198.51.100.0 255.255.255.0 <r2_gateway_ip> то вот так все работает, прямо как я хочу. Вот только ставить второй маршрутизатор ради реализации этой задачи на продакшен я не хочу. поэтому думаю, как бы заставить роутер думать что 198.51.100.0 не является directly connected для задач nat На интерфейс gi0/1 циски ptp 198.51.100.254/30, статический маршрут до 198.51.100.0/24 с гейтвеем gi0/1, на конечных точках сеть прописывается 198.51.100.0/24 и гейтвей 198.51.100.254. Если сервера напрямую по l2 без фильтров то все ок, арпы должны добегать, иначе еще возможно потребуются шаманства. В любом случае это тоже "околожопный ход". Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Pinkbyte Опубликовано 28 сентября, 2018 · Жалоба 12 minutes ago, LostSoul said: оно поднимается не так, насколько я помню. В новых Windows достаточно /32 на интерфейс и через route add добавить постоянный маршрут на другой конец, а в качестве адреса шлюза указать адрес самой машины(та еще шиза, ну да бог с ним). В старых версиях нужны более эпичные костыли и не факт что будет нормально работать - я пробовал, было печально. У Mikrotik кстати примерно такой же подход - /32 на interface, а в качестве адреса сети - адрес другой стороны. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 28 сентября, 2018 · Жалоба 2 минуты назад, Pinkbyte сказал: У Mikrotik кстати примерно такой же подход - /32 на interface в микротике через winbox по крайней мере можно выбрать роутить что угодно в интерфейс вроде. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Pinkbyte Опубликовано 28 сентября, 2018 · Жалоба Just now, LostSoul said: в микротике через winbox по крайней мере можно выбрать роутить что угодно в интерфейс вроде. Это так, но даже маршрут добавлять не обязательно - спокойно настраивается через интерфейс. Единственное что - connected-route при redistribution вы вида /31 таким образом не получите. Так что если планируется динамическая маршрутизация - лучше делать static route-ом, да. А насчет зароутить в интерфейс что угодно - я уже рассказывал про /32 зароученный через /32 - Mikrotik у меня как раз учавствует в этой вакханалии :-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...