суббота, 2 августа 2014 г.

Настройка доступа в интернет через cisco VPN client и корпоративный cisco router, подключенный к провайдеру по PPPoE

Схема, которую будем реализовывать, будет следующая:


Как всегда, небольшие пояснения к схеме.
Имеется центральный офис, где расположен Central_Router. Через данное устройство сотрудники получают доступ в интернет. На нем имеется 3 интерфейса:
  • 1. FastEthernet 0/0 – подключен к интернет. IP-адрес 2.2.2.100/24 он получает от провайдера по протоколу PPPoE, следовательно, заодно посмотрим как настроить cisco router в качестве PPPoE client-а. Также этот интерфейс будет использоваться в качестве outside при настройке NAT, и на него будут приходить запросы от удаленных клиентов на установление VPN туннеля;
  • 2. FastEthernet 1/0 – подключен к локальной сети. IP-адрес 192.168.1.1/24. Этот интерфейс является inside для NAT. В данной сети будут располагаться внутренние ресурсы и пользователи;
  • 3. FastEthernet 2/0 – подключен к сети управления (Manage). IP-адрес 10.10.10.1/24. В этой сети будет стоять консоль (Manage_PC 10.10.10.10/24), с которой мы будем настраивать наш роутер.
Далее имеется роутер Internet_Router. С помощью него мы будем эмулировать сеть Internet. Так же данный роутер мы настроим в качестве PPPoE Server-а, для обслуживания подключения центрального офиса (Central_Router). Немного упростим себе задачу и возьмем за основу, что Internet_Router имеет у себя публичные адреса на интерфейсах и выдавать клиенту он так же будет известный (2.2.2.100/24) публичный IP-адрес.
Далее имеется Remote_Router, который будет использоваться в качестве доступа к Internet клиентов, находящихся в кафе, гостинице и так далее. На нем имеется два интерфейса:
  • 1. FastEthernet 0/0 – подключен к локальной сети. IP-адрес 192.168.0.1/24. В этой сети находится удаленный клиент. Этот интерфейс является inside для NAT;
  • 2. FastEthernet 1/0 – подключен к сети Internet. IP-адрес 1.1.1.2/24 Этот интерфейс является outside для NAT;
Ну и для проверки имеются два компьютера:
  • 1. Один (Office_PC) в локальной сети центрального офиса (IP-адрес 192.168.1.10/24). На него мы будем ходить по RDP для проверки;
  • 2. Второй (Remote_Client) располагается в удаленной сети (IP-адрес 192.168.0.10/24). На нем установлен cisco VPN client для построения VPN туннеля.
Ну что же, все готово к реализации. Если что-то упустил, буду пояснять по ходу :).
Начнем с удаленного роутера. Заходим на Remote_Router:

