Я пытаюсь подключиться к PPTP-серверу, который находится за маршрутизатором Cisco 881 NAT. На сервере работает Ubuntu Server 12.04 и работает Poptop pptpd
как демон PPTP, прослушивающий соединения.
Как обсуждалось в моем другой вопрос, Я пытаюсь настроить маршрутизатор Cisco 881 для замены моего старого Linksys WAG320N. Тот же сервер и WAN-соединение отлично работали с WAG320N без какой-либо специальной настройки, кроме разрешения 1723-го через брандмауэр.
На Cisco 881 я использую более новую ip nat enable
или NAT NVI для установки статических маршрутов через межсетевой экран для служб, работающих за маршрутизатором. Моя причина в том, что я не могу запустить другую копию моих живых DNS-доменов внутри с локальными IP-адресами. Однако для целей этого вопроса я перестроил маршрутизатор с ip nat inside/outside
стиль NAT, но эта проблема все еще очевидна. HTTP / SMTP / IMAP и т. Д. Все нормально работают как с WAN, так и с LAN-интерфейсами маршрутизатора. У меня проблемы только с SIP (см. Другой вопрос) и PPTP.
Моя проблема в том, что GRE не проходит через NAT правильно, и один конец соединения не получает трафик GRE, когда он должен быть, поэтому сервер вешает соединение.
Вот пример /var/log/syslog
с включенной отладкой в /etc/pptpd.conf
:
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: MGR: Launching /usr/sbin/pptpctrl to handle client
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: local address = 192.168.1.50
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: remote address = 192.168.1.51
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: pppd options file = /etc/ppp/pptpd-options
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Client 82.132.248.216 control connection started
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 1)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Made a START CTRL CONN RPLY packet
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: I wrote 156 bytes to the client.
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Sent packet to client
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 7)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Set parameters to 100000000 maxbps, 64 window size
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Made a OUT CALL RPLY packet
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Starting call (launching pppd, opening GRE)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: pty_fd = 6
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: tty_fd = 7
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: I wrote 32 bytes to the client.
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Sent packet to client
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): program binary = /usr/sbin/pppd
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): local address = 192.168.1.50
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): remote address = 192.168.1.51
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: pppd 2.4.5 started by root, uid 0
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Using interface ppp0
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Connect: ppp0 <--> /dev/pts/3
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: GRE: Bad checksum from pppd.
Dec 11 21:06:31 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 15)
Dec 11 21:06:31 <HOSTNAME> pptpd[22626]: CTRL: Got a SET LINK INFO packet with standard ACCMs
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: LCP: timeout sending Config-Requests
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Connection terminated.
Dec 11 21:07:00 <HOSTNAME> avahi-daemon[1042]: Withdrawing workstation service for ppp0.
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Modem hangup
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Exit.
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: GRE: read(fd=6,buffer=6075a0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Reaping child PPP[22627]
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Client 82.132.248.216 control connection finished
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Exiting now
Dec 11 21:07:00 <HOSTNAME> pptpd[5803]: MGR: Reaped child 22626
Что касается Cisco, все, что мне нужно, это ip nat source static tcp <SERVER LAN IP> 1723 interface FastEthernet4 1723
но, конечно, похоже, что это не помогает трафику GRE должным образом.
При попытке подключения к IP-адресу LAN сервера из той же локальной сети, что и сервер (за маршрутизатором), PPTP-соединение работает нормально, поэтому я уверен, что конфигурация сервера в порядке. Более того, все, что мне нужно было на моем WAG320N, - это открыть 1723 в брандмауэре.
Вот моя текущая конфигурация роутера:
!
! Last configuration change at 20:20:15 UTC Tue Dec 11 2012 by xxx
version 15.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname xxx
!
boot-start-marker
boot-end-marker
!
!
enable secret 4 xxxx
!
aaa new-model
!
!
aaa authentication login local_auth local
!
!
!
!
!
aaa session-id common
!
memory-size iomem 10
!
crypto pki trustpoint TP-self-signed-xxx
enrollment selfsigned
subject-name cn=IOS-Self-Signed-Certificate-xxx
revocation-check none
rsakeypair TP-self-signed-xxx
!
!
crypto pki certificate chain TP-self-signed-xxx
certificate self-signed 01
xxx
quit
ip gratuitous-arps
ip auth-proxy max-login-attempts 5
ip admission max-login-attempts 5
!
!
!
!
!
ip domain list dmz.xxx.local
ip domain list xxx.local
ip domain name dmz.xxx.local
ip name-server 192.168.1.x
ip cef
login block-for 3 attempts 3 within 3
no ipv6 cef
!
!
multilink bundle-name authenticated
license udi pid CISCO881-SEC-K9 sn xxx
!
!
username admin privilege 15 secret 4 xxx
username joe secret 4 xxx
!
!
!
!
!
ip ssh time-out 60
!
!
!
!
!
!
!
!
!
interface FastEthernet0
no ip address
!
interface FastEthernet1
no ip address
!
interface FastEthernet2
no ip address
!
interface FastEthernet3
switchport access vlan 2
no ip address
!
interface FastEthernet4
ip address dhcp
ip nat enable
duplex auto
speed auto
!
interface Vlan1
ip address 192.168.1.x 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat enable
!
interface Vlan2
ip address 192.168.0.x 255.255.255.0
!
ip forward-protocol nd
ip http server
ip http access-class 1
ip http authentication local
ip http secure-server
!
!
ip nat source list 1 interface FastEthernet4 overload
ip nat source list 2 interface FastEthernet4 overload
ip nat source static tcp 192.168.1.x 1723 interface FastEthernet4 1723
!
!
access-list 1 permit 192.168.0.0 0.0.0.255
access-list 2 permit 192.168.1.0 0.0.0.255
!
!
!
!
control-plane
!
!
banner motd
Authorized Access only
!
line con 0
exec-timeout 15 0
login authentication local_auth
line aux 0
exec-timeout 15 0
login authentication local_auth
line vty 0 4
access-class 2 in
login authentication local_auth
length 0
transport input all
!
!
end
Я понимаю, что уже есть несколько похожих вопросов о сбое сервера: pptpd не работает извне на Ubuntu Server 11.10, pptp не может подключиться. Они не решены полностью, и я подумал, что лучше не задавать чужие вопросы. Я попытался использовать предложения из ответов на другие вопросы, но мне все еще нужна помощь, чтобы заставить это работать. Приносим извинения, если это было неправильно.
ОБНОВЛЕНИЕ 16.12.2012:
Единственный прогресс, которого мне удалось добиться в этом вопросе, заключается в том, что я уверен, что проблема вызвана блокировкой туннелей GRE (которые необходимы для завершения PPTP-соединения). При попытке подключения я вижу в show ip nat nvi translations
что и TCP-перевод на 1723 настроен, и также настроен GRE-перевод. Кажется, я могу видеть связанные с GRE пакеты в локальной сети, в которой находится сервер, поэтому я могу предположить, что сервер отправляет (?) GRE-пакеты, однако запуск Wireshark на клиентском ПК при попытке подключения не показывает абсолютно никаких Пакеты GRE.
Хотя в моей конфигурации, опубликованной выше (которую я могу указать), нет конфигурационных директив, которые специально блокировали бы их, похоже, что пакеты GRE не разрешены в / из межсетевого экрана маршрутизатора, даже если запись преобразования NAT настройку на адрес LAN сервера. Может ли кто-нибудь оказать мне некоторую помощь, чтобы гарантировать, что пакеты GRE не блокируются брандмауэром маршрутизатора, чтобы это можно было исключить как возможную проблему, пожалуйста?
Вы не можете транслировать GRE через маршрутизатор PAT: ed. GRE не имеет информации уровня 4, которая могла бы использоваться для сохранения состояния. GRE не использует TCP или UDP, но имеет собственный IP-протокол номер 47.
Вам следует перейти с PAT на настройку one2one-NAT или полностью изменить настройку VPN на IPSec.
Я не знаю, почему конфигурация с "ip nat inside / outside" у вас не сработала (а у меня работает), может быть, вы забыли разрешить GRE в своих списках доступа?
Вы можете одновременно использовать "ip nat enable" и "ip nat inside / outside".
Обычно я использую «ip nat enable» для всех статических трансляций, кроме PPTP, и «ip nat inside / outside» для динамических трансляций (если есть клиенты, использующие исходящий PPTP) и статической трансляции для PPTP (tcp-порт 1723). Кроме того, вам необходимо разрешить трафик GRE в ваших списках доступа.
Что касается объяснения, почему это так - я не знаю, вероятно, PPTP не полностью поддерживается в NAT NVI или что-то в этом роде. Я тоже ничего не знаю о ваших проблемах с SIP, может, он такой же.