Como redirecionar o tráfego da LAN para uma conexão de cliente L2TP / IPsec em um gateway?

0

Eu estabeleci uma conexão de cliente L2TP / IPsec no gateway e estou tentando redirecionar meu host na LAN para usar essa conexão ao acessar a Internet.

Aqui está a topologia da rede.

Estaéatabeladeroteamentodomeugateway:

$iproutedefaultdevpppoe-wanscopelink1.0.0.1devppp1protokernelscopelinksrc192.168.179.116.6.6.6devpppoe-wanscopelink5.5.5.5devpppoe-wanprotokernelscopelinksrc5.5.5.5192.168.1.0/24devbr-lanprotokernelscopelinksrc192.168.1.1$iprule1:fromalllookuplocal10:from192.168.1.2lookup1032766:fromalllookupmain32767:fromalllookupdefault$iprouteshowtable10defaultdevppp1scopelink6.6.6.6via5.5.5.5devpppoe-wan192.168.1.0/24via192.168.1.1devbr-lan

Oproblemaéquedepoisdeadicionararotapadrãoàtabela10,meuhostnãopodemaisacessaraInternet.Usandootcpdumpparaescutarnainterface,oppp1(tcpdump-ippp1)revelaquenenhumpacotefluiatravésdele.

Eutenteimascararainterfaceppp1com:

$iptables-tnat-APOSTROUTING-oppp1-jMASQUERADE

Nãoajudou,aindanãohápacotesfluindopelainterface.Alémdisso,okerneltempermissãopararedirecionarpacotes:

$cat/proc/sys/net/ipv4/ip_forward1

Masseeuusarainterfacediretamentenogateway,tudofuncionarábem:

$curl--interfaceppp1google.com<HTML><HEAD><metahttp-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/?gfe_rd=cr&amp;ei=suORVbLfOKXC8Af3noGwDA">here</A>.
</BODY></HTML>

Parece que o kernel linux do gateway de alguma forma derrubou os pacotes do meu host. Mas nenhuma das interfaces tem a filtragem de caminho inverso ativada:

$ cat /proc/sys/net/ipv4/conf/ppp1/rp_filter
0

$ cat /proc/sys/net/ipv4/conf/pppoe-wan/rp_filter
0

Então eu estou no meu juízo final. Por que o tráfego do host nunca passa pelo ppp1? Como eu poderia redirecionar meu host para a conexão do cliente L2TP / IPsec?

Eu usei a mesma configuração para um cliente PPTP e funcionou muito bem. De alguma forma, não funciona para um cliente L2TP / IPsec.

O gateway é uma caixa OpenWrt (Chaos Calmer 15.05-rc2, kernel 3.18.14). Eu uso strongSwan (5.3.0) + xl2tpd (1.3.6) para configurar o cliente L2TP / IPsec.

Esta é a configuração para strongSwan:

conn example
    auto=start
    keyexchange=ikev1
    type=transport
    left=%defaultroute
    leftauth=psk
    right=server.example.com
    rightid=%any
    rightauth=psk
    dpdaction=restart
    dpddelay=10s
    dpdtimeout=60s

e configuração para xl2tpd

[lac example]
lns = server.example.com
length bit = yes
redial = yes
max redials = 5
pppoptfile = /etc/ppp/options.xl2tpd

e configuração para o ppp

noauth
mru 1452
mtu 1452
nomppe
ipcp-accept-remote
ipcp-accept-local
nopcomp
noaccomp
lcp-echo-interval 10
lcp-echo-failure 5

O host é um Mac (Yosemite 10.10.3).

Agradecemos antecipadamente pela ajuda.

P.S. Apenas o IP da Internet do gateway e o IP da Internet do servidor foram substituídos por IPs falsos, todos os outros IPs são os reais usados.

    
por hgl 30.06.2015 / 03:19

2 respostas

1

Eu finalmente resolvi isso. Os pacotes são descartados pelo netfilter (iptables).

O OpenWrt, por padrão, descarta pacotes encaminhados do br-lan. Portanto, precisamos permitir o encaminhamento de pacotes do br-lan para o ppp1.

$ iptables -I FORWARD -i br-lan -o ppp1 -j ACCEPT

Depois disso, o host ganha acesso à Internet.

Observe que você precisa usar -I para que essa regra seja inserida antes da regra de eliminação, fazendo com que ela tenha precedência.

    
por 02.07.2015 / 15:53
0

Você está mascarando a interface errada. Você precisa se mascarar porque, basicamente, você está NATTING, mas a interface virtual não pode ser diretamente mascarada.

Em vez disso, você deve usar:

      iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE 

Isto irá mascarar qualquer coisa saindo da sua interface regular, entre estes haverá os pacotes NATted do seu host Yosemite.

Pareceu-me que este é o único ponto fraco na sua discussão acima. Depois de algumas pesquisas, eu pude confirmar que este deveria ser o caso lendo esta página da Web do Wiki Debian . Pela primeira vez, meu amado Arch Linux Wiki me deixou para baixo.

    
por 30.06.2015 / 16:09