R1#conf t
R1(config)#hostname Remote_Router – задаем имя;
Remote_Router(config)#int fa 0/0
Remote_Router(config-if)#ip address 192.168.0.1 255.255.255.0 –устанавливаем IP-адрес;
Remote_Router(config-if)#no cdp enable – выключаем CDP;
Remote_Router(config-if)#ip nat inside – указываем, что данный интерфейс будет inside для NAT;
Remote_Router(config-if)#no shutdown – включаем интерфейс;
Remote_Router(config-if)#exit
Remote_Router(config)#int fa 1/0
Remote_Router(config-if)#ip address 1.1.1.2 255.255.255.252
Remote_Router(config-if)#ip nat outside – указываем, что данный интерфейс будет outside для NAT;
Remote_Router(config-if)#no shutdown
Remote_Router(config-if)#exit
Remote_Router(config)#ip access-list extended FOR_NAT – создаем список доступа для NAT;
Remote_Router(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 any
Remote_Router(config-ext-nacl)#deny ip any any
Remote_Router(config-ext-nacl)#exit
Remote_Router(config)#ip nat inside source list FOR_NAT interface fa 1/0 overload – включаем NAT на роутере;
Remote_Router(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1 – прописываем маршрут по умолчанию;
Remote_Router(config)#exit
Remote_Router#wr – сохраняем конфигурацию.



Переходим на роутер Internet_Router:

R2#conf t
R2(config)#hostname Internet_Router
Internet_Router(config)#int fa 0/0
Internet_Router(config-if)#ip address 1.1.1.1 255.255.255.252
Internet_Router(config-if)#no shutdown
Internet_Router(config-if)#exit
Internet_Router(config)#interface virtual-template 1 – заходим в настройки шаблона пользовательского интерфейса для PPPoE клиентов;
Internet_Router(config-if)#ip address 2.2.2.1 255.255.255.0 – указываем IP-адрес, который будет gateway для PPPoE клиентов;
Internet_Router(config-if)#ip virtual-reassembly
Internet_Router(config-if)#ip unnumbered fastEthernet 1/0 – определяем интерфейс, на который будут приходить запросы на установление PPPoE соединений;
Internet_Router(config-if)#ppp authentication chap ms-chap – определяем вид аутентификации для PPPoE клиентов;
Internet_Router(config-if)#exit
Internet_Router(config)#bba-group pppoe global – включаем поддержку PPPoE на роутере. Тут можно использовать и vpdn-group pppoe. Отличие в том, что при bba-group можно создать несколько групп для PPPoE клиентов и привязывать к ним разные шаблоны, а при использовании vpdn-group – только одну группу и один шаблон на одно устройство;
*Mar 1 00:24:45.303: %LINK-3-UPDOWN: Interface Virtual-Access2, changed state to up
*Mar 1 00:24:46.303: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access2, changed state to up
Internet_Router(config-bba-group)#virtual-template 1 – привязываем к данной группе ранее созданный шаблон;
Internet_Router(config-bba-group)#sessions max limit 100 – ограничиваем количество сессий;
Internet_Router(config-bba-group)#sessions per-mac limit 1 – один mac-адресс на сессию;
Internet_Router(config-bba-group)#sessions auto cleanup – включаем автоматическую чистку сессий;
Internet_Router(config-bba-group)#exit
Internet_Router(config)#int fa 1/0
Internet_Router(config-if)#pppoe enable group global – включаем PPPoE на нужном интерфейсе;
Internet_Router(config-if)#no shutdown
Internet_Router(config-if)#exit
Internet_Router(config)#aaa new-model – включаем функцию aaa на роутере;
Internet_Router(config)#aaa authentication ppp default local –указываем, что процесс аутентификации PPPoE клиентов будет использовать локальную базу пользователей;
Internet_Router(config)#aaa authorization network default local –процесс авторизации PPPoE клиентов также будет использовать локальную базу;
Internet_Router(config)#aaa attribute list PPPOE – создаем перечень атрибутов (в дальнейшем, мы привяжем его к конкретному клиенту, чтобы получать конкретный IP-адрес);
Internet_Router(config-attr-list)#attribute type addr 2.2.2.100 service ppp protocol ip – прописываем конкретный IP-адрес, который нам нужен;
Internet_Router(config-attr-list)#exit
Internet_Router(config)#username PPPOE_User privilege 0 password cisco – создаем PPPoE пользователя;
Internet_Router(config)#username PPPOE_User aaa attribute list PPPOE –привязываем к нему перечень атрибутов (теперь данный клиент получит конкретный IP-адрес, указанный в атрибутах);
Internet_Router(config)#exit
Internet_Router#wr



В принципе с Internet_Router мы закончили. Здесь мы настроили выдачу конкретного IP-адреса конкретному клиенту. Можно сделать выдачу IP-адресов PPPoE клиентам более расширено, настроив либо POLL адресов, либо DHCP. Для этого необходимо создать их и привязать к virtual-template 1. Если кто-то захочет это настроить, то вот команды (в режиме conf t):
    Создание и привязывание dhcp-pool:
  • ip dhcp pool PPPoEpool
      network (IP-address network) (subnet mask)
      domain-name (name)
      dns-server (IP-address)
      default-router (IP-address)
  • interface Virtual-Template1
      peer default ip address dhcp-pool PPPoEpool
    Создание и привязывание pool:
  • ip local pool PPPoEpool (Start IP-address) (Last IP-address)
  • interface Virtual-Template1
      peer default ip address pool PPPoEpool
Теперь переходим к Center_Router.

R3#conf t
R3(config)#hostname Center_Router
Center_Router(config)#int fa 1/0
Center_Router(config-if)#ip address 192.168.1.1 255.255.255.0
Center_Router(config-if)#ip nat inside
Center_Router(config-if)#no cdp enable
Center_Router(config-if)#no shutdown
Center_Router(config-if)#exit
Center_Router(config)#int fa 2/0
Center_Router(config-if)#ip address 10.10.10.1 255.255.255.0
Center_Router(config-if)#no cdp enable
Center_Router(config-if)#no shutdown
Center_Router(config-if)#exit
Center_Router(config)#interface dialer 1 – создаем специальный интерфейс Dialer, который и будет поднимать PPPoE;
Center_Router(config-if)#ip address negotiated – указываем, что IP-адрес будет приниматься от провайдера;
Center_Router(config-if)#ip mtu 1492 – указываем стандартное значение mtu для PPPoE;
Center_Router(config-if)#ip nat outside – указываем, что этот интерфейс будет outside и через него пользователи будут выходить в интернет;
Center_Router(config-if)#encapsulation ppp – указываем инкапсуляцию;
Center_Router(config-if)#dialer pool 1 – задаем № пул для привязки на физическом интерфейсе;
Center_Router(config-if)#ppp chap hostname PPPOE_User – указываем имя пользователя, созданный на Internet_Router (в реальной жизни дает провайдер);
Center_Router(config-if)#ppp chap password cisco – указываем пароль пользователя;
Center_Router(config-if)#exit
Center_Router(config)#int fa 0/0
Center_Router(config-if)#pppoe-client dial-pool-number 1 – привязываем физический и Dialer интерфейсы через заданный ранее пул;
Center_Router(config-if)#no shutdown
Center_Router(config-if)#exit
Center_Router(config)#
*Mar 1 00:07:45.407: %DIALER-6-BIND: Interface Vi1 bound to profile Di1
*Mar 1 00:07:45.463: %LINK-3-UPDOWN: Interface Virtual-Access1, changed state to up
*Mar 1 00:07:46.591: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access1, changed state to up – это означает, что интерфейс поднялся;
Center_Router(config)#ip access-list extended FOR_NAT – создаем список доступа для NAT;
Center_Router(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any
Center_Router(config-ext-nacl)#deny ip any any
Center_Router(config-ext-nacl)#exit
Center_Router(config)#ip nat inside source list FOR_NAT interface dialer 1 overload – включаем NAT на роутере;
Center_Router(config)#ip route 0.0.0.0 0.0.0.0 dialer 1 – прописываем маршрут по умолчанию через интерфейс Dialer 1;
Center_Router(config)#exit
Center_Router#wr



Теперь давайте зайдем на компьютеры для проверки сетевой доступности. На данный момент мы должны пинговать с Remote_Client IP-адрес внешнего интерфейса Center_Router, который он получает по PPPoE протоколу от провайдера, и с Office_PC мы должны пинговать IP-адрес Remote_Router, что будет эмулировать наличие доступа в интернет.


    где:
  • 1 – IP-адрес внешнего интерфейса Center_Router;
  • 2 - IP-адрес Office_PC (он не доступен, так как находится за NAT-ом);
  • 3 - IP-адрес внешнего интерфейса Remote_Router;
  • 4 - IP-адрес Remote_Client (он не доступен, так как находится за NAT-ом).
Посмотрим, что творится на роутерах:


    где:
  • 1 – трансляция адресов (NAT) на роутере Remote_Router;
  • 2 – трансляция адресов (NAT) на роутере Central_Router;
  • 3 – показана PPPoE сессия, которая находится в состоянии «UP».
Ну что же, первую часть настроили :). Наши компьютеры из внутренней сети центрального офиса имеют доступ в интернет, а удаленный клиент видит IP-адрес внешнего интерфейса Central_Router и так же имеет доступ в интернет, который на данный момент не защищен.
Как я уже говорил ранее, для защиты этого доступа мы будем использовать IPSec VPN. Настраивать VPN Server на Central_Router мы будем с использованием cisco SDM. Остальное (если будет необходимость) докрутим через CLI.
Итак, приступим. Для начала, давайте добавим несколько команд на Central_Router, чтобы затем подключиться к нему, используя SDM:

Center_Router#conf t
Center_Router(config)#ip http server – включаем доступ по http;
Center_Router(config)#ip http secure-server – включаем доступ по https;
Center_Router(config)#ip http authentication local – указываем использование локальной базы для аутентификации;
Center_Router(config)#aaa new-model – включаем функцию aaa;
Center_Router(config)#aaa authentication login default local –указываем использование локальной базы для аутентификации;
Center_Router(config)#aaa authentication enable default enable –указываем использование локальной базы для авторизации;
Center_Router(config)#username admin privilege 15 password ciscocisco –создаем пользователя с наивысшими привелегиями;
Center_Router(config)#line vty 0 15
Center_Router(config-line)#login local – настраиваем аутентификацию на vty линиях (telnet, ssh);
Center_Router(config-line)#transport input telnet ssh
Center_Router(config-line)#logging synchronous
Center_Router(config-line)#exit
Center_Router(config)#enable password cisco – задаем пароль на «enable»;
Center_Router(config)#exit
Center_Router#wr



Теперь переходим на Manage_PC и запускаем там SDM:


В первом окне SDM указываем IP-адрес роутера, отмечаем использовать соединение через https и нажимаем «Launch»:


Появится предупреждение о неизвестном сертификате и вопрос о продолжении, отвечаем «Да». Появится следующее окно:


Вводим login и password, которые мы создали немного ранее на Central_Router. Нажимаем «OK». В некоторых случаях далее могут появляться сообщения о доверии к сайту и его содержимому, ставьте галочку «Всегда доверять содержимому» и нажимайте «Next» или «OK». Еще в более редких случаях может появиться вот такое окно:


Не пугайтесь. Закройте Internet Explorer, затем заново его запустите, и перейдите в его свойства. В закладке «Дополнительно» поставьте разрешение на запуск активного содержимого файлов:


Нажмите «Применить» и «OK». Закройте браузер и снова проделайте шаги, описанные выше. В итоге у вас должно появиться следующее окно:


Снова вводим login и password и нажимаем «OK»:


И еще разок :). Нажимаем «OK». Все, должно появиться главное окно cisco SDM:


Как видно из рисунка, вроде как все соответствует нашему Central_Router :). Приступаем к настройке Easy VPN Server-а. Переходим в закладку «Configure» -- «VPN»:

  
Выбираем пункт «Easy VPN Server» и нажимаем на «Launch Easy VPN Server Wizard»:


