Como configurar a conectividade segura entre várias sub-redes

5

Eu tenho a seguinte configuração

2 x linode vps
1 x lab (physical) running 4 vps

Meu objetivo é fazer com que todos os nós ajam como se estivessem na mesma LAN. Isso permitirá que eu altere as regras de IPTable, para permitir somente o tráfego local, em vez de ter que adicionar uma nova entrada de IPTable para TODOS os servidores que precisam de acesso a uma porta no nó de destino.

Eu fiz algumas pesquisas e testes preliminares e não consigo imaginar a melhor solução para o que estou tentando realizar. Eu tenho praticado com dois dos meus VPS de laboratório, que residem em sub-redes separadas, antes de começar a configurar o VPS de produção real.

A máquina de laboratório tem dois nics físicos; eth0 e eth1. A eth1 é configurada como uma ponte para fornecer nics virtuais ao VPS.

A configuração é a seguinte

service-a-1 (physical node):
    eth0: 192.168.0.1
    eth1: br0
    br0:  192.168.0.2

service-a-2 (vps):
    eth0: 192.168.0.3
    eth0:0 10.0.0.1, 255.255.192.0
    eth0:1 10.0.1.1, 255.255.192.0, gw 10.0.0.1

service-a-3 (vps):
    eth0: 192.168.0.4
    eth0:0 10.0.64.1, 255.255.192.0
    eth0:1 10.0.65.1, 255.255.192.0, gw 10.0.64.1

Eu uso os 192.168.0.x ip addies para me conectar ao VPS, mas os 10.0.x ip addies para praticar a conexão de sub-redes. Meu objetivo com o design acima é estabelecer um túnel seguro entre service-a-2 e service-a-3 por meio de seus ips de gateway; 10.0.0.1 e 10.0.64.1 , respectivamente. Em seguida, para todos os outros nós em cada sub-rede, use os gateways, para os quais um túnel já está estabelecido, portanto, não preciso continuar criando um novo túnel para cada nó na sub-rede.

Para testar a conectividade, tenho usado: ping -I 10.0.1.1 10.0.65.1 , que deve emular a comunicação entre o node1 na subnet1 e o node1 na subnet2.

Eu tentei seguir as instruções descritas neste tutorial como parecia bastante simples, mas depois de ler outros posts, não tenho certeza se está realmente criptografado, já que o modo está definido como 'gre'. Mas depois de ler algumas informações sobre o uso do OpenSSH, parece que uma nova conexão é necessária para cada nó na sub-rede, em vez de estabelecer uma única conexão entre os dois gateways.

Após mais pesquisas, me deparei com um artigo fornecido pelo linode, que parecia promissor, mas no primeiro Alguns parágrafos mencionaram que o OpenSSH é o método preferido (sobre o OpenVPN) para realizar o que estou procurando fazer.

Então, minha pergunta é uma dupla:

  1. Minha lógica é válida para tentar conectar sub-redes umas com as outras? (Estabeleça um túnel entre os gateways e atribua o gateway a cada nó na sub-rede)

  2. Qual é o método preferido para estabelecer um túnel entre dois gateways a serem compartilhados pelo número X de nós dentro de suas respectivas sub-redes? Usando rota linux, OpenSSH, OpenVPN ou outra coisa?

- Atualização -

Depois de algumas brincadeiras, parece que preciso estabelecer um túnel Open-SSH (para criptografia) entre os diferentes roteadores. O túnel irá conectar os ips externos de ambos os roteadores, o que eu suponho, se configurado corretamente, permitirá que eu acesse os nós atrás do roteador na outra ponta.

Algo mais me ocorreu, digamos que eu tenha a seguinte configuração:

subnet-1: Office #1, San Diego, CA

subnet-2: Colo #1, Dallas, TX

subnet-3: Colo #1, Tokyo, Japan

subnet-4: Colo #1, Sydney, Australia

Faz sentido estabelecer túneis entre cada sub-rede, para atuar como uma lan virtual? Como mencionei na pergunta original, estou fazendo isso para que o IPTables possa permitir qualquer tráfego que chegue até 10.0.0.0/18, em vez de ter que inserir o iptables para cada servidor para o qual o acesso é necessário de outro servidor.

Tomando ainda mais um passo atrás, faz sentido executar o IPTables em TODOS os servidores, se estiver atrás de um firewall? Talvez seja mais fácil parar o IPTables em todos os servidores atrás de um firewall. Eu levo a segurança a sério e parece bom senso rodar o IPTables em todos os nós, mesmo que por trás de um firewall. Mas se alguém obtiver acesso a um nó, teoricamente eles poderão acessar outros nós como se não estivessem executando IPTables, devido à regra 10.0.0.0/18 em todos os servidores.

