Acesso a Netlink dentro de um namespace de rede

2

Estou tentando configurar um gateway IPsec (strongSwan) em um Raspberry Pi 2.

O Pi já estava fornecendo vários serviços na LAN usando um endereço IP privado.

Minha tentativa inicial de transformá-lo em um gateway IPsec envolveu apenas adicionar um endereço IP público à mesma interface ( eth0 ) e ativar o strongSwan SA nesse novo endereço. Isso funciona, e depois de ativar o módulo pcrypt , consegui obter um throughput de decodificação de ~ 80Mbps, o que realmente é muito bom considerando todas as coisas.

Então decidi tentar isolar o material strongSwan em um namespace de rede separado. Eu fiz ip netns add vpn , criei um macvlan device em eth0 e, em seguida, incluí-lo no namespace vpn . Eu então corro ip netns exec vpn ipsec start e tudo funciona de novo.

No entanto, pcrypt parece não estar mais ativo dentro do namespace e a taxa de transferência cai para aproximadamente ~ 25Mbps. Eu geralmente habilito pcrypt usando crconf , conforme esta instrução . Quando invocado dentro do namespace, ele continua falhando com um erro de netlink. A execução de strace crconf fornece esta preciosidade:

socket(PF_NETLINK, SOCK_RAW, NETLINK_CRYPTO) = 3
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=997, groups=00000000}, [12]) = 0
send(3, "
socket(PF_NETLINK, SOCK_RAW, NETLINK_CRYPTO) = 3
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=997, groups=00000000}, [12]) = 0
send(3, "%pre%%pre%%pre%%pre%U27V%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%", 20, 0) = -1 ECONNREFUSED (Connection refused)
%pre%%pre%%pre%U27V%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%", 20, 0) = -1 ECONNREFUSED (Connection refused)

Portanto, o kernel está recusando uma conexão com o soquete NETLINK_CRYPTO dentro do namespace da rede.

PERGUNTA: Como eu permito uma conexão com NETLINK_CRYPTO do meu namespace de rede?

    
por Saran 03.03.2016 / 02:15

0 respostas