В первом окне нам показывают, какие настройки необходимо сделать для запуска VPN Server-а. Собственно, эти настройки мы и сделаем с помощью Wizard-а. Нажимаем «Next»:


Здесь выбираем интерфейс, на который будут приходить запросы от клиентов (в нашем случае – это Dialer 1 (Fa 0/0), смотрящий в сторону провайдера), отмечаем, что будем использовать Pre-Shared Keys и нажимаем «Next»:


Здесь выбираются параметры IKE (алгоритм шифрования, алгоритм аутентификации и алгоритм обмена ключами при установлении VPN соединения (Phase 1)). Я выбрал уже созданную по умолчанию политику. Но если вам необходимо добавить еще, то нажмите кнопку «Add», укажите там нужные вам параметры и политика добавится в список. Нажимаем «Next»:


Здесь выбираем параметры Transform set (алгоритм шифрования и аутентификации для защиты трафика в VPN туннеле). Я так же выбрал параметры по умолчанию, но можно добавить при необходимости свои (кнопка «Add»). Нажимаем «Next»:


Здесь выбираем использование локальной базы для авторизации удаленных клиентов (если у вас есть Radius server, то выбирайте его). Нажимаем «Next»:


Для аутентификации пользователей так же выбираем использование локальной базы. Давайте добавим пользователя для этих целей через Wizard. Нажимаем «Add user credential»:


