AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1094250
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2022-02-21 06:10:24 +0800 CST2022-02-21 06:10:24 +0800 CST 2022-02-21 06:10:24 +0800 CST

Não é possível fazer com que o túnel dividido funcione em Strongswan

  • 772

Estou tentando configurar o Strongswan para o tunelamento dividido da VPN.

O que eu quero é apenas as sub-redes 10.88.0.0/16e 10.0.200.0/24é acessível através do túnel VPN. Todo o resto é tratado através default gatewayda rede.

Todos os clientes recebem um endereço IP pertencente à 10.0.201.0/24sub-rede.

No meu arquivo de configuração tenho entre outros o seguinte:

# Default login method
eap-defaults {
  remote {
   auth = eap-radius
   id = %any
   eap_id = %any
  }
}

connections
{
  conn-unix : conn-defaults, eap-defaults {
    children {
      net {
        local_ts = 10.0.200.0/24, 10.88.0.0/16
      }

      esp_proposals = aes128gcm128-x25519
    }

    pools = IkeVPN-ipv4
    proposals = aes128-sha256-x25519
  }

  conn-windows : conn-defaults, eap-defaults {
    children {
      net {
        local_ts = 10.0.200.0/24, 10.88.0.0/16
      }

      esp_proposals = aes256-sha256-prfsha256-modp1024
    }

    proposals = aes256-sha256-prfsha256-modp1024
    pools = IkeVPN-ipv4
  }
}

pools
{
  IkeVPN-ipv4 {
    addrs = 10.0.201.0/24
    dns = 10.0.88.2
  }
}

Quando faço login pela VPN, é possível fazer ping nos hosts pertencentes a 10.88.0.0/16e 10.0.200.0/24, para que eu saiba que posso usar o túnel VPN.

No entanto:

Se eu tentar acessar qualquer outro recurso na Internet enquanto ainda estiver conectado à VPN, não consigo nem mesmo pingar o endereço IP pertencente a esse recurso.

Na minha tabela de roteamento no meu computador Windows, posso encontrar as seguintes entradas:

Tabela de roteamento parcial para um cliente Windows conectado ao servidor VPN

Eu sei que quando você tem duas rotas para uma determinada sub-rede, como 0.0.0.0/0na tabela de roteamento, qualquer regra com a métrica mais baixa vence e o tráfego é encaminhado usando essa regra.

No entanto não quero que o servidor VPN instale uma rota padrão via VPN, mas apenas informe que as sub-redes 10.88.0.0/16e 10.0.200.0/24tem que ser roteado via VPN.

O que eu quero é que eu veja uma tabela de roteamento mais próxima disso sem ter que editar a tabela de roteamento manualmente em cada cliente VPN:

Tabela de roteamento desejada

Então, como eu vou fazer isso?

strongswan split-tunneling split-tunnel
  • 1 1 respostas
  • 434 Views

1 respostas

  • Voted
  1. Best Answer
    Lasse Michael Mølgaard
    2022-02-24T03:04:20+08:002022-02-24T03:04:20+08:00

    Acontece que meu problema com o tunelamento dividido foi colocado em uma área completamente diferente, pois tenho 2 roteadores em casa, então minha rede doméstica é algo como: ISP <-> R1 <-> R2 <-> Me.

    ... e R1 foi configurado para um endereço IP no intervalo 10.0.0.0/24.

    Quando você desabilita o roteamento padrão no cliente VPN do Windows, ele adiciona uma rota baseada em classe, portanto, no meu caso, ele adicionará uma rota que envia tudo para 10.0.0.0/8 por VPN, o que obviamente entraria em conflito com a configuração no roteador R1.

    É por isso que queria remover completamente a rota 10.0.0.0/8 e enviar rotas para as sub-redes 10.88.0.0/16e 10.0.200.0/16sobre VPN.

    Acontece que é factível.

    O roteamento baseado em classe é removido habilitando disable class based routingquando você desabilita default routingno cliente VPN.

    No Strongswan, você precisa encaminhar a solicitação dhcp dos clientes para um servidor DHCP que implementou o RFC3442.

    Portanto, na minha configuração acima, tenho que substituir todas as ocorrências de pools = IkeVPN-ipv4com pools = dhcpe strongswan.confadicionar o seguinte à subseção de plugins de charon:

    charon {
      plugins {
        ...
        dhcp {
          server = ip.address.of.dhcp.server
        }
      }
    }
    

    Eu posso então excluir toda a poolsseção na parte inferior da minha configuração.

    Existem mais algumas opções disponíveis que podem ser lidas aqui .

    O guia do Strongswan da dica @ecdsa forneceu algumas informações, mas esse guia é específico do Windows, portanto, não informa como lidar com dispositivos Linux, MacOS ou Android. No entanto, o RFC3442 tratará do caso genérico.

    Em poucas palavras, o que o RFC3442 diz é que você deve enviar as duas opções de dhcp a seguir:

    • opção 121 (relacionada ao Linux, Android e Windows Vista ou anterior)
    • opção 249 (relacionada ao Windows 7 ou mais recente e MacOS)

    Basicamente você tem que codificar cada rota como um array de int usando a seguinte sintaxe:

    x,y1,y2,y3,y4,z1,z2,z3,z4

    Onde:

    • x: máscara de rede CIDR
    • y1 - y4: é a rede que você deseja rotear, mas com a diferença de que quando a cauda da sequência y1,y2,y3,y4 é toda zero, eles são omitidos.
    • z1 - z4: é o gateway do próximo salto para a sub-rede.

    Se houver mais de uma rota a ser enviada via DHCP, você terá que adicionar outra sequência semelhante à acima na cauda do primeiro roteador.

    De acordo com a documentação do Strongswan, posso substituir o gateway padrão pelo 0.0.0.0.

    Isso significa que minha rota para 10.0.200.0/24é codificada como 24,10,0,200,0,0,0,0e 10.88.0.0/16é codificada para 16,10,88,0,0,0,0.

    Combinando os dois me dá 24,10,0,200,0,0,0,0,16,10,88,0,0,0,0, o que me leva à seguinte configuração em ISC DHCP server:

    option rfc-routes code 121 = array of integer 8;
    option ms-routes code 249 = array of integer 8;
    
    default-lease-time 21600;
    max-lease-time 86000;
    
    subnet 10.0.201.0 netmask 255.255.255.0 {
        range 10.0.201.1 10.0.201.254;
    
        option domain-name "example.com";
        option domain-name-servers ip.address.of.dns.server;
    
        option rfc-routes 24,10,0,200,0,0,0,0,16,10,88,0,0,0,0;
        option ms-routes 24,10,0,200,0,0,0,0,16,10,88,0,0,0,0;
    }
    

    Espero que isso ajude quem está lutando com o túnel dividido.

    • 0

relate perguntas

  • Bloquear sites para meus usuários de VPN

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve