OpenVPN IPV6 Tunnel Radvd

1

Eu tenho uma pergunta interessante sobre ipv6 + openvpn ..

Minha versão é OpenVPN 2.1.1

recebi 2 redes nativas / 64 ipv6

( Bloco1 - > 2a01: abc: 123: deac :: / 64 )

( Bloco2 - > 2a01: abc: 123: morto: / 64 )

( Gateway - > 2a01: abc: 123: surdo :: 1/59 ) * não tenho controle sobre isso *

O plano era / é encaminhar este "Block2" através de openvpn e para um escritório (para fins de teste)

Soo para explicar ..

Eu tenho uma Centos Box como o primeiro "roteador" linux em um datacenter & uma caixa Ubuntu como o segundo "roteador" linux no escritório Eu criei um simples túnel ponto-a-ponto usando tun (com base no endereço ipv4 para iniciar o túnel)

Eu atribuí a Centos

ip addr add 2a01:abc:123:dead::1/64 dev eth0
ip addr add fed0::2/128 dev tun0

ip route add 2a01:abc:123:dead::/64 dev tun0  ## ipv6 Block2 down the tunnel
ip route add ::/0 via 2a01:abc:123:deaf::1 dev eth0 ## Default out to Gateway

Eu atribuí o Ubuntu

ip addr add fed0::3/128 dev tun0
ip addr add 2a01:abc:123:dead::2/64 dev eth0

ip route add ::/0 via 2a01:abc:123:deaf::1 dev tun0 ## Default up the tunnel

Eu também incluí nos dois servidores.

sysctl -w net.inet6.ip6.forwarding=1