- Atualização # 2 -

Então eu tenho o n2n configurado da seguinte maneira:

service-a-1 (behind router, but pinholed 55554 udp):

  IP config: 
    ifcfg-eth0:  inet addr:10.0.0.1  Bcast:10.0.63.255  Mask:255.255.192.0 HWaddr 00:1B:78:BB:91:5A

  n2n (edge) startup:
    edge -d n2n0 -c comm1 -k eme -u 99 -g 99 -m 00:1B:78:BB:91:5C -a 10.0.0.1 -l supernode1.example.com:55555 -p 55554 -s 255.255.192.0

service-a-3 (linode vps):

  IP config:
    ifcfg-eth0: inet addr:4.2.2.2  Bcast:4.2.127.255  Mask:255.255.255.0 HWaddr F2:3C:91:DF:D4:08

    ifcfg-eth0:0: inet addr:10.0.64.1  Bcast:10.0.127.255  Mask:255.255.192.0 HWaddr F2:3C:91:DF:D4:08

    n2n (server) startup:
     supernode -l 55555 -v

    n2n (edge) startup:
      edge -d n2n0 -c comm1 -k eme -u 99 -g 99 -m F2:3C:91:DF:D4:08 -a 10.0.64.1 -l supernode1.example.com:55555 -p 55554 -s 255.255.192.0

Com esta configuração, eu estava totalmente esperando pingar o service-a-3 (10.0.64.1) do service-a-1 (10.0.0.1), mas continuo recebendo "net de destino inacessível". O IPTables nos dois servidores está desativado, mas o service-a-1 está atrás de um firewall, mas está configurado para permitir todo o tráfego de saída. Alguma idéia de por que eu não consigo pingar entre as duas sub-redes como se fosse uma rede plana?

    
por Mike Purcell 26.08.2013 / 03:13

2 respostas

5

Você pode simplificar a solução ...

Se você estiver procurando uma maneira de vincular todos esses servidores (não roteadores ou gateways) como se estivessem em uma rede simples, sugiro que você consulte o n2n oferta ponto-a-ponto de ntop .

Esta ferramenta permite-lhe atravessar dispositivos intermediários; útil se você não tiver acesso a firewalls ou tiver problemas complexos de roteamento. No meu caso, eu uso o n2n para monitorar sistemas clientes a partir de um local central. É mais limpo que VPNs site a site, e eu posso contornar sub-redes / endereços IP sobrepostos. Pense nisso ...

Editar:

Eu recomendo usar o n2n_v2 fork e a compilação manual.

Um exemplo de configuração do n2n seria semelhante ao seguinte:

No seu supernode , você precisa escolher uma porta UDP que será permitida pelo firewall na frente do sistema supernode. Vamos dizer porta UDP 7655, com nome edge.mdmarra.net :

# supernode -l 7655 -f -v 
# edge -d tun0 -m CE:84:4A:A7:A3:40 -c mdmarra -k key -a 10.254.10.1 -l edge.mdmarra.net:7655

Nos sistemas clientes, você tem muitas opções. Você deve escolher um nome de dispositivo de encapsulamento, um endereço MAC (talvez), um nome de comunidade, uma chave / segredo um endereço IP e o endereço: porta do supernó. Eu costumo usar uma string de comando mais completa:

# edge -d tun0 -m CE:84:4A:A7:A3:52 -c mdmarra -k key -a 10.254.10.10 -l edge.mdmarra.net:7655

Elas podem ser executadas em primeiro plano para testes, mas todas as funcionalidades estão no comando edge . Normalmente, vou incluir isso na estrutura Monit para garantir que os processos permaneçam atualizados.

    
por 29.08.2013 / 04:56
0

Você pode configurar um túnel GRE e ver se ele atende às suas necessidades. A ideia geral (muito geral) é próxima da das soluções VPN, apenas sem toda a sobrecarga de segurança. Isto é baseado na suposição de minha parte de que você não precisa ou quer segurança.

Se você decidir adicionar segurança ao link, poderá fazê-lo. É relativamente fácil implementar o PPTP-over-GRE e até o IPSEC-over-GRE.

Embora o GRE seja uma tecnologia desenvolvida pela CISCO, não é de forma alguma proprietária. Muitas distribuições Linux possuem as ferramentas necessárias para configurar um túnel GRE.

Você pode verificar este breve artigo sobre o PPTP-over-GRE conforme ele é implementado no Arch Linux , a distribuição que eu uso para a maioria dos servidores que eu configurei.

    
por 04.09.2013 / 15:28