Нажимаем «Add», в новом окне прописываем имя пользователя, пароль и уровень привилегий. Нажимаем «OK» и новый пользователь должен появиться в списке. Нажимаем «OK» и в основном окне «Next»:


В этом окне нам необходимо создать группу, в которую будут попадать пользователи, подключившееся через cisco VPN client. Для этого нажимаем «Add»:


В открывшемся окне во вкладке «General» задаем следующие атрибуты: 1. Имя группы, 2.Пароль (Pre-shared key), 3. Начальный адрес из создаваемого pool-а (из этого pool-а будут выдаваться IP-адреса пользователям при подключении), 4. Конечный адрес pool-а, 5. Маска подсети для pool-а. (Для VPN пользователей я выбрал сеть 192.168.100.0/24.)
В других закладках групповой политики можно выставить более подробные свойства для группы (DNS/WINS, использование split-tunneling (его мы не используем, так как хотим, чтобы весь трафик после установки VPN уходил в него) и так далее). Углубляться в них не будем, так как в принципе они нам не потребуются. Нажимаем «OK», созданная группа должна появиться в списке. Если она появилась, то нажимаем «Next»:


В последнем окне нам показывают суммарные настройки, которые будут внесены в конфигурацию после нажатия «Finish». Смело нажимаем :). Может появиться вот такое окно:


SDM обнаружил настроенный NAT на устройстве и хочет его немного преобразовать (сделать с использованием route map). Отказываемся от этого, если потребуется, то внесем изменения через CLI. В итоге, когда завершится процесс конфигурирования, наш Easy VPN Server появится в списке:


Сохраняем конфигурацию на роутере (команда «wr» в CLI) и выходим из SDM.
Теперь, вернемся на наш роутер Center_Router и отредактируем политику NAT (помните предупреждающее сообщение выше), чтобы клиенты, подключившиеся по VPN и идущие в локальную сеть (192.168.1.0/24) на обратном пути не попадали под него.

