пятница, 1 октября 2010 г.

Cisco ISR в качестве PPTP клиента не в сети провайдера

Один из клиентов для периодического мониторинга и помощи в настройке оборудования выдал два аккаунта pptp, но с маленькой оговоркой: не проходят 2 одновременных подключения с одного аккаунта (логично), не проходят 2 подключения с одного IP. Так как часто случается, что в чужой сетке должны одновременно ковыряться 2-3 инженегра, сначала извращались с NAT'ом через виндовую машину, подключенную по одному акку, потом решили настроить клиента на пограничной циске и изобразить периодичность работы - клиент коннектится с 9 по 21 по будним дням. Доступ в 4 подсети клиента (10.4.0.0/16, 10.5.0.0/16, 10.10.0.0/16, 10.11.100.0/24) требовался из 2х подсетей (192.168.215.0/24, 192.168.221.0/24). В результате получился такой конфиг:
ip access-list extended NAT
 73 deny ip 192.168.221.0 0.0.0.255 10.4.0.0 0.0.255.255
 74 deny ip 192.168.221.0 0.0.0.255 10.5.0.0 0.0.255.255
 75 deny ip 192.168.221.0 0.0.0.255 10.10.0.0 0.0.255.255
 76 deny ip 192.168.221.0 0.0.0.255 10.11.100.0 0.0.0.255
 77 deny ip 192.168.215.0 0.0.0.255 10.4.0.0 0.0.255.255
 78 deny ip 192.168.215.0 0.0.0.255 10.5.0.0 0.0.255.255
 79 deny ip 192.168.215.0 0.0.0.255 10.10.0.0 0.0.255.255
 69 deny ip 192.168.215.0 0.0.0.255 10.11.100.0 0.0.0.255
! убираем нужные подсети из общего NAT'а
Теперь включаем недокументированную функция IOS service internal и настраиваем параметры vpdn с Dialer интерфейсом:
service internal
no service pass
!
no ip gratuitous-arps
!
ip multicast-routing
!
vpdn enable
!
vpdn-group 2
  request-dialin
    protocol pptp
    rotary-group 1 ! указываем номер Dialer интерфейса
  initiate-to ip xxx.xxx.xx1.xxx ! адрес PPTP сервера
!
interface Dialer1
  dialer in-band ! ВАЖНО, чтобы этот параметр при настройке шел первым
  mtu 1450
  ip address negot ! получаем адрес от сервера
  ip nat out ! будем NAT'ить через полученный адрес наши подключения
  ip pim dense-mode
  encapsulation ppp
  dialer idle-timeout 0
  dialer string 123
  dialer vpdn
  dialer-group 2 ! указываем vpdn группу
  no cdp enable
  no peer neighbor-route ! не даем передать нам с PPTP сервера дефолтный маршрут
  ppp pfc local request
  ppp pfc remote apply
  ppp encrypt mppe auto
  ppp chap hostname USERNAME
  ppp chap password 0 PASSWORD
!
dialer-list 1 protocol ip permit
Проверяем. произошло ли подключение и получен ли адрес (sh ip int brie)
Теперь необходимо прописать маршруты в нужные подсети и NAT'ить наши обращения туда (так как с другой стороны железо не знает о маршрутах в наши подсети).
ip route 10.4.0.0 255.255.0.0 dial 1
ip route 10.5.0.0 255.255.0.0 dial 1
ip route 10.10.0.0 255.255.0.0 dial 1
ip route 10.11.100.0 255.255.255.0 dial 1
! сети доступны через интерфейс Dialer1
ip access ext FIRM_NAT_PPTP
 permit ip 192.168.221.0 0.0.0.255 10.4.0.0 0.0.255.255
 permit ip 192.168.221.0 0.0.0.255 10.5.0.0 0.0.255.255
 permit ip 192.168.221.0 0.0.0.255 10.10.0.0 0.0.255.255
 permit ip 192.168.221.0 0.0.0.255 10.11.100.0 0.0.0.255
 permit ip 192.168.215.0 0.0.0.255 10.4.0.0 0.0.255.255
 permit ip 192.168.215.0 0.0.0.255 10.5.0.0 0.0.255.255
 permit ip 192.168.215.0 0.0.0.255 10.10.0.0 0.0.255.255
 permit ip 192.168.215.0 0.0.0.255 10.11.100.0 0.0.0.255
!
ip nat inside source list FIRM_NAT_PPTP int Dial 1 over
Теперь обращения из наших подсетей успешно доходят до нужных хостов и есть возвратный трафик.
Чтобы подключение не висело постоянно, через Embeded Event Manager (EEM) настроим включение/выключение интерфейса по таймеру:
event manager applet FIRM_PPTP_START
 event timer cron name FIRM_STRT cron-entry "0 9 * * 1-5"
 action 1.0 cli command "enable"
 action 2.0 cli command "conf t"
 action 3.0 cli command "int dial 1"
 action 4.0 cli command "no shu"
!
event manager applet FIRM_PPTP_STOP
 event timer cron name FIRM_STOP cron-entry "0 21 * * 1-5"
 action 1.0 cli command "enable"
 action 2.0 cli command "conf t"
 action 3.0 cli command "int dial 1"
 action 4.0 cli command "shu"
Небольшая ремарка по синтаксису условия (event timer cron): параметр cron-entry записывается в кавычках (в документации на cisco.com эта особенность была упущена). Обозначение параметра "0 9 * * 1-5" - 0 минут 9 часов * любой день * любой месяц 1-5 день недели с понедельника по пятницу (нумерация с 0 до 6, где 0 - воскресение, а 6 - суббота).

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

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