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:
-
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)
-
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?