Вы находитесь на странице: 1из 10

Настройка Inter-vlan routing, ACL и NAT на оборудовании cisco

Доброго времени суток!!!

В прошлом посте мы настроили несколько vlan на cisco switch, познакомились с


протоколом VTP и посмотрели, как он работает. После наших настроек, если помните,
сетевой доступности между vlan не было. Сегодня, я хочу предложить вам это исправить и
организовать сетевое взаимодействие между vlan, а так же контролируемый доступ во
внешнюю сеть («интернет») с помощью ACL и NAT (Network address translation).
Кому интересно, добро пожаловать под кат…

Я предлагаю реализовать задуманное по принципу построения сети «Роутер на палочке»


(Router on the stick). Это решение очень распространено в малых сетях (небольшое
предприятие, офис и т.д.). Так что думаю, нашу схему можно будет взять, при
необходимости, за основу для построения реальной сети :).
Вот эта схема:

Добавим немного условий :):

 1 – хосты из vlan 2 и vlan 4 имеют доступ в «Internet» (прохождение ping на


loopback роутера ISP);
 2 – хост из vlan 3 не имеет доступа в «Internet», но должен ping-овать хосты из vlan
2 и vlan 4.

Раскладка по портам на коммутаторе:

 - f1/0 – 802.1q Trunk;


 - f1/1 – f1/3 vlan 1 (Native);
 - f1/4 – f1/7 vlan 2;
 - f1/8 – f1/11 vlan 3;
 - f1/12 – f1/15 vlan 4.

Доступ в «интернет» предлагаю организовать через NAT (Network address translation),


ограничение доступа будем реализовывать с помощью ACL. Теорию по NAT и ACL
можно посмотреть тут и тут, соответственно.
Схема определена, условия поставлены :). Переходим к настройкам.
Начнем с настроек нашего Switch:

 R3>en
 R3#conf t
 R3(config)#hostname Switch
 Switch(config)#int vlan 1
 Switch(config-if)#ip address 192.168.1.2 255.255.255.0
 Switch(config-if)#no shutdown
 Switch(config-if)#exit
 Switch(config)#vlan 2
 Switch(config-vlan)#name vlan_2
 Switch(config-vlan)#exit
 Switch(config)#vlan 3
 Switch(config-vlan)#name vlan_3
 Switch(config-vlan)#exit
 Switch(config)#vlan 4
 Switch(config-vlan)#name vlan_4
 Switch(config-vlan)#exit
 Switch(config)#exit
 Switch(config)#int range f1/4 - 7
 Switch(config-if-range)#switchport mode access
 Switch(config-if-range)#switchport access vlan 2
 Switch(config-if-range)#exit
 Switch(config)#int range f1/8 - 11
 Switch(config-if-range)#switchport mode access
 Switch(config-if-range)#switchport access vlan 3
 Switch(config-if-range)#exit
 Switch(config)#int range f1/12 - 15
 Switch(config-if-range)#switchport mode access
 Switch(config-if-range)#switchport access vlan 4
 Switch(config-if-range)#exit
 Switch(config)#int fa 1/0
 Switch(config-if)#switchport mode trunk
 Switch(config-if)#switchport trunk encapsulation dot1q
 Switch(config-if)#exit
 Switch(config)#exit
 Switch#wr
 Switch#

Посмотрим, что у нас получилось:


Vlan созданы, IP-адрес назначен. Если сейчас попробовать команду ping между хостами,
то ничего не получится, так как они находятся в разных сетях (vlan).
Теперь настроим роутер ISP:

 R2>en
 R2#conf t
 R2(config)#hostname ISP
 ISP(config)#int serial 0/0
 ISP(config-if)#ip address 192.168.10.2 255.255.255.252 – в сторону роутера Corp
 ISP(config-if)#no shutdown
 ISP(config-if)#exit
 ISP(config)#int loopback 0
 ISP(config-if)#ip address 172.16.1.1 255.255.255.255 – имитируем «интернет»
 ISP(config)#exit
 ISP#wr
 ISP#

Небольшая конфигурация, но этого нам достаточно.


