Pluto não encontrando interface em uma VPN ipsec

2

Estou tentando configurar o ipsec, mas o pluto parece não se ligar a um IP público e o Kernel IPsec requer atualização.

Isso é o que eu criei até agora: -IPSec Verifica estados que meu kernel não suporta IPsec

-Eu tive o provedor VPS ativar o IPSec no ambiente openvz na máquina host, no entanto eles afirmam que eu tenho que reconstruir o kernel e me forneceram um link para o site de arquivos kernel do Linux para kernels linux genéricos.

-Eu tentei construir o kernel e instalá-lo, mas parece que não consigo instalá-lo corretamente. O último passo que eu faço é 'mkinitramfs -o initrd.img-3.16.3 3.16.3'

-tutorials afirmam fazer coisas com o grub, no entanto eu estou em um VPS e não acho que o grub está mesmo na minha imagem VPS? Um tutorial que eu segui: link

  • Eu tentei alguns comandos do grub e nada parece estar lá. Como você escreve um kernel em um container VPS dentro do container?

-Eu desisti de compilar a partir do código-fonte e encontrei pacotes de kernel * .deb e tentei instalá-los, eles pareciam descompactar e nenhum erro veio dele, mas quando eu reiniciei ainda era o kernel antigo, existe um comando especial você usa com o dpkg-buildpackage para fazer a instalação? Está tendo problemas de instalação devido ao não boot loader, já que é um VPS? (Assumindo que um contêiner não possui um gerenciador de inicialização?)

aqui está a saída do ipsec, mas acho que parte do problema é o kernel:

Sep 18 04:36:45 shiftmy ipsec_setup: Starting Openswan IPsec 2.6.41...
Sep 18 04:36:45 shiftmy ipsec_setup: Using NETKEY(XFRM) stack
Sep 18 04:36:45 shiftmy ipsec_setup: multiple ip addresses, using  127.0.0.2 on venet0
Sep 18 04:36:45 shiftmy ipsec_setup: ...Openswan IPsec started
Sep 18 04:36:45 shiftmy ipsec__plutorun: adjusting ipsec.d to /etc/ipsec.d
Sep 18 04:36:45 shiftmy pluto: adjusting ipsec.d to /etc/ipsec.d
Sep 18 04:36:45 shiftmy ipsec__plutorun: 002 added connection description "L2TP-PSK-noNAT"
Sep 18 04:36:45 shiftmy ipsec__plutorun: 003 no public interfaces found

aqui está o meu arquivo de interfaces, eu li em algum lugar que o ipsec se liga à interface padrão que é a primeira na lista de interfaces. neste caso venet0 127.0.0.2 enquanto o IP público está em venet0: 0 107.161.xx.xx (não tenho certeza se este é o problema) Meu arquivo de interfaces provedores VPS está bloqueado por isso não posso modificar essa parte, acredito que todo o tráfego vai de 107.161.xx.xx a 127.0.0.2 que se conecta à máquina host openvz, também conhecida como gateway.

root@shiftmy:/etc/network# cat /etc/network/interfaces
# This configuration file is auto-generated.
#
# WARNING: Do not edit this file, your changes will be lost.
# Please create/edit /etc/network/interfaces.head and
# /etc/network/interfaces.tail instead, their contents will be
# inserted at the beginning and at the end of this file, respectively.
#
# NOTE: it is NOT guaranteed that the contents of /etc/network/interfaces.tail
# will be at the very end of this file.
#

# Auto generated lo interface
auto lo
iface lo inet loopback

# Auto generated venet0 interface
auto venet0
iface venet0 inet manual
        up ifconfig venet0 up
        up ifconfig venet0 127.0.0.2
        up route add default dev venet0
        down route del default dev venet0
        down ifconfig venet0 down


iface venet0 inet6 manual
        up route -A inet6 add default dev venet0
        down route -A inet6 del default dev venet0

auto venet0:0
iface venet0:0 inet static
        address 107.161.xx.xx
        netmask 255.255.255.255

Eu tenho pesquisado na rede por problemas "ipsec__plutorun: 003 sem interfaces públicas encontradas" e não consigo encontrar muita ajuda. Não tenho certeza se isso é mesmo o problema real, pois acredito que eu configurei as interfaces corretamente.

O ipsec verify também falha:

Version check and ipsec on-path                         [OK]
Openswan U2.6.41/K(no kernel code presently loaded)
See 'ipsec --copyright' for copyright information.
Checking for IPsec support in kernel                    [FAILED]

 The ipsec service should be started before running 'ipsec verify'

