Jump to content
Калькуляторы

NAT на secondary-интерфейсах Cisco NAT to ISP addresses

Добрый вечер. Возникла непонятная проблема при настройке NAT-a на роутере. На схеме показана текущая рабочая конфигурация. С ПК имею доступ к роутеру и могу пинговать все его внешние интерфейсы с белыми адресами (x.y.z.58-62). Доступа к ISP при такой настройке мы понятно не имеем. Добавляю к текущей схеме следующие правила для NAT-а:

ip access-list extended NAT_SRC
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip host 10.78.18.12 any
ip nat pool EXT_IP x.y.z.60 x.y.z.60 netmask 255.255.255.248
ip nat inside source list NAT_SRC pool EXT_IP vrf vrf_main overload

И тут происходит магия, с ПК получаю доступ к шлюзу провайдера и Интернету, однако перестают пинговаться все белые secondary-интерфейсы роутера. Опытным путем выяснил, что это не зависит от того как делать NAT через pool или через interface. При установке одного из secondary-интерфейсов в качестве primary на Gi0/1 он начинает пинговаться изнутри сети, а secondary-интерфейс (бывший primary) отваливается. Что я делаю не так?

WPorkSu.png

Share this post


Link to post
Share on other sites

Вы не понимаете как это работает. Не надо секондари вешать, если они будут частью натпула

Не вопрос, можете дать какие-то рекомендации, как надо вешать? Существует вариант настроить это так, чтобы адрес был доступен одновременно изнутри, снаружи и через него можно было натить? Повесить на разные сабинтерфейсы нельзя потому что рутер ругается на пересечение сетей на разных сабинтерфейсах. Вешать на разные физические outside-интерфейсы очень не хочется, потому что у меня уже сейчас две /29 на рутере, есть вероятность, что будет еще. Не отдавать же под каждый адрес физический порт?

Share this post


Link to post
Share on other sites

Не надо секондари вешать, если они будут частью натпула

Опять же, если вы посмотрите, то в нат-пул сейчас добавлен только один secondary-адрес, а недоступны все secondary. Я как-то не улавливаю связи.

Share this post


Link to post
Share on other sites

Проверьте вот такой вариант:

1. Используемые для НАТа адреса убрать из секондари, как уже рекомендовали выше.

2. Поправить АЦЛ, исключив из НАТа трафик изнутри на оставшиеся секондари, что-то типа:

ip access-list extended NAT_SRC
deny ip any host a.b.c.59
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip host 10.78.18.12 any

Share this post


Link to post
Share on other sites

чтобы адрес был доступен одновременно изнутри, снаружи

Что значит "был" доступен и зачем? У вас overload. Допустим если нет трансляции, то как должен роутер поступить с пакетом и зачем?

Share this post


Link to post
Share on other sites

Проверьте вот такой вариант:

1. Используемые для НАТа адреса убрать из секондари, как уже рекомендовали выше.

2. Поправить АЦЛ, исключив из НАТа трафик изнутри на оставшиеся секондари, что-то типа:

 

Сделал вот так:

 

interface GigabitEthernet0/1
description OUTSIDE_MAIN
ip vrf forwarding VRF_MAIN
ip address a.b.c.58 255.255.255.248 secondary
ip address a.b.c.59 255.255.255.248 secondary
ip address a.b.c.60 255.255.255.248 secondary
ip address a.b.c.61 255.255.255.248 secondary
ip address a.b.c.62 255.255.255.248
ip access-group FILTER_ISP_MTS_IN in
ip access-group FILTER_ISP_MTS_OUT out
no ip redirects
ip nat outside
ip virtual-reassembly in
load-interval 30
duplex auto
speed auto
no cdp enable

ip access-list extended NAT_SRC
deny   ip any 10.0.0.0 0.255.255.255
deny   ip any 172.16.0.0 0.15.255.255
deny   ip any 192.168.0.0 0.0.255.255
deny   ip any host a.b.c.58
deny   ip any host a.b.c.59
deny   ip any host a.b.c.60
deny   ip any host a.b.c.61
deny   ip any host a.b.c.62
permit ip host 10.78.18.12 any

ip nat pool EXT_IP x.y.z.60 x.y.z.60 netmask 255.255.255.248
ip nat inside source list NAT_SRC pool EXT_IP vrf VRF_MAIN overload

 

 

При такой настройке всё работает почти так, как нужно. Все адреса на интерфейсе доступны как снаружи, так и изнутри сети. Под "доступны", я имею ввиду, что они отвечают на пинг. Но осталось несколько странностей.