Center_Router(config)#ip access-list extended FOR_NAT
Center_Router(config-ext-nacl)#5 deny ip 192.168.1.0 0.0.0.255 192.168.100.0 0.0.0.255
Center_Router(config-ext-nacl)#exit
Center_Router(config)#wr



Остановимся и проверим, что у нас есть на данный момент. Зайдем на Remote_Client и попробуем подключиться к VPN Server-у через Cisco VPN Client. Затем проверим сетевую доступность и RDP на Office_PC.
Итак, заходим на Remote_Client, запускаем Cisco VPN Client и создаем новое соединение, как показано на рисунке ниже:


    где:
  • 1 – название соединения;
  • 2 – IP-адрес внешнего интерфейса Central_Router;
  • 3 – название созданной на роутере группы для VPN пользователей;
  • 4 – пароль (Pre-shared key).
Нажимаем «Save». Новое соединение должно появиться в списке. Выбираете его и нажимаете «Connect». Если вы указали правильные данные, то пойдет соединение и появится окно для ввода login-а и пароля:


Вводите имя и пароль пользователя, созданного при настройке VPN Server-а, и нажимаете «OK». Соединение должно установиться. Теперь проверим сетевую доступность и RDP:


    где:
  • 1 – появилось новое подключение и получен IP-адрес из настроенного pool-а;
  • 2 – успешный ping на Office_PC;
  • 3 – неудачный ping на IP-адрес Internet_Router-а;
  • 4 – установленная RDP сессия на Office_PC.
Видно, что на данный момент мы имеем доступ через VPN к корпоративной локальной сети (ping и RDP), но не имеем доступа в интернет через Center_Router (отсутствие ping-а IP-адреса 1.1.1.1).
Переходим к настройке последней задачи :). Снова возвращаемся на Central_Router:

Center_Router#conf t
Center_Router(config)#interface loopback 1 – создаем интерфейс для «заворачивания» трафика VPN пользователей на него;
Center_Router(config-if)#ip address 20.20.20.20 255.255.255.0 –присваиваем ему IP-адрес;
Center_Router(config-if)#ip nat inside – включаем его в процесс NAT в качестве inside;
Center_Router(config-if)#exit
Center_Router(config)#ip access-list extended FOR_Remote_Users –создаем список доступа для идентификации трафика VPN пользователей;
Center_Router(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 any
Center_Router(config-ext-nacl)#deny ip any any
Center_Router(config-ext-nacl)#exit
Center_Router(config)#route-map VPN-Users permit 10 – создаем route map;
Center_Router(config-route-map)#match ip address FOR_Remote_Users -привязываем к нему список доступа для захвата нужного нам трафика;
Center_Router(config-route-map)#set interface loopback 1 –устанавливаем, что «gateway» для этого трафика должен быть через созданный ранее loopback интерфейс;
Center_Router(config-route-map)#exit
Center_Router(config)#int dialer 1
Center_Router(config-if)#ip policy route-map VPN-Users – привязываем политику маршрутизации к интерфейсу Dialer;
Center_Router(config-if)#exit
Center_Router(config)#ip access-list extended FOR_NAT
Center_Router(config-ext-nacl)#7 permit ip 192.168.100.0 0.0.0.255 any – добавляем сеть для VPN пользователей в процесс NAT;
Center_Router(config-ext-nacl)#exit
Center_Router(config)#exit
Center_Router#wr
Center_Router#



Ну что же, давайте проверим, что у нас в итоге получилось. Возвращаемся на Remote_Client, устанавливаем VPN соединение и проверяем:


    где:
  • 1 – успешный ping на Office_PC;
  • 2 – успешный ping на IP-адрес Internet_Router-а;
  • 3 – путь (traceroute) до Internet_Router-а лежит через Central_Router.
Чтобы окончательно убедиться в работе данной схему, выключим VPN соединение и посмотрим, что получится:


    где:
  • 1 – отсутствие ping-а к Office_PC;
  • 2 – успешный ping на IP-адрес Internet_Router-а;
  • 3 – путь (traceroute) до Internet_Router-а лежит уже через Remote_Router (как и надо без использования VPN туннеля).
Ну что же, все работает!!!! Вот, на всякий случай, ссылка на архив с файлами конфигураций роутеров.
На этом я хочу закончить этот пост. Он получился весьма объемным, но думаю, он станет для вас полезным и познавательным. Хочу поблагодарить вас за внимание.

Источник: go-to-easyit.com/2012/08/cisco-vpn-client-cisco-router-pppoe_8449.html

Комментариев нет:

Отправить комментарий