Parece bom ... certo ??? Errado ..: (

Eu não consigo fazer o ping no gateway ou 2a01: abc: 123: dead :: 1 do Ubuntu-eth0

Eu consigo acessar a internet de qualquer interface ipv6 na Caixa Centos, mas claramente não na caixa do Ubuntu.

Além disso, eu eventualmente rodarei o radvd na caixa do Ubuntu eth0, e autoconfo a rede com o endereço ipv6

Alguém com alguns conselhos / dicas para me ajudar .. ???

Felicidades

    
por Arenstar 06.02.2011 / 22:35

2 respostas

2

Sua pergunta realmente me ligou, já que posso usar a mesma solução em outra rede que estou gerenciando. Eu experimentei e é de fato possível! (Eu simplesmente amo o Linux ...).

Eu criei um laboratório do Netkit que modela sua situação. Você pode baixar o laboratório aqui (1.8 KiB).

Você não precisa instalar o Netkit se não estiver interessado em testá-lo em sua máquina. Você pode simplesmente pegar o pacote acima e ver os arquivos .startup das várias máquinas. Caso você queira testar o laboratório, ele precisa de um sistema de arquivos com o "radvd" instalado, que não está incluído no sistema de arquivos padrão do Netkit. Verifique o README do pacote do sistema de arquivos para ver como montá-lo em sua máquina e, em seguida, use apt-get update && apt-get install radvd .

O laboratório contém 6 máquinas: v6site (algum site da V6 que você deseja acessar), v6isp (seu ISP), r1 ( seu primeiro roteador com conectividade V4 e V6), r2 (seu segundo roteador que se conecta a r1 via OpenVPN), pc1 e pc2 (máquinas conectadas e servidas de IPv6 por r2 ).

Eu usei o prefixo de documentação RFC 3849 2001: DB8 :: / 32 no exemplo, em vez do exemplo aleatório endereços que você usou. Além disso, usei FEC0 :: / 96 para os pontos de extremidade do OpenVPN, que é obsoleto. Em sua implantação, é recomendável usar um prefixo pequeno no seu endereço local exclusivo .

Esclarecimento: RFC 3849 define o prefixo 2001: DB8 :: / 32 a ser usado para fins de exemplo e documentação (para unicast global). Em vez de escolher qualquer endereço IPv6 aleatório, as pessoas são incentivadas a usar endereços no prefixo 2001: DB8 :: / 32 como um curinga em exemplos que serão alterados para outra coisa na implantação real. Nesta questão, primeiro 2001: acb: 132: acb :: / 64, em seguida, 2001: 123: 123: 11a1 :: / 64. Na resposta, acabei de substituir os dois endereços no prefixo da documentação. Quando você aplica a resposta ao seu cenário real, basta procurar todas as ocorrências de 2001: DB8 :: addresses e substituí-las por seus endereços reais.

Os endpoints de túnel também precisam de endereços. Os endereços usados nos terminais de encapsulamento não precisam ser roteados externamente, pois são usados apenas internamente. Você usou endereços começando com FED1 :: e FED2 ::, enquanto eu usei o endereço começando com FECO ::. Esses endereços foram originalmente definidos em RFC 3513 . Eles são equivalentes aos endereços de uso privado do IPv4 10.0.0.0/8, 192.168.0.0/16 e 172.16.0.0/12. Devido a problemas, eles foram mais tarde reprovados no RFC 3879 em favor de Unique Local Addresses (ULA) em RFC 4193 . Os ULAs têm um prefixo "aleatório" exclusivo para cada usuário final. O benefício é que, se por qualquer motivo você rotear entre essas redes, usando túneis, por exemplo, eles poderão conversar entre si sem tradução de endereço (enquanto conflitos podem ocorrer e ocorrem ao usar 192.168.0.0/16, por exemplo). A página vinculada antes deste esclarecimento ajudará você a criar seu próprio prefixo ULA (e possivelmente registrá-lo, mas não é necessário registrá-lo).

Não há nenhum problema real em usar endereços locais de sites como FECx ou FEDx em terminais de túnel. Eles estão obsoletos, mas isso não os faz errados. Recomenda-se apenas usar ULAs.

A configuração geral do seu primeiro roteador ( r1 ) está abaixo. Siga os comentários para uma melhor compreensão.

# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## ISP V6 Internal network
# Since there is no host specific address, we pick an address in the /64
# prefix. Note that this address is the same in two different prefixes:
# ..11a1::/64 and ..11a0::/59. This requires a proxing hack in R2.
# Optimally, you would have an address in the /59 prefix to use here,
# outside the delegated /64 prefix.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::1/59 dev eth0
ip route add default via 2001:db8:1:11a0::1 dev eth0

## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.1/24 dev eth1

## OpenVPN tunnel via IPv4 Internet to R2
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --dev tun --tun-ipv6 --daemon

while ! ip link show tun0 2>/dev/null
do
    echo "Waiting for OpenVPN to connect..."
    sleep 1
done

# Configure OpenVPN endpoints. Choose a distinct small prefix for the endpoints
# and use it to route the the /64 prefix to R2.
ip link set tun0 up
ip addr add fec0::1/96 dev tun0
ip route add 2001:db8:1:11a1::/64 via fec0::2 dev tun0

A configuração global para o segundo roteador ( r2 ):

# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## Internal Company IPv6 Network
# The router address is arbitrary.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::ffff/64 dev eth0

## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.2/24 dev eth1

## OpenVPN tunnel via IPv4 Internet to R1
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --remote 192.168.1.1 --dev tun --tun-ipv6 --daemon

# Wait for OpenVPN...
while ! ip link show tun0 2>/dev/null
do
    echo "Waiting for OpenVPN to connect..."
    sleep 1
done

# Configure OpenVPN endpoints. See comments for R1 above.
# Note that we route ALL IPv6 traffic through the tunnel.
ip link set tun0 up
ip addr add fec0::2/96 dev tun0
ip route add default via fec0::1 dev tun0

# R1 address is in our private network (eth0, see above), but on the other
# side of the tunnel. We need a more specific route specifically for it.
# Also, make this router (R2) act as a neighbor proxy so that other
# machines on the private network can see R1 through the tunnel.
# This is a hack that would be avoided if we had a bigger prefix than
# /64, or if R1 had a host-specific address outside of the /64.
ip route add 2001:db8:1:11a1::1/128 via fec0::1 dev tun0
ip neigh add proxy 2001:db8:1:11a1::1 dev eth0

## Routing advertisement daemon
# NOTE: The standard Netkit filesystem does not have radvd, it has to be
# installed manually with 'apt-get update && apt-get install radvd' in
# the model fs.
chmod 644 /etc/radvd.conf
radvd

A configuração dos PCs conectados ao r1 (eth0) é extremamente simples, graças ao radvd:

sysctl -w net.ipv6.conf.all.autoconf=1
ip link set eth0 up

Esta é a configuração mais importante. Os outros detalhes (incluindo uma cópia do arquivo /etc/radvd.conf do r2 ) estão no pacote de laboratório acima.

    
por 07.02.2011 / 04:08
0

Peça ao seu corretor de túneis uma alocação de / 56 ou / 48, pelo menos outro / 64. Você será capaz de gerar um / 64 neste bloco para o extremo do link. Se você tiver vários túneis, precisará de um / 64 separado para cada túnel.

Espero que os endereços FED1 estejam sempre apenas nos dispositivos TUN. (Endereços locais do site são obsoletos e não devem ser usados.) Você provavelmente terá que especificar o roteamento para :: 0/0 no lado do Ubuntu. Use o endereço 2001: ou FED1: x: para as interfaces eth0 do Ubuntu. O RADV deve pegar o endereço automaticamente, mas eu programo isso.

Minha configuração usa minha alocação / 48 para dispositivos de rede local e / 64 para endereços de DMZ. Isso facilita a configuração do firewall, pois eles estão em intervalos não sobrepostos.

Seus resultados do ping são o que eu esperaria. Você precisará especificar um link para FED1 :: 1 no Ubuntu. Alterar o endereço Centos eth0 para FED1: 1 :: 1 e especificar os endereços como / 32s ou / 64s deve ajudar. Você só precisa saber o endereço do link no túnel termina. As interfaces eth0 devem ter seu 2001: (endereços públicos).

Se a eth0 on Centos for o seu link upstream, provavelmente terá um endereço IPv6 Point to Point para o terminal local do link upstream. Isso deve ser feito pela configuração do seu túnel 6to4, que também deve adicionar a rota padrão à Internet.

EDIT: Configuração sugerida

Centos (servidor / rede)

ip -6 add fe81::1/64 dev tun0
ip -6 add 2001:acb:132:acb::1/64 dev eth0
ip -6 add route (new /64 allocation) via fe81::2 dev tun0

Ubuntu (cliente através de túnel)

Via /etc/network/interfaces

auto tun0
iface tun0 static
    address fe81::2
    netmask 64
    gateway fed1::1

auto eth0 iface eth0 static address (New /64 allocation)::1 netmask 64

Or manually (you may want to handle tun0) in the VPN startup script), but I would configure eth0 with /etc/network/interfaces

ip -6 add fe81::2/64 dev tun0 ip -6 add (new /64)::1/64 dev eth0 ip -6 add route default via fe81::1 dev tun0

Configure radvd nos hosts com rotas ipv6 padrão usando a interface eth0 (LAN). O roteamento tun0 é feito manualmente.

AVISO: Uma vez que você consiga este trabalho, todos os seus computadores IPv6 terão endereços roteados pela Internet. Verifique se você tem um bom firewall e entenda qual tráfego está permitindo.

    
por 07.02.2011 / 00:41