Linux Networking: Como encaminhar conexões IPv6 de entrada da Internet através de uma segunda interface IPv4 para outros computadores em uma rede local?

1

Eu tenho algum tipo de servidor Debian-gateway-zumbi que tem duas interfaces de rede: eth0 e wlan0 (yeah, wlan0 ... eu sei.).

eth0 está conectado a um modem a cabo da Internet que atribui um endereço IPv6 a ele. Vamos supor que essa seja uma atribuição somente de IPv6. (Na verdade, ele usa o DS Lite, mas vamos ignorar isso por enquanto).

wlan0 está conectado a uma rede local baseada em IPv4 com um gateway principal que é outro modem a cabo para Internet. Este segundo modem a cabo obtém apenas um endereço IPv4 do provedor e usa o NAT para encaminhar as portas para os computadores locais.

A parte importante da /etc/network/interfaces do servidor-zumbi é assim:

allow-hotplug eth0 iface eth0 inet static
    # Ignore the following IPv4 stuff...
    # I just added this to connect to the cable modem more conveniently
    address 192.168.0.22 
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan0 iface wlan0 inet static
    wpa-ssid [ssid] # only required for my wlan connection
    wpa-psk [key] # only required for my wlan connection
    address 192.168.1.22
    netmask 255.255.255.0

    # The following makes sure that the main IPv4 network
    # can be reached from this computer:
    #gateway 192.168.1.1 # can't use this because only one IPv4 gateway is allowed at a time
    post-up ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.22 table rt2
    post-up ip route add default via 192.168.1.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.1.22/24 table rt2
    post-up ip rule add to 192.168.1.22/32 table rt2

Agora quero usar meu servidor-gateway-zumbi para realizar o seguinte: As conexões provenientes do adaptador IPv6 eth0 em portas específicas devem ser encaminhadas como conexões IPv4 para computadores na rede wlan0 . Como posso conseguir isso?

Aqui estão algumas informações adicionais para você saber por que quero fazer isso:

Como tenho dois modems a cabo, um somente IPv4 e um somente IPv6 (pelo menos no que se refere a conexões de entrada), gostaria de executar algum tipo de balanceamento de carga dependente da versão IP.

Isso significa que sempre que um cliente puder usar o IPv6 para se conectar à minha rede, ele acessará meu modem a cabo IPv6, que redirecionará o tráfego para o servidor-gateway-zumbi, redirecionando-o novamente para o servidor na rede IPv4. Por outro lado, sempre que um cliente só pode usar o IPv4 para se conectar à minha rede, o NAT do modem a cabo somente IPv4 entrará em ação e redirecionará o tráfego de acordo.

Isso pode ser feito adicionando-se a criação de duas entradas DNS para meu hostname: uma para o endereço IPv4 e outra para o endereço IPv6.

    
por Hauke P. 07.10.2014 / 19:07

2 respostas

2

Em outra resposta , encontrei uma solução bem simples para a outra direção (IPv4 - > IPv6) que usa socat .

Com base nessa solução, eu configurei um daemon no servidor-gateway-zumbi para socat com os seguintes argumentos socat :

TCP6-LISTEN:80,su=nobody,fork,reuseaddr TCP4:192.168.1.23:80

Dessa forma, todos os pacotes de entrada na porta 80 serão reempacotados e, em seguida, enviados para o servidor HTTP somente IPv4. Problema resolvido!

    
por 29.11.2014 / 19:51
1

Não é possível encaminhar conexões IPv6 (por exemplo, conexões provenientes de endereços IPv6) para hosts IPv4. Portanto, "Conexões provenientes do adaptador eth0 IPv6 em portas específicas devem ser encaminhadas como conexões IPv4 para computadores na rede wlan0" não é feito. Endereços IPv6 podem falar apenas com outros hosts IPv6 e endereços IPv4 com outros hosts IPv4.

Mas a explicação abaixo torna mais razoável, se eu entendi corretamente: conexões provenientes de endereços IPv6 devem atingir seu servidor (mais de um link) e conexões provenientes de endereços IPv4 devem atingir seu servidor (por outro link).

Para que isso funcione, existem duas possibilidades:

1) torne seu servidor dual-stacked (com endereços IPv4 e IPv6 globais).

Nesse caso, basta fazer com que seu roteador tenha DNAT IPv4 para o endereço IPv4 local dos servidores (como você tinha antes do IPv6) e configure o roteamento IPv6 regular do roteador para o servidor. Os hosts da Internet que vão para o endereço IPv6 do servidor chegarão ao seu roteador na interface eth0 e serão roteados para o endereço IPv6 global do seu servidor. Os anfitriões da Internet que vão para o seu endereço público IPv4 serão DNATD para o seu endereço LAN local do servidor.

2) deixe seu servidor permanecer apenas IPv4 e instale proxies reversos de protocolo no roteador para cada protocolo que você precisar.

Neste caso, os anfitriões da Internet que vão para o seu endereço público IPv4 serão DNAT para o endereço da LAN local do seu servidor, igual ao anterior (e igual ao anterior ao IPv6). No entanto, os hosts provenientes de endereços IPv6 serão encerrados no deamon de pilha dupla em execução no roteador (por exemplo, no seu squid na configuração de proxy reverso para o protocolo HTTP) e que o deamon criará uma nova conexão IPv4 com seu servidor ele retorna aos hosts IPv6 originais).

Vantagem para (2) é que você não precisa reconfigurar seu servidor, mas a desvantagem é que você precisa implementar o proxy reverso para cada protocolo que deseja alcançar em seu servidor, aumentando a complexidade (e potência) necessária para o seu roteador.

    
por 27.10.2014 / 03:49