Exclui uma sub-rede local do StrongSwan VPN

1

Eu tenho um computador com uma interface Ethernet extra, somente local, com uma sub-rede privada. Quando uma VPN StrongSwan é estabelecida, não consigo acessar essa sub-rede.

Esta é a configuração local "esquerda" (estabelecida pelo algo ):

conn ikev2-<rightip>
    fragmentation=yes
    rekey=no
    dpdaction=clear
    keyexchange=ikev2
    compress=no
    dpddelay=35s

    ike=aes128gcm16-prfsha512-ecp256!
    esp=aes128gcm16-ecp256!

    right=<rightip>
    rightid=<rightip>
    rightsubnet=0.0.0.0/0
    rightauth=pubkey

    leftsourceip=%config
    leftauth=pubkey
    leftcert=daves.crt
    leftfirewall=yes
    left=%defaultroute

    auto=add

A sub-rede em questão é 10.0.0.0/24. % defaultroute resolve para um endereço em 192.168.0.0/24.

'left' e 'leftsubnet' não parecem as opções certas para isso, mas não vejo nada melhor. Eu tentei configurar o leftsubnet para 10.0.0.0/24 e para! 10.0.0.0/24.

Como excluo uma sub-rede local de uma conexão VPN do StronSwan?

Como faço para inspecionar a configuração de rota de uma conexão?

    
por user176315 17.03.2018 / 21:51

1 resposta

3

Você pode definir uma política de repasse .

ATUALIZAÇÃO: conforme observado por @ecdsa, com strongswan > = 5.5.2, há um método mais fácil , olhe para o final se a sua versão puder usá-lo.

Exemplo com alguns IPs aleatórios. Antes de qualquer alteração e túnel:

# ip route get 10.0.0.55
10.0.0.55 dev lxcbr0 src 10.0.0.77 uid 0 

Depois de estabelecer o túnel, o problema:

# ip route get 10.0.0.55
10.0.0.55 via 192.168.0.1 dev eth0 table 220 src 192.168.0.44 uid 0 

Adicionando esta configuração a /etc/ipsec.conf :

conn ignorelan
    left=127.0.0.1 #prevents usage in peers selection algorithm
    leftsubnet=10.0.0.0/24
    rightsubnet=10.0.0.0/24
    authby=never
    type=passthrough
    auto=route

e recarregando:

# ipsec reload

deve ativá-lo imediatamente. Se não (desta vez) você pode fazer:

# ipsec route ignorelan
'ignorelan' shunt PASS policy installed

De qualquer forma, ele deve ser usado em qualquer reinício posterior. Você agora tem (além de qualquer túnel):

# ipsec status 
Shunted Connections:
     ignorelan:  10.0.0.0/24 === 10.0.0.0/24 PASS

[...]

Agora, o túnel sendo estabelecido ou não, você recebe de volta a rota correta (manipulada por strongswan, portanto, na tabela 220, não (apenas) table main (anymore)):

# ip route get 10.0.0.55
10.0.0.55 dev lxcbr0 table 220 src 10.0.0.77 uid 0 
    cache 

Com um túnel para 0.0.0.0/0, haveria um resultado semelhante a este na tabela 220:

# ip route show table 220
default via 192.168.0.1 dev eth0 proto static src 192.168.0.44 
10.0.0.0/24 dev lxcbr0 proto static src 10.0.0.77 
192.168.0.0/24 dev eth0 proto static src 192.168.0.44 

Se você não colocar rotas correspondentes à realidade (por exemplo: máscara de rede incorreta) nas configurações de passagem, espere resultados incorretos para o "shunt" (como o IP de origem esperado, mas passando pela placa de rede errada), .

UPDATE : o plug-in bypass-lan é mais fácil usar, especialmente com ambientes dinâmicos.

Em vez de adicionar novas entradas conn , ative-a (por exemplo, no Debian Buster (não estável), edite o /etc/strongswan.d/charon/bypass-lan.conf e defina load = yes (ex .: charon.plugins .bypass-lan.load = sim)). Por padrão, toda interface é desviada, ou seja, um túnel seria estabelecido, mas não seria usado por padrão. Portanto, basta definir interfaces_ignore ou interfaces_use de acordo. Você deve definir interfaces_ignore para a (s) interface (s) que você não quer que ignore túneis ou, senão, defina interfaces_use para a (s) interface (s) desejada (s) para contornar túneis. Por exemplo:

interface_use = lxcbr0

Entraremos neste exemplo depois de ipsec start , como no método anterior:

# ip route show table 220
10.0.0.0/24 dev lxcbr0 proto static src 10.0.0.77

(mas também considerará rotas IPv6 relacionadas a essa interface quando o IPv6 estiver em uso).

No entanto, um outro método (hackiano) seria ignorar a tabela 220 do strongswan: em vez de quaisquer configurações strongs, o mesmo seria alcançado (para essas perguntas e exemplos) com:

ip rule add priority 219 to 10.0.0.0/24 lookup main

Ele usará a tabela de roteamento padrão (principal) com a rede de destino, em vez de continuar para a próxima entrada usando a tabela 220 do strongswan.

    
por 19.03.2018 / 01:49