1. Можно пояснить, почему нужно снимать с интерфейса адрес, который используется для NAT? Если я снимаю с интерфейса адрес, который сейчас используется в нат-пуле, пропадает связь ПК (10.78.18.12) со шлюзом провайдера и внешним миром.

2. И второй момент. В такой конфигурации я для проверки потыкался в SSH, запущенный на роутере и получил странный результат:

a.b.c.58 - SSH не доступен (why?)

a.b.c.59 - SSH доступен

a.b.c.60 - SSH не доступен (что судя по всему логично, у нас этот адрес под nat overload)

a.b.c.61 - SSH доступен

a.b.c.62 - SSH доступен

Почему недоступен SSH на 58-м IP-адресе? Он ничем не отличается от 61-го, на котором SSH отвечает.

Share this post


Link to post
Share on other sites

ip nat pool EXT_IP x.y.z.60 x.y.z.60 netmask 255.255.255.248

 

Поставь netmask 255.255.255.0

При маленьких масках НАТ глючил у меня.

Edited by ShyLion

Share this post


Link to post
Share on other sites

Поставь netmask 255.255.255.0

При маленьких масках НАТ глючил у меня.

К сожалению, не помогло. Всё осталось точно так же, на 58-м адрес не отвечает.

Share this post


Link to post
Share on other sites

 ip address a.b.c.58 255.255.255.248 secondary

 ip address a.b.c.59 255.255.255.248 secondary

 ip address a.b.c.60 255.255.255.248 secondary

 ip address a.b.c.61 255.255.255.248 secondary

зачем это? в чем тайный смысл?

 

ip access-list extended NAT_SRC

 deny   ip any 10.0.0.0 0.255.255.255

 deny   ip any 172.16.0.0 0.15.255.255

 deny   ip any 192.168.0.0 0.0.255.255

 deny   ip any host a.b.c.58

 deny   ip any host a.b.c.59

 deny   ip any host a.b.c.60

 deny   ip any host a.b.c.61

 deny   ip any host a.b.c.62

 permit ip host 10.78.18.12 any

правильно делать так

 

ip access-list extended NAT_SRC

permit ip host 10.78.18.12 any

Share this post


Link to post
Share on other sites

зачем это? в чем тайный смысл?

 

Я уже писал выше. Если убрать адрес с интерфейса, он становится недоступен изнутри и снаружи роутера. А именно, роутер не отвечает по этому адресу на пинг и не работает статик-нат по конкретным портам на этом IP.

 

правильно делать так

 

ip access-list extended NAT_SRC

permit ip host 10.78.18.12 any

 

При такой настройке в нат попадают, например, пакеты у которых src - 10.78.18.12, а dst - 192.168.20.20. То есть мы NAT-им в сеть провайдера пакеты к серым адресам, что в общем-то моветон. Зачем сделаны отдельные deny по каждому из 58-62, тоже написано выше, без них, трафик к этим адресам попадает в нат и не возвращается к 10.78.18.12.

 

Собственно, на конкретный вопрос так никто и не ответил. Почему два secondary-адреса (58 и 59, например) с одинаковой настройкой работают на роутере по разному, на одном из них SSH-сервис роутера отдается, а на втором нет?

Edited by fregatte

Share this post


Link to post
Share on other sites

Я уже писал выше. Если убрать адрес с интерфейса, он становится недоступен изнутри и снаружи роутера. А именно, роутер не отвечает по этому адресу на пинг и не работает статик-нат по конкретным портам на этом IP.

Нужно натить целиком адрес в адрес и включать фаервол либо на роутере либо на хосте. Тогда и на пинги будет сам хост отвечать.

В вашем примере у проверяльщика снаружи может сложиться ложное впечатление, что пингуемый хост и есть тот конечный сервер, куда проброшены порты, а это на деле не так.

Share this post


Link to post
Share on other sites

То есть мы NAT-им в сеть провайдера пакеты к серым адресам, что в общем-то моветон.

Это если вы обмениваетесь маршрутами с провайдером, иначе без ната просто не будет связи, если связь и не нужна, это решается иными способами

 

А именно, роутер не отвечает по этому адресу на пинг и не работает статик-нат по конкретным портам на этом IP.

я нигде не вижу чтобы какие либо трансляции настраивались для этого. и вообще какая конкретно задача решается

 

то что уже настроено со вторичными адресами из одной сети на одном интерейсе видимо было найдено в каокй-то инструкции на сайте с хард проном

 

в качестве альтернативы еще предлагаю перейти от nat inside/outside к nat nvi, тогда может что-то и заработает

Share this post


Link to post
Share on other sites

Мы делали примерно так

