Estou tentando conectar-me a um servidor PPTP que fica atrás de um roteador NAT Cisco 881. O servidor está executando o Ubuntu Server 12.04 e está executando o Poptop pptpd
como o daemon PPTP escutando as conexões.
Como foi discutido na minha outra pergunta , estou tentando configurar um roteador Cisco 881 para substituir meu velho Linksys WAG320N. Este mesmo servidor e conexão WAN funcionou bem com o WAG320N sem configuração especial, além de permitir a entrada de 1723 através do firewall.
No Cisco 881, estou usando o mais recente ip nat enable
ou NAT NVI para configurar rotas estáticas no firewall para os serviços em execução atrás do roteador. Meu motivo é que não posso executar outra cópia de meus domínios DNS ativos internamente com endereços IP locais. Para os fins desta questão, porém, eu reconstruí o roteador com ip nat inside/outside
style NAT'ing, mas esse problema é ainda aparente. HTTP / SMTP / IMAP etc. todos funcionam bem nas interfaces WAN e LAN do roteador. Estou apenas tendo problemas com SIP (ver outra pergunta) e PPTP.
Meu problema é que a GRE não parece estar passando pelo NAT corretamente e uma extremidade da conexão não está recebendo o tráfego GRE quando deveria, portanto, o servidor desconecta a conexão.
Veja um exemplo de /var/log/syslog
com a depuração ativada em /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
No que diz respeito à Cisco, tudo que eu preciso é de ip nat source static tcp <SERVER LAN IP> 1723 interface FastEthernet4 1723
, mas é claro que isso não parece estar ajudando o tráfego GRE como deveria.
Experimentando a conexão com o IP da LAN do servidor a partir da mesma LAN que o servidor (atrás do roteador), a conexão PPTP funciona bem, então estou confiante de que a configuração do servidor está ok. Além disso, tudo o que eu precisava no meu WAG320N era abrir o 1723 no firewall.
Aqui está minha configuração atual do roteador:
!
! 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
Agradeço que já existam algumas questões semelhantes no Server Fault: pptpd não funciona externamente no Ubuntu Server 11.10 , pptp não pode se conectar . Eles não estão completamente resolvidos e achei melhor não seqüestrar as perguntas de outra pessoa. Tentei usar as sugestões das respostas nas outras perguntas, mas ainda preciso de ajuda para que isso funcione. Desculpas se não fosse a coisa certa a fazer.
ATUALIZAÇÃO 16/12/2012 :
O único progresso que consegui fazer neste problema é que estou confiante de que o problema é causado pelos túneis GRE (que são necessários para a conexão PPTP ser concluída) que estão sendo bloqueados. Ao tentar uma conexão, posso ver em show ip nat nvi translations
que uma tradução TCP em 1723 está configurada e também uma tradução GRE também é configurada. Eu aparento ser capaz de ver pacotes relacionados GRE na LAN em que o servidor está ligado, por isso sou levado a acreditar que o servidor está enviando pacotes GRE (?), No entanto executando Wireshark em um PC cliente ao tentar uma conexão mostra absolutamente nenhum Pacotes GRE.
Embora não existam diretivas de configuração na minha configuração postada acima (que eu possa apontar) que especificamente as bloqueariam, parece que os pacotes GRE não estão sendo permitidos dentro / fora do firewall do roteador, mesmo que um NAT a entrada de tradução é configurada para o endereço da LAN do servidor. Alguém poderia me fornecer alguma ajuda para garantir que os pacotes GRE não sejam bloqueados pelo firewall do roteador, de modo que isso possa ser descartado como possível problema?