Faça o socat ouvir em pilhas IPv4 e IPv6

1

Os provedores comutados no outro dia só atribuem conexões DSlite. Estou bem, pensei. A coisa é - eu quero acessar algumas das minhas coisas de fora da minha rede, o que deve ser muito menos um aborrecimento agora eu tenho IPv6 nativo.

Meu novo problema principal é que não posso presumir que eu esteja em todos os lugares em que perambulo, então na maior parte do tempo tento acessar a partir de um ponto de entrada somente IPv4. Encontrado $ socat era meu amigo, como posso acessar uma caixa com conexão dualstack verdadeira - então acessar meu IPv6 a partir de uma conexão somente IPv4 é tão fácil quanto executar $ socat UDP4-LISTEN:sourceport,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport na máquina com pilha dupla e depois conectar a my-dualstack-hostna.me:sourceport de fora .

Agora, $ netstat -tulpen | grep sourceport na máquina de empilhamento duplo revela apenas um ouvinte UDP4 - então, meu problema atual é:

  • Acesso a partir da conexão somente IPv6 exige que eu conecte-se a my-ipv6-hostname-behind.cgn:targetport
  • O acesso a partir da conexão somente IPv4 exige que eu conecte-se a my-dualstack-hostna.me:sourceport
  • O acesso a partir da conexão DS (-lite) permite que eu use ambos, mas use preferencialmente a rota direta IPv6

Por isso, seria ótimo poder usar my-dualstack-hostna.me:sourceport para conexões IPv4 e IPv6 e não para atualizar a configuração toda vez que eu movo meu laptop ou telefone. Como fazer com que socat ouça em ambos? Tem que haver um caminho! $ netstat -tulpen | grep ":22" na máquina DS mostra estes:

tcp        0      0 0.0.0.0:22 […]
tcp6       0      0 :::22      […]
    
por LDericher 18.02.2015 / 16:10

1 resposta

3

Eu tive o mesmo problema - você pode resolvê-lo executando duas instâncias de socat, uma ouvindo em ipv4 e outra ouvindo na mesma porta ipv6, ligando cada um ao seu respectivo endereço , desta forma:

socat UDP4-LISTEN:sourceport,bind=<ipv4-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport

socat UDP6-LISTEN:sourceport,bind=<ipv6-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport
    
por 13.05.2017 / 18:32