ip nat pool 5192 10.77.5.192 10.77.5.255 prefix-length 26 add-route

так создаются статик роуты на nvi интерфейс, так роутер начинает отправлять нужные пакеты для ната

а потом статик наты

ip nat source static 10.32.193.5 10.77.5.232

ip nat source static 10.150.72.81 10.77.5.233

ip nat source static 192.168.12.133 10.77.5.234

ip nat source static 192.168.10.32 10.77.5.235

ip nat source static 192.168.12.113 10.77.5.236

чистый нат ip в ip

Гораздо гибче и красивее. Порты так тоже можно пробрасывать (наверное, не пробовал)

Share this post


Link to post
Share on other sites

Нужно натить целиком адрес в адрес и включать фаервол либо на роутере либо на хосте. Тогда и на пинги будет сам хост отвечать.

В вашем примере у проверяльщика снаружи может сложиться ложное впечатление, что пингуемый хост и есть тот конечный сервер, куда проброшены порты, а это на деле не так.

 

Хочется именно этого. Я хочу, чтобы на пинг отвечал именно роутер, по всем IP-адресам, которые мне выдал провайдер. Потому что это наиболее простой способ контролировать, что провайдер не разломал у себя маршрутизацию и пакеты из внешней сети вообще добегают до роутера. Когда ответа роутера на пинг нет, при любых возникших проблемах возникает вопрос, это провайдер у себя что-то сломал или просто нат перестал работать на рутере? Каким образом убедиться, что пакет долетел до роутера?

 

Это если вы обмениваетесь маршрутами с провайдером, иначе без ната просто не будет связи, если связь и не нужна, это решается иными способами

 

Причем тут маршруты? Провайдер выдал /29 белую сеть, в которой (и за которой) заведомо не может быть серых адресов. Так зачем мне выпускать за периметр пакеты с адресами назначения серых сетей?

 

нигде не вижу чтобы какие либо трансляции настраивались для этого. и вообще какая конкретно задача решается

 

Коротко опишу, что хочется сделать. Есть несколько белых адресов, которые выдал провайдер.

1) Хочется чтобы по всем IP-адресам на пинг отвечал сам роутер. Это просто удобно для контроля живости интерфейса.

2) Один из адресов используется для динамического ната внутренних хостов наружу (в моем случае, это 60-й адрес, который отведен под nat overload).

3) На остальных адресах хочется пробросить отдельные порты на различные хосты внутри сети (у меня этого пока не написано), то есть нат адрес-в-адрес не подходит.

 

Насколько это реализуемо?

Пока ни один человек так и не объяснил, в чём проблема использовать secondary-интерфейсы, однако все говорят, что это плохо. Где об этом написано? Кто-нибудь может внятно объяснить почему?

Share this post


Link to post
Share on other sites

Так зачем мне выпускать за периметр пакеты с адресами назначения серых сетей?

это делается не через нат, они все равно будут выходить, это делается вот так

ip route 10.0.0.0 255.0.0.0 null0

ip route 100.64.0.0 255.192.0.0 null0

ip route 172.16.0.0 255.224.0.0 null0

ip route 192.168.0.0 255.255.0.0 null0

 

Потому что это наиболее простой способ контролировать, что провайдер не разломал у себя маршрутизацию и пакеты из внешней сети вообще добегают до роутера.

для этого достаточно ровно одного ip адреса который висит на интерфейсе роутера, и не надо настраивать их все. если будет сломана маршрутизация, завалится вся сеть а не отдельный хост

Share this post


Link to post
Share on other sites

ip route 10.0.0.0 255.0.0.0 null0

ip route 100.64.0.0 255.192.0.0 null0

ip route 172.16.0.0 255.224.0.0 null0

ip route 192.168.0.0 255.255.0.0 null0

 

Тогда уж:

 

ip route 10.0.0.0 255.0.0.0 null0 254

ip route 100.64.0.0 255.192.0.0 null0 254

ip route 172.16.0.0 255.224.0.0 null0 254

ip route 192.168.0.0 255.255.0.0 null0 254

Share this post


Link to post
Share on other sites

не обязательно

можно конечно, но не обязательно

 

PS хотя думаю да, так будет правильней в некоторых случаях и не хуже во всех остальных

Share this post


Link to post
Share on other sites

ip route 10.0.0.0 255.0.0.0 null0 254

ip route 100.64.0.0 255.192.0.0 null0 254

ip route 172.16.0.0 255.224.0.0 null0 254

ip route 192.168.0.0 255.255.0.0 null0 254

 

Теперь буду знать. Выглядит действительно правильнее, чем извращения с ACL.

Спасибо всем за помощь!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.