Strongswan encaminhamento de túnel ipv6

0

Estou tentando resolver um problema estranho no roteamento. Eu tenho o meu roteador configurado (Turris, executando OpenWRT personalizado), com conexão ipv6 Tunneling Strongswan. Isso funciona bem para o próprio roteador, já que a conectividade ipv6 está funcionando bem (por meio do túnel, meu provedor não oferece o IPv6 nativo).

TL; DR: As rotas não são escolhidas como eu as esperava, pois a mais genérica, :: / 0 parece ser sempre preferida, embora uma correspondência / 64 esteja disponível.

Mas quando tentei estender isso para minha rede doméstica, deparei com um problema e não consigo encontrar uma causa.

Embora o ipsec funcione, recebo uma interface ipsec0 e essas rotas:

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
::/0                                        ::                                      U     1024   0        2 ipsec0  
2a01:490:19:42::/64                         ::                                      U     1024   0        0 br-lan  

Aqui, 2a01: 490: 19: 42 :: / 64 é uma classificação que dediquei à minha rede local, 2a01: 490: 19: 42 :: 1 é o endereço IP do roteador nessa rede.

Aqui estão algumas observações:

1) Quando faço ping de 2a01: 490: 19: 42 :: 1 de um computador na minha rede local, o roteador responde, mas envia a resposta para a interface ipsec0. Eu não tenho ideia do porquê. Não deveria o prefixo mais específico, 2a01: 490: 19: 42 :: / 64, em br-lan ser favorecido? Parece escolher corretamente o endereço IP de origem 2a01: 490: 19: 42 :: 1.

2) As mesmas coisas acontecem quando eu tento enviar um pacote da minha rede local para algum outro site, digamos ping6 stackexchange.com. Os pacotes entram no roteador, são encaminhados, o servidor envia resposta, o roteador o recebe ... e o envia de volta para a interface ipsec0.

3) Não há políticas do xfrm. ip xfrm pol não retorna nada. Mas o Strongswan está correndo e fiquei com a impressão de que o Strongswan sempre cria algumas políticas. Na minha configuração anterior, tive que adicionar alguns para permitir a passagem de pacotes para o túnel, mas estou um pouco confuso sobre a lista de políticas estar vazia.

Tudo bem, então o que há de errado? Por que a rota mais genérica, :: / 0, é preferida para meus pacotes ipv6?

Obrigado!

    
por Krakonos 25.01.2016 / 20:54

1 resposta

0

O problema foi que o ipsec inseriu as regras em uma tabela de roteamento diferente (tabela 220 ) e criou uma política para direcionar o tráfego para lá:

root@turris:/etc/config# ip rule list
0:  from all lookup local 
220:    from all lookup 220 
32766:  from all lookup main 
32767:  from all lookup default 

Mas a tabela 220 continha apenas a rota padrão no túnel ipsec e não na rede local:

root@turris:/etc/config# ip -6 r show table 220
default dev ipsec0  proto static  src 2a01:490:19:42::1  metric 1024 

Que inevitavelmente fez com que todos os pacotes fossem encaminhados para o túnel.

A rede do próprio roteador funcionou apenas porque eles foram aceitos e não foram roteados.

Corrigi isso instruindo o strongswan a inserir regras de roteamento na tabela principal, definindo charon.routing_table = 254 (o id de main, como visto em /etc/iproute2/rt_tables ). Meu strongswan.conf agora é assim:

charon {
#       load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        routing_table = 254 # main
}
    
por 26.01.2016 / 18:33