Осталось настроить роутер Corp. Это займет немного больше времени. Итак,
приступаем :).

 R1>en
 R1#conf t
 R1(config)#hostname Corp
 Corp(config)#int serial 0/0
 Corp(config-if)#ip address 192.168.10.1 255.255.255.252 – в сторону «интернета»
 Corp(config-if)#no shutdown
 Corp(config-if)#exit
 Corp(config)#int fa 0/0
 Corp(config-if)#no shutdown
 Corp(config-if)#exit
 Corp(config)#int fa 0/0.1 – настраиваем субинтерфейс для каждого vlan
 Corp(config-subif)#description For Manage
 Corp(config-subif)#encapsulation dot1Q 1 native – прописываем режим
инкапсуляции (в данном случае еще дописываем, что этот vlan будет native
 Corp(config-subif)#ip address 192.168.1.1 255.255.255.0 – назначаем IP-адрес,
который будет являться шлюзом по умолчанию для соответствующего vlan
 Corp(config-subif)#exit
 Corp(config)#int fa 0/0.2
 Corp(config-subif)#encapsulation dot1Q 2 – обращаю внимание, что цифра должна
совпадать с номером (tag) vlan-а
 Corp(config-subif)#ip address 192.168.2.1 255.255.255.0
 Corp(config-subif)#exit
 Corp(config)#int fa 0/0.3
 Corp(config-subif)#encapsulation dot1Q 3
 Corp(config-subif)#ip address 192.168.3.1 255.255.255.0
 Corp(config-subif)#exit
 Corp(config)#int fa 0/0.4
 Corp(config-subif)#encapsulation dot1Q 4
 Corp(config-subif)#ip address 192.168.4.1 255.255.255.0
 Corp(config-subif)#exit
 Corp(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.2 – прописываем маршрут по
умолчанию
 Corp(config)#exit
 Corp#wr
 Corp#

Практически мы уже настроили Inter-vlan Routing. Остановимся и проверим, что у нас


получилось:
 1 – обращу внимание на этот параметр. Если вы делаете настройки в GNS3, как и я,
то у вас может возникнуть ошибка о несогласованности duplex. Для ее устранения
необходимо в режиме конфигурации интерфейса на роутере жестко прописать
параметр full duplex.

где:

 1- роутер ISP;
 2- «интернет»;
 3- коммутатор Switch;
 4- хост №1 (vlan_2);
 5- хост №2 (vlan_3);
 6- хост №3 (vlan_4).

Видно, что сетевая доступность присутствует. На данный момент, хосты из разных vlan
тоже ping-уют друг друга, но пока не имеют доступа к «интернет».
Для устранения этой проблемы нам необходимо настроить NAT на роутере Copr.
Network address translation бывает трех видов:

 1 – статический NAT (вручную прописываем соответствие внутреннего


(незарегистрированного) адреса внешнему (зарегистрированному) адресу в
формате один к одному);
 2 – динамический NAT (задается определенный pool адресов и при трансляции
автоматически производится соответствие внутренних адресов, свободным адресам
из pool);
 3 – port address translation (PAT). Трансляция внутренних (незарегистрированных)
адресов в один внешний (зарегистрированный) адрес, но в разные порты.
Рассмотрим все три случая.
Статический NAT.
Возвращаемся на роутер Corp и делаем следующее:

 Corp#
 Corp#conf t
 Corp(config)#int fa 0/0.2
 Corp(config-subif)#ip nat inside – определяем интерфейс для NAT, за которым
находится хост(ы) с внутренним(и) IP-адресами;
 Corp(config-subif)#exit
 Corp(config)#int fa 0/0.4
 Corp(config-subif)#ip nat inside – определяем интерфейс для NAT, за которым
находится хост(ы) с внутренним(и) IP-адресами;
 Corp(config-subif)#exit
 Corp(config)#int serial 0/0
 Corp(config-if)#ip nat outside – определяем интерфейс для NAT, который
является внешним и имеет внешний (зарегистрированный) IP-адрес;
 Corp(config-if)#exit
 Corp(config)#ip nat inside source static 192.168.2.20 192.168.10.1 – прописываем
соответствие одного внутреннего IP-адреса одному внешнему. Для хоста из
vlan_4 мы не сможем этого прописать, так как внешний IP-адрес только один;
 Corp(config)#exit
 Corp#wr

Проверим нашу работу:


После ping с Host 1 (192.168.2.20) видно, что в таблице трансляций появилось
соответствие. Значит, Host 1 получил свой доступ в «интернет» :). Если проверить доступ
к «интернет» с других хостов, то его не будет.
Динамичский NAT.
Для динамического NAT нам понадобится Access Control List. Они тоже бывают разных
видов. Мы будем использовать расширенный ACL.
Возвращаемся на роутер Corp и продолжаем:

 Corp#conf t
 Corp(config)#ip access-list extended ACL_NAT – создаем расширенный список
доступа (ACL) для определения тех сетей, которые будут подпадать под NAT;
 Corp(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 any – определяем сеть для
NAT (согласно нашему условию в начале поста);
 Corp(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 any – определяем сеть для
NAT (согласно нашему условию в начале поста);
 Corp(config-ext-nacl)#exit
 Corp(config)#no ip nat inside source static 192.168.2.20 192.168.10.1 – удаляем
статический NAT;
 Corp(config)#ip nat pool NAT_POOL 192.168.10.1 192.168.10.1 netmask
255.255.255.0 – определяем pool внешних IP-адресов;
 Corp(config)#ip nat inside source list ACL_NAT pool NAT_POOL – включаем
динамический NAT;
 Corp(config)#exit
 Corp#wr
 Corp#

Если сейчас мы вернемся на Host 1 и сделаем ping на «интернет» у нас все удачно
пройдет, но если сразу после этого мы попробуем сделать это с Host 3, то нас ждет
неудача. Это связано с тем, что у нас только один внешний адрес (192.168.10.1/30) и кто
первый займет его, тот и будет иметь доступ в «интернет» :). Чтобы дать возможность
поработать и Host 3, надо отчистить таблицу трансляций командой Corp#clear ip nat
translation * и сделать ping с Host 3 еще раз:

Все работает. Так что, если вы хотите применять динамический NAT, то лучше вам иметь
целый pool зарегистрированных IP-адресов.
Но самым распространенным видом NAT, который используется практически везде,
является PAT (Port Address Translation). Его мы, в итоге, и оставим для нашей схемы. Он
даст возможность одновременно работать с «внешним миром» всем заинтересованным
хостам :).
Вновь возвращаемся на наш роутер Corp и немного переделаем конфигурацию:

 Corp#conf t
 Corp(config)#no ip nat inside source list ACL_NAT pool NAT_POOL – отключаем
динамический NAT;
 Corp(config)#no ip nat pool NAT_POOL 192.168.10.1 192.168.10.1 netmask
255.255.255.0 – убираем наш pool адресов (он нам больше не понадобиться);
 Corp(config)#ip nat inside source list ACL_NAT interface serial 0/0 overload –
включаем PAT;
 Corp(config)#exit
 Corp#wr
 Corp#

(определение inside и outside интерфейсов, а так же ACL мы делали ранее)

Все готово к окончательным проверкам. Зайдем по очереди на наши хосты и проверим


условия, поставленные в начале поста:

где:

 1- IP-адрес «интернет»;
 2- IP-адрес Host 2 из vlan_3;
 3- IP-адрес Host 3 из vlan_4;
где:

 1- IP-адрес «интернет»;
 2- IP-адрес Host 1 из vlan_2;
 3- IP-адрес Host 3 из vlan_4;

где:

 1- IP-адрес «интернет»;
 2- IP-адрес Host 1 из vlan_2;
 3- IP-адрес Host 2 из vlan_3;

Как видно из рисунков, у нас все получилось. Все условия выполнены (хосты пингуют
друг друга, а в «интернет» имеют доступ только vlan_2 и vlan_4). Из последнего рисунка
видно, что трансляция адресов работает корректно (два внутренних IP-адреса (Inside local)
транслируются в один внешний IP-адрес (Inside global), но в разные порты).

Вам также может понравиться