NATing IPv4 durante o roteamento do IPv6

4

Eu tenho a seguinte configuração:

client(s)  <---> (eth0) router (eth1) <---> wan

Eu tenho um endereço IPv4 estático e um bloco de endereços IPv6 / 48. Eu preciso conectar todos os clientes para (wan). Cada cliente terá seu próprio IPv6 público. Enquanto isso, eu preciso NAT desses mesmos clientes para (wan).

Tudo relacionado ao IPv4 e o NAT estão funcionando bem. A comunicação IPv6 de / para (eth0) < - > (clientes) > funciona bem, assim como a comunicação IPv6 de (eth1) < - > (wan) funciona bem.

Para fornecer IPv6 a todos os meus clientes, também pensei em escolhas:

  • Ter o roteador como um gateway, que IP diferente em cada interface. Isso soa como se eu precisasse dizer ao meu provedor para rotear todo o bloco através desse único IP, então não é realmente uma opção.

  • Transmita transparentemente pacotes IPv6 de / para eth0 < - > eth1, para que todos os clientes possam se comunicar com o gateway upstream (na verdade, eu teria um switch aqui se não fosse a necessidade de permanecer compatível com IPv4) .

Então, como optei pela segunda opção, estou em dúvida: como posso passar todo o tráfego IPv6 de eth0 para eth1 de forma transparente? O que eu preciso é de uma ponte de nível 3, mas os bridgeutils do Linux criam uma ponte de nível 2 (que também conectaria o ipv4, e eu não posso ter isso).

Este é um dispositivo DD-WRT, mas é basicamente um Linux embutido, então a maioria das sugestões que funcionem no Linux são bem-vindas.

Obrigado.

    
por WhyNotHugo 21.06.2012 / 03:31

2 respostas

2

você pode conseguir isso com proxy ARP, se eu estava tentando pseudo ponte ipv4 eu faria isso:

echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward

Você precisa configurar ambas as NICs com as mesmas informações EXATAS (ip_address, netmask e gateway), não tenho certeza se o DD-WRT permitirá isso, com certeza não será na interface da Web, mas pode permitir que você faça isso a partir do console, em seguida, verifique novamente o seu gateway, verifique se você só tem gateway apontado para a interface que vai para o ISP, algo assim:

ip route del default dev eth0
ip route del default dev eth1

ip route del $LAN_NETWORK dev eth0
ip route del $LAN_NETWORK dev eth1
ip route add $DEFAULT_GATEWAY dev eth0
ip route add $LAN_NETWORK dev eth1

ip route add default via $DEFAULT_GATEWAY dev eth0

Isto é para um Pseudo Bridge IPv4 usando Proxy-ARP, eu acho que você pode fazer o mesmo usando IPv6.

Por outro lado, e como eu disse na outra pergunta, você ainda pode usar o NAT IPv4, mesmo que ele esteja em ponte na camada 2.

Você precisaria configurar tanto o endereço público IPv4 quanto o endereço IPv4 na interface BR0 e, em seguida, NAT-los como eu disse antes

iptables -t nat -A POSTROUTING -j SNAT -s $LAN_NETWORK --to-source $WAN_IP_ADDRESS

Isso resolveria seus problemas sem o incômodo do proxy arp. O problema é que a maioria dessas coisas não funcionará na interface do DD-WRT.

Como alternativa melhor e mais limpa, você pode adicionar uma subinterface na ponte ao lado da LAN, algo como

ifconfig br0:1 192.168.1.1 netmask 255.255.255.0

E use a mesma linha NAT que eu disse acima

    
por 21.06.2012 / 03:58
1

Você está tentando NAT suas conexões ipv6? Se sim, qual é a motivação para o IPv6 NAT? Você tem / 48 blocos, o que é mais que suficiente.

Se o seu roteador é compatível com IPv6, então é só a questão de configurar as rotas certas do IPv6. O roteamento IPv6 é separado do IPv4, portanto não deve haver conflito com o que você já tem no IPv4.

    
por 21.06.2012 / 03:42