Cisco. Настройка NAT
Конфигурация inside source NAT
Вводная:
- Сеть 10.0.0.0/24 является внутренней (серой, клиентской)
- Пул адресов 10.1.1.10-20/24 является внешним (белые адреса смотрят в аплинк)
Теперь сами команды.
1. Указываем, что транслировать. Для этого создаем access-list, перечисляющий трафик. Например, в нашем случае достаточно одной строчки:
(config)# access-list 100 permit ip 10.0.0.0 0.255.255.255 any
Замечание. В ACL могут встречаться строчки deny. Вопреки распространенному заблуждению, трафик удовлетворяющей данной строчке не дропается, а просто не подвеграется трансляции. Так же, ACL может быть стандартным и расширенным, нумерованным и именованным.
2. Создаем пул из адресов, указывая стартовый и конечный адрес. Например так:
(config)# ip nat pool NAME_OF_POOL 11.1.1.10 11.1.1.20 netmask 255.255.255.0
Замечания.
- Стартовый и конечный адрес в пуле могут совпадать, тогда трансляция будет в 1 адрес.
- НЕЛЬЗЯ указвать используемые IP в пуле внешних адресов
- Опция netmask, хотя и является обязательной, по моему мнению — рудимент. Она позволяет вырезать из диапазона адресов в пуле те адреса, которые являются адресами подсети или бродкастными при данной маске.
3. Маркируем интерфейсы. В нашем случае достаточно
(config)# interface fa 0/0
(config-if)# ip nat inside
и
(config)# interface fa 0/1
(config-if)# ip nat outside
4. создаем собственно трансляцию:
ip nat inside source list 100 pool NAME_OF_POOL overload
Слово в конце overload указывает, что для трансляции адресов можно использовать динамический выбор портов. В противном случае, если это слово не указать, будут использоваться равнозначные порты. Пример: клиент отправивший запрос с порта 1111 займет на внешнем IP тот же порт.
вуаля :) Если мы теперь обратимся например с хоста 10.1.1.1 к хосту 11.1.1.2, то получим такую трансляцию:
Router#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 11.1.1.10:55209 10.0.1.1:55209 11.1.1.2:23 11.1.1.2:23
Ещё хорошая статья на эту тему http://xgu.ru/wiki/Cisco_NAT