Задача: Необходимо настроить транзит для PPTP-туннеля для маршрутизатора с SNAT.
Решение: PPTP (Point-to-Point Tunneling Protocol) -туннельный протокол позволяющий клиенту устанавливать защищенное соединение с сервером за счет создания туннеля в незащищенной сети. Для своей работы PPTP использует два соединения — одно для управления, другое для инкапсуляции данных. Первое работает с использованием TCP, в котором сервер слушает порт 1723. Второе работает с помощью протокола GRE, который является транспортным протоколом. Эта особенность мешает клиентам, находящимся за NAT, установить подключение с сервером, так как для них установление подключения точка-точка не представляется возможным по умолчанию. Однако, поскольку в протоколе GRE, что использует PPTP, есть заголовок Call ID, маршрутизатор, на котором настроен SNAT, может идентифицировать и сопоставить GRE трафик, идущий от клиента локальной сети к внешнему серверу и наоборот. Это дает возможность клиентам за NAT установить подключение point-to-point и пользоваться протоколом GRE. Учтем это при настройке маршрутизатора, будет необходимо включить дополнительные функции.
Ниже приложен дамп установления PPTP-соединения. Видно, что начинается оно с обращения клиента на порт сервера TCP 1723.
После аутентификации клиента и обмена необходимыми параметрами, дальнейший обмен клиент-сервер происходит с помощью gre-туннеля.
При конфигурировании PPTP-сервера (маршрутизатор R3):
- разрешим правилами firewall порт TCP 1723 в зону self;
- разрешим правилами firewall протокол gre в зону self.
На маршрутизаторе R2, с настройками SNAT, необходимо включить:
- ip firewall sessions tracking pptp - функция отслеживания сессий уровня приложений;
- nat alg gre - функцию трансляции IP-адресов в заголовках уровня приложений для gre;
- nat alg pptp - функцию трансляции IP-адресов в заголовках уровня приложений для pptp.
Пример конфигурации маршрутизатора R1
hostname R1 interface gigabitethernet 1/0/1 description "LAN" ip firewall disable ip address 198.51.100.1/24 exit tunnel pptp 1 ip firewall disable authentication method mschap-v2 description "worker" username ivan password ascii-text encrypted 8CB5107EA7005AFF remote address 203.0.113.2 enable exit ip route 203.0.113.2/32 198.51.100.2
Пример конфигурации маршрутизатора R2
hostname R2 interface gigabitethernet 1/0/3 ip firewall disable ip address 198.51.100.2/24 exit interface gigabitethernet 1/0/4 ip firewall disable ip address 203.0.113.1/24 exit ip firewall sessions tracking pptp nat source ruleset pptp to interface gigabitethernet 1/0/4 rule 10 action source-nat interface enable exit exit exit nat alg gre nat alg pptp
Пример конфигурации маршрутизатора R3
hostname R3 ip firewall sessions counters object-group service PPTP port-range 1723 exit object-group network pptp_outside ip address-range 203.0.113.2 exit object-group network pptp_local ip address-range 10.0.0.1 exit object-group network pptp_remote ip address-range 10.0.0.10-10.0.0.20 exit object-group network pptp_dns ip address-range 8.8.8.8 exit security zone PPTP exit security zone trusted exit interface gigabitethernet 1/0/1 security-zone trusted ip address 203.0.113.2/24 exit security zone-pair PPTP self rule 10 action permit match protocol icmp enable exit exit security zone-pair trusted self rule 10 action permit match protocol tcp match destination-port PPTP enable exit rule 20 action permit match protocol gre enable exit exit remote-access pptp remote-workers authentication mode local authentication method mschap-v2 local-address object-group pptp_local remote-address object-group pptp_remote outside-address object-group pptp_outside dns-servers object-group pptp_dns security-zone PPTP username ivan password ascii-text encrypted 8CB5107EA7005AFF enable exit enable exit ip route 198.51.100.1/32 203.0.113.1
Диагностика - просмотр NAT-трансляций на маршрутизаторе R2
Состояние туннеля на клиенте
Состояние подключенных клиентов на сервере
Следует также помнить про ограничения:
- При подключении к pptp серверу двух клиентов, находящихся за одним и тем же NAT и имеющих один и тот же "белый" IP адрес, подключится только один клиент. Который первым инициировал соединение.
- Количество одновременных сессий к pptp серверу будет ограничено на маршрутизаторе R2 размером expected - таблицы. Дочерние gre-сессии попадают не сразу в основную таблицу firewall, первоначально они размещаются в expected - таблице. В основную таблицу они перейдут когда начнется передача трафика в рамках сессии. По умолчанию размер expected - таблицы составляет 256 записей. Если ожидается транзит через R2 большого количества pptp - сессий, размер expected - таблицы необходимо будет увеличить.
R (config)# ip firewall sessions max-expect 512