Como encapsular de forma transparente uma porta do IPv4 para um dispositivo IPv6 remoto?

8

Em casa, estou conectado a um endereço IPv6 e, além disso, meu provedor fornece uma configuração semelhante à NAT, através da qual recebo um endereço IPv4 público que compartilho com outros clientes (a razão é que estamos com pouco IPv4 endereços).

Como resultado, não consigo acessar meus dispositivos em casa (por exemplo, meu gateway de VPN) quando estou em uma rede IPv4. No entanto, tenho um servidor que possui um endereço IPv4 e um IPv6. Assim, deve ser possível acessar meus dispositivos domésticos se eu passar pelo meu servidor.

Aqui está o que eu tenho em mente até agora: Como no IPv6, cada dispositivo obtém seu próprio IP, meu servidor em casa recebe um IP IPv6 estático. Meu servidor remoto já possui IPv4 e IPv6 estáticos.

Quando eu quero agora alcançar meu servidor OpenVPN em casa, anteriormente eu abriria a porta 1194 em meu roteador e o NAT passaria as conexões ao servidor lá. No meu novo cenário, eu quero ligar na porta 1194 (ou um diferente, não importa) no meu servidor remoto e deve ter essa conexão e encapsulá-lo para o meu servidor doméstico (visto que ambos têm IPv6).

Graficamente, isso significaria:

Dispositivo móvel (IPv4) - > Servidor Remoto (IPv4 + IPv6) - > Home Server (IPv6)

Mas isso só deve acontecer em portas selecionadas (ou existe uma maneira mais inteligente do que selecionar por porta?).

Minha pergunta é: como eu alcanço essa configuração?

Em que nível isso deve funcionar? Se eu quiser fazer isso por porta, obviamente tenho que encaminhar o pacote na camada TCP / UDP. Minha primeira idéia seria iptables, mas o iptables pode encaminhar um pacote para um IP remoto? Ou há outro software que pode? Ou devo criar um túnel entre os dois servidores e depois encaminhar isso localmente? Como eu faria isso?

    
por javex 27.02.2014 / 12:41

1 resposta

9

Eu finalmente encontrei uma solução com Encaminhando portas IPv4 para hosts somente IPv6 que basicamente usa socat:

socat TCP4-LISTEN:22,fork,su=nobody TCP6:[2a01:198:79d:1::8]:22

Minha solução é basicamente a mesma, a não ser que eu use um nome de host, exceto por um IP estático. Tome cuidado para não usar colchetes com um nome de host, pois ele irá interpretá-lo como um IP.

    
por 10.03.2014 / 00:12