Axen Posted February 13, 2018 (edited) · Report post Оборудование: Cisco 2921 с лицензией ipbase, IOS 15.7-3M (Router) MPD5 5.8_2 на FreeBSD 11.1-RELEASE-p6 (gw02) Задача: Необходимо к центральному узлу (ЦУ) подключить несколько удаленных узлов (УЗ). MPD5 выступает в качестве PPTP/L2TP сервера на ЦУ. К нему подключаются несколько Cisco 2921 с УЗ. За gw02 есть сети, и за Router так же есть сети. Схему прикрепил. Проблема: Задача казалась бы не сложная. Подними сервер MPD5 на gw02, сконфигурируй, настрой маршруты при подключении клиента. Настрой на Cisco 2921 соединение, так же укажи маршруты, и готово. Сделал, туннель поднялся, УЗ(Router) получил ip адрес, можно попинговать концы туннеля (10.38.254.65 и 10.38.254.69). Но стоит, попробовать пингануть с gw02 Host2, находящийся за Router, он (Router) просто крашился и уходил в ребут. Проблема была стабильной, т.е. воспроизводилась каждый раз. Данную проблему мне удалось решить сменой IOS на 15.7-3M1. Но проблема была решена не до конца. Теперь вместо краша и ребута, я получал рваный пинг (тот же RDP работал с трудом). Т.е. это выражалось пропуском одного пинга (первый пинг прошел, второго нет, третий есть и т.д.). НО, стоит пинговать наоборот, с УЗ что либо находящееся за маршрутизатором ЦУ, все пингуется отлично и пинги не теряются. Примеры пингов. gw02-->Host2 Spoiler [root@gw02 ~]# ping 192.168.107.130 PING 192.168.107.130 (192.168.107.130): 56 data bytes 64 bytes from 192.168.107.130: icmp_seq=0 ttl=127 time=1.910 ms 64 bytes from 192.168.107.130: icmp_seq=2 ttl=127 time=0.732 ms 64 bytes from 192.168.107.130: icmp_seq=4 ttl=127 time=0.728 ms 64 bytes from 192.168.107.130: icmp_seq=6 ttl=127 time=0.739 ms 64 bytes from 192.168.107.130: icmp_seq=8 ttl=127 time=0.752 ms 64 bytes from 192.168.107.130: icmp_seq=10 ttl=127 time=0.786 ms ^C --- 192.168.107.130 ping statistics --- 11 packets transmitted, 6 packets received, 45.5% packet loss round-trip min/avg/max/stddev = 0.728/0.941/1.910/0.434 ms Router-->Host1 Spoiler Router#ping 10.38.254.193 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.38.254.193, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms Router# В итоге собрал стенд на столе. И в результате снятия дампа трафика, было выявлено, следующее. Пинги, с gw02 доходят до Host2 за маршрутизатором Router, тот отвечает, но дальше интерфейса gi0-0 маршрутизатора Cisco 2921, этот пакет не уходит. Т.е. Cisco 2921 как будто выбрасывает каждый второй пакет. А теперь конфигурации, дампы.. Конфигурация Cisco 2921 (Router): Spoiler Router#sh run *Feb 13 02:31:14.531: %SYS-5-CONFIG_I: Configured from console by console Building configuration... Current configuration : 2035 bytes ! ! Last configuration change at 02:31:14 UTC Tue Feb 13 2018 ! version 15.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption service internal ! hostname Router ! boot-start-marker boot system flash0:c2900-universalk9_npe-mz.SPA.154-3.M7.bin boot-end-marker ! ! ! no aaa new-model ! ! ! ! ! ! no ip gratuitous-arps ! ! ! ! ! ! ! ! ! ! ! ! ! ! no ip domain lookup ip cef no ipv6 cef multilink bundle-name authenticated ! vpdn enable ! vpdn-group 100 request-dialin protocol pptp rotary-group 100 initiate-to ip 192.168.35.73 ! ! cts logging verbose ! ! license udi pid CISCO2921/K9 sn FCZ174671GE ! ! ! redundancy notification-timer 120000 ! ! ! ! ! ! interface Embedded-Service-Engine0/0 no ip address shutdown ! interface GigabitEthernet0/0 ip address 192.168.107.129 255.255.255.240 duplex auto speed auto ! interface GigabitEthernet0/1 ip address 192.168.35.74 255.255.255.0 duplex auto speed auto ! interface GigabitEthernet0/2 ip address 192.168.1.1 255.255.255.0 duplex auto speed auto ! interface Dialer100 mtu 1400 ip address negotiated ip pim dense-mode ip virtual-reassembly in encapsulation ppp dialer in-band dialer idle-timeout 0 dialer string 123 dialer vpdn dialer-group 100 ppp pfc local request ppp pfc remote apply ppp chap hostname test ppp chap password 0 test no cdp enable ! ip forward-protocol nd ! no ip http server no ip http secure-server ! ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/1 ip route 10.38.254.0 255.255.255.0 10.38.254.65 ip ssh server algorithm encryption aes128-ctr aes192-ctr aes256-ctr ip ssh client algorithm encryption aes128-ctr aes192-ctr aes256-ctr ! dialer-list 1 protocol ip permit dialer-list 100 protocol ip permit ! ! ! control-plane ! ! vstack ! line con 0 line aux 0 line 2 no activation-character no exec transport preferred none transport output pad telnet rlogin lapb-ta mop udptn v120 ssh stopbits 1 line vty 0 4 login transport input none ! scheduler allocate 20000 1000 ! end Router# Конфигурация MPD5 (gw02): Spoiler ################################################################# # # MPD configuration file # # This file defines the configuration for mpd: what the # bundles are, what the links are in those bundles, how # the interface should be configured, various PPP parameters, # etc. It contains commands just as you would type them # in at the console. Lines without padding are labels. Lines # starting with a "#" are comments. # # $Id: mpd.conf.sample,v 1.49 2015/06/02 08:30:35 dmitryluhtionov Exp $ # ################################################################# startup: # configure mpd users set user foo bar admin set user foo1 bar1 # configure the console set console self 127.0.0.1 5005 set console open # configure the web server set web self 0.0.0.0 5006 set web open # # Default configuration is "dialup" default: load pptp_server #load l2tp_server pptp_server: # Диапазон IP адрессов, # который присвоется VPN девайсу. set ippool add pool1 10.38.254.69 10.38.254.100 # Create clonable bundle template named B create bundle template B set iface disable proxy-arp set iface idle 1800 set iface enable tcpmssfix set ipcp yes vjcomp set iface up-script /usr/local/etc/mpd5/script-up.pl set iface group pptp # Specify IP address pool for dynamic assigment. set ipcp ranges 10.38.254.65/26 ippool pool1 # The five lines below enable Microsoft Point-to-Point encryption # (MPPE) using the ng_mppc(8) netgraph node type. #set bundle enable compression #set ccp yes mppc #set mppc yes e40 #set mppc yes e128 #set mppc yes stateless # Create clonable link template named L create link template L pptp # Set bundle template to use set link action bundle B # Multilink adds some overhead, but gives full 1500 MTU. set link enable multilink set link yes acfcomp protocomp set link no pap chap set link enable chap set link keep-alive 10 60 # We reducing link mtu to avoid GRE packet fragmentation set link mtu 1500 # Configure l2tp # IP адресс нашего VPN сервера. (Собственно адресс машины с фряхой) set pptp self 192.168.35.73 # set pptp enable always-ack # set pptp enable delayed-ack # set pptp disable windowing # Allow to accept calls set link enable incoming l2tp_server: set ippool add pool1 10.38.254.69 10.38.254.100 create bundle template B set iface enable proxy-arp set iface idle 1800 set iface enable tcpmssfix set iface up-script /usr/local/etc/mpd5/script-up.pl set ipcp yes vjcomp # Specify IP address pool for dynamic assigment. set ipcp ranges 10.38.254.65/26 ippool pool1 # The five lines below enable Microsoft Point-to-Point encryption # (MPPE) using the ng_mppc(8) netgraph node type. set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless # Create clonable link template named L create link template L l2tp # Set bundle template to use set link action bundle B # Multilink adds some overhead, but gives full 1500 MTU. set link enable multilink set link yes acfcomp protocomp set link no pap chap set link enable chap set link keep-alive 10 60 # We reducing link mtu to avoid GRE packet fragmentation set link mtu 1460 # Configure l2tp # IP адресс нашего VPN сервера. (Собственно адресс машины с фряхой) set l2tp self 192.168.35.73 # Allow to accept calls set link enable incoming Скрипт для автоподнятия маршрута в MPD5: Spoiler #!/bin/sh ### Rozhuk Ivan 2009-2010 ### mpd.script: L2TP incomming link up ### # $0 - script name # $1 - if name (ng0...) # $2 - proto # $3 - local-ip # $4 - remote-ip # $5 - authname # $6 - [ dns1 server-ip ] # $7 - [ dns2 server-ip ] # $8 - peer-address case "$5" in test ) /sbin/route -q add 192.168.107.128/28 $4;; xxx ) /sbin/route -q add xxxxxxxx/22 $4;; xxx ) /sbin/route -q add xxxxxxx/24 $4;; xxxl ) /sbin/route -q add xxxxxx/22 $4;; xxxx ) /sbin/route -q add xxxxxx/22 $4;; esac exit 0 Дампы стоит смотреть в такой очереди: gw02.ng0-->gw02.wan0-->Router.g0-1-->Router.dial-->Router.g0-0-Host2 И если обрастно следить за пакетом, то и последовательность наоборот. gw02.wan0 и Router.g0-1 на схеме нет, это WAN интерфейся маршрутизаторов, там будут видны эти пинги инкапсулированные в GRE и PPP. Дампы: gw02.ng0.dump gw02.wan0.dump Router.g0-1.dump Router.dial.dump Router.g0-0.dump Host2.pcapng Схема: Edited February 14, 2018 by Axen Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 14, 2018 · Report post Ни кто не сталкивался с такой проблемой? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ShyLion Posted February 14, 2018 · Report post ИМХО фрю выкинуть, одну 2921 поставить в центр, поднять на ней DMVPN хаб, а на переферии споки. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 14, 2018 (edited) · Report post Была бы такая возможность, так и поступил бы. Нужно всё таки разобраться, в чем причина. Я уже перебрал все последние версии IOS. Идей просто уже нет. Edited February 14, 2018 by Axen Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlexDsv Posted February 14, 2018 · Report post ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/1 убрать и больше так не делать. Прописать ip route 0.0.0.0 0.0.0.0 A.B.C.D Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted February 14, 2018 · Report post я бы еще на циске сделал на интерфейсах в сторону хостов ip tcp adjust-mss 1300. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 14, 2018 (edited) · Report post 1 hour ago, AlexDsv said: ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/1 убрать и больше так не делать. Прописать ip route 0.0.0.0 0.0.0.0 A.B.C.D Согласен. Исправим. 1 hour ago, zhenya` said: я бы еще на циске сделал на интерфейсах в сторону хостов ip tcp adjust-mss 1300. Это касаемо проблемы, или носит рекомендательный характер?) Edited February 14, 2018 by Axen Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted February 14, 2018 · Report post это из другой проблемы. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stepashka Posted February 15, 2018 (edited) · Report post А если попробовать по l2tp подключить Router проблема сохраняется? ! l2tp-class l2-class-1 hostname unknown ! pseudowire-class pw-class-1 encapsulation l2tpv2 protocol l2tpv2 l2-class-1 ip local interface GigabitEthernet0/1 ! interface Virtual-PPP1 ip address negotiated no ip redirects no ip unreachables no ip proxy-arp ip mtu 1460 ip virtual-reassembly no peer neighbor-route keepalive 10 3 no cdp enable ppp authentication chap callin ppp chap hostname test ppp chap password 0 test pseudowire 192.168.35.73 1 encapsulation l2tpv2 pw-class pw-class-1 ! ip route 192.168.35.73 255.255.255.255 <gw> И обязательно добавить /32 маршрут до l2tp сервера через Gi0/1, так как после подъёма туннеля, у вас появляется новый дефолт в туннель с лучшим приоритетом, кмк Edited February 16, 2018 by stepashka Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 15, 2018 · Report post Аналогично, по L2TP проблема сохраняется. НО, конфигурация у меня под другому выглядела. Завтра попробую, и отпишусь. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 16, 2018 · Report post Новые подробности. На моей 2921 нет команды pseudowire-class, похоже что ограничение лицензии... Экспериментировать на тех, где есть эта команда, больше нет возможности:( P.S. вопрос всё таки, отсутствие команды "pseudowire-class" это ограничение лицензии или нет? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 19, 2018 · Report post Похоже что проблема была всё таки в IOS, в 157-3М1 проблема исчезла. Как попробую в работе окончательно, отпишу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Axen Posted February 22, 2018 · Report post И так, проблема была в IOS. Почти на всех узлах все завелось, за исключением одного. На нем всё гораздо интереснее, туннель поднимается, ip получает, но стоит сделать ping, или что либо другое (проще говоря воспользоваться туннелем), маршрутизатор перезагружается. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...