Problemas de roteamento para determinados domínios com a configuração da VPN PPTPD

2

Temos lutado com algum tipo de problema de rede / roteamento com uma VPN baseada em PPTPD, na qual os clientes não podem acessar determinados domínios de Internet / ips por meio da VPN. Por exemplo, o usuário pode navegar em hxxp: //google.com, mas não em hxxp: //microsoft.com.

A configuração é a seguinte:

Cliente (mesmo problema no Windows e no Android, não testou outros) (ip: x.x.x.x) - > Internet - > (y.y.y.y) roteador dd-wrt (192.168.1.1) - > Ubuntu Server 10.10 executando o PPTPD (192.168.1.125).

eirik @ woserv: ~ $ cat /etc/pptpd.conf | grep -v '#'

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.1.125
remoteip 192.168.1.230-240

eirik @ woserv: ~ $ cat / etc / ppp / pptpd-options | grep -v '#'

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
nodefaultroute
debug
lock
auth
nobsdcomp
noipx
mtu 1490
mru 1490

Regras de iptables (em /etc/rc.local) e verificadas são carregadas usando iptables -L

#!/bin/sh

# Flush all rules

iptables -F

iptables -X

iptables -Z

# Allow all VPN stuff

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A INPUT -p 47 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT

iptables -A OUTPUT -p 47 -j ACCEPT

iptables -A FORWARD -i ppp+ -o eth0 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

exit 0

Nós habilitamos a passagem PPTP, IPSEC e L2TP no roteador dd-wrt (em Segurança - > VPN Passthrough). Além disso, nós enviamos a porta 1723 e 47 para 192.168.1.125.

A conexão VPN no Windows é configurada com "Usar gateway padrão na rede remota" no IPv4 e usa o MS-CHAP v2. Se os clientes acessarem o hxxp: //www.whatismyip.com/, o ip da VPN correto será informado (y.y.y.y) e não o IP da Internet normal, x.x.x.x.

Até agora, identificamos os seguintes domínios com problemas:

microsoft.com
support.microsoft.com
no.yahoo.com
answers.yahoo.com
nrk.no
imgur.com

(E enquanto trabalhava na descrição deste problema, descobri que não consegui carregar http://w.pastebin.ca/pb-g.gz .js quando tentei acessar o hxxp: //pastebin.ca via VPN)

Se os clientes tentarem abrir essas páginas da Web quando estiverem usando a VPN, eles obterão um tempo limite (o Google Chrome Dev Tools em Networking diz "Pending" para as solicitações até o tempo limite). Às vezes, o Chrome diz que o erro é "Erro 101 (net :: ERR_CONNECTION_RESET): a conexão foi redefinida." Outros serviços (além do http / https 80/443 também falham).

A maioria dos outros sites funciona, como o hxxp: //google.com e o hxxp: //bing.com. Os problemas são consistentes entre muitas janelas diferentes e clientes Android de vários locais. Não há proxies envolvidos. Desativar o firewall do Windows e qualquer software antivírus não faz nada.

tracert dos clientes dá vários resultados para os diferentes domínios, mas eles parecem um pouco consistentes entre nenhuma VPN e VPN, aqui estão alguns exemplos .

Se eu acionar lynx http://microsoft.com diretamente no servidor Linux executando o PPTPD, ele será carregado corretamente. Mesmo com os outros sites ...

Alguma idéia?

(desculpe pelo jsfiddle com os links tracert, não pude postar tantos links aqui como um novo usuário no ServerFault)

    
por Eirik H 29.01.2013 / 11:39

2 respostas

2

Como você alterou a MTU padrão, essa pode ser a causa. Tente adicionar a seguinte regra ao seu firewall, ajuste conforme necessário:

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS  --clamp-mss-to-pmtu

EDIT: mudou a regra para se inserir como primeira na cadeia.

    
por 29.01.2013 / 13:01
0

Vários problemas

  1. / etc / ppp / pptpd-options

    nodefaultroute
    

    Mas o Windows é configurado com "Usar gateway padrão na rede remota". A opção acima deve ser removida.

  2. Mesma rede nos dois lados do NAT

    iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
    

    O servidor PPTP tem o IP da LAN de 192.168.1.125, os clientes PPTP recebem 192.168.1.230-240, o mesmo 192.168.1.0/24 em ambos os lados do NAT. Não sei se realmente funciona, funciona parcialmente, mas parece problemático.

    Além disso, o servidor PPTP já está dentro da LAN, o roteador DD-WRT já está executando o NAT. NAT no servidor PPTP não é necessário. Remova a regra acima.

  3. Verifique / proc / sys / net / ipv4 / ip_forward

    cat /proc/sys/net/ipv4/ip_forward deve retornar 1 . Se não, adicione o seguinte como linhas 2 de rc.local

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  4. Verifique a rede de clientes PPTP

    Verifique o IP do local / LAN do cliente PPTP que não está usando 192.168.1.0/24. Eles precisam ser alterados ou o roteamento da VPN pode não funcionar.

por 29.01.2013 / 12:48