Hardware random device check                            [N/A]
Two or more interfaces found, checking IP forwarding    [OK]
Checking rp_filter                                      [ENABLED]
 /proc/sys/net/ipv4/conf/all/rp_filter                  [ENABLED]
Checking that pluto is running                          [OK]
 Pluto listening for IKE on udp 500                     [FAILED]
 Pluto listening for IKE on tcp 500                     [NOT IMPLEMENTED]
 Pluto listening for IKE/NAT-T on udp 4500              [DISABLED]
 Pluto listening for IKE/NAT-T on tcp 4500              [NOT IMPLEMENTED]
 Pluto listening for IKE on tcp 10000 (cisco)           [NOT IMPLEMENTED]
Checking NAT and MASQUERADEing                          [TEST INCOMPLETE]
Checking 'ip' command                                   [OK]
Checking 'iptables' command                             [OK]

ipsec verify: encountered errors

Eu li que pode falhar se o ipsec não for iniciado corretamente e mostrar falhas falsas em algumas seções da lista de verificação. O IPsec parece estar 'em execução', não tenho certeza se o suporte do Kernel não está realmente lá ou se é uma falha falsa? Também não sei como consertar a falha do pluto.

Eu tenho seguido vários guias e não consigo superar esse problema.

ipsec config:

root@shiftmy:/etc/network# cat /etc/ipsec.conf
version 2.0     # conforms to second version of ipsec.conf specification

config setup
        interfaces=%defaultroute
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
        oe=off
        protostack=auto
        protostack=netkey
        force_keepalive=yes
        keep_alive=60

conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        ikelifetime=8h
        keylife=1h
        ike=aes256-sha1;modp1024!
        phase2alg=aes256-sha1;modp1024
        type=transport
        left=107.161.xx.xx
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
        dpddelay=10
        dpdtimeout=20
        dpdaction=clear

segredos ipsec:

root@shiftmy:/etc/network# cat /etc/ipsec.secrets
107.161.xx.xx %any: PSK "<key here>"
#include /var/lib/openswan/ipsec.secrets.inc
    
por RCG 18.09.2014 / 02:00

2 respostas

0

A resposta a esta pergunta foi que os provedores openVZ VPS precisam ter um kernel que suporte ipsec e devem habilitar os módulos ipsec na máquina host. Alguns de nossos provedores não fariam isso como uma grande mudança para a máquina host. Em vez disso, encontramos todos os nossos provedores compatíveis com o protocolo openvpn e habilitamos 'tun' em todos os nossos VPSs openvz com nossos provedores.

    
por 20.09.2014 / 01:02
0

Eu tive um problema semelhante ao tentar fazer o openswan / ipsec / pluto funcionar em um contêiner do Docker. Com a minha mesma configuração básica, funcionou em uma máquina virtual VirtualBox Ubuntu 14.04.

O problema que tive foi executar uma imagem do Ubuntu 14.04 com o Docker na minha máquina host do Arch Linux.

Eu acredito que a essência do problema é esta linha:

pluto[439]: no public interfaces found

Para me aprofundar nisso, tive que ir ao código-fonte:

apt-get source openswan

Que pode ser rastreado para o código-fonte aqui:

    openswan-2.6.38/programs/pluto/server.c:462:find_ifaces(void)                         
    openswan-2.6.38/programs/pluto/sysdep_bsd.c:201: find_raw_ifaces4(void)               
    openswan-2.6.38/programs/pluto/server.c:477:loglog(RC_LOG_SERIOUS, "no public interfaces found");

Considerando que no VirtualBox Ubuntu 14.04, ele encontra a eth0 e seu endereço muito bem.

No essense, pode ser esse código que não está retornando nenhuma interface:

    openswan-2.6.38/programs/pluto/sysdep_bsd.c:243: find_raw_ifaces4() : if (ioctl(master_sock, SIOCGIFCONF, &ifconf) == -1)

Então, em um esforço para resolver isso, descobri que o Docker limita o acesso a dispositivos de rede (cria uma ponte para o host por padrão) e carrega / descarrega módulos do kernel (o ipsec carrega e descarrega módulos do kernel). Por isso, tive que conceder ao Docker acesso a tudo, inclusive usando a interface de rede bruta do meu host:

docker run --cap-add=ALL --net=host -it ubuntu /bin/bash

Embora esta não seja uma resposta completa para a pergunta, esperamos que ela leve os outros a descobrir o que há de errado com sua própria configuração. Idealmente, Plutão daria mais informações sobre quais dispositivos de rede eles encontram e porque os outros não são adequados (ou seja, não são públicos).

    
por 15.03.2016 / 21:56

Tags