Então acontece que houve vários problemas com minha configuração. Vamos documentar tudo!
SO do cliente
O Mac OS X não gosta particularmente do IPv6 em relação ao PPP. Use o seguinte após a conexão ter sido configurada:
sudo ipconfig set ppp0 AUTOMATIC-V6
sudo route add -inet6 default -interface ppp0
O anterior parece fazer o OS X aderir aos anúncios do roteador; o último adiciona uma rota padrão para o IPv6. (Agora, se apenas a versão de route
do sistema operacional de certos frutados-móveis fornecesse -inet6
, eu seria um menino de madeira feliz.)
Observe também que o OS X ignorará qualquer endereço que deveria ser negociado no IPv6 e configurará apenas um endereço local. Isso pode interferir no roteamento para o OS X.
Por outro lado, o Windows 8 (de todos os sistemas!) alegremente pegou o endereço enviado pelo PPP, tomou nota do anúncio do roteador e, em geral, configurou-se perfeitamente. O PPTP realmente funciona bem no Windows.
Servidor
A primeira coisa que eu perdi foi que o corretor de túneis da Hurricane Electric na verdade atribui prefixos TWO / 64; um é suposto ser apenas para uso do cliente, enquanto o outro é destinado ao roteamento de clientes adicionais (como o cliente PPTP). E se você precisar de mais endereços (ou prefixos!), Você pode até obter um prefixo / 48. (Com IPv6, isso significa que há mais bits para 'seu' uso; o prefixo de HE usa 'apenas' 48 bits. Assim, você fornece mais alguns bits para controlar antes do sufixo gerado automaticamente, criado a partir de um endereço MAC ou até mesmo criado aleatoriamente , entra em ação e assume os últimos 64 bits.Você poderia, teoricamente, wiggle e subnet, mesmo com apenas 64 bits de sobra, mas eu vi um comportamento estranho no Windows 8 ou OS X, então eu não confiaria muito nisso .)
Em vez de configurar radvd
diretamente e executá-lo como um servidor, simplesmente não o configure globalmente. Isto é, não o execute como um serviço no Debian.
Em vez disso, vamos seguir o exemplo de Konrad Rosenbaum , no Silmor.de, e ter o radvd
configurado após pppd
cria a interface PPP.
-
Configure sua conectividade IPv6. Eu uso o furacão elétrico; Eu configurei da seguinte forma:
# hurricane electric tunnel # based on: http://www.tunnelbroker.net/forums/index.php?topic=1642.0 auto he-ipv6 iface he-ipv6 inet6 v4tunnel address 2001:470:UUUU:VVVV::2 netmask 64 endpoint 216.66.86.114 ttl 255 gateway 2001:470:UUUU:VVVV::1 ## from http://lightyearsoftware.com/2011/02/configure-debian-as-an-ipv6-router/ # I did not set up the routing of the /64 nor the /48 prefix here, but # this would ordinarily do it. #up ip link set mtu 1280 dev he-ipv6 #up route -6 add 2001:470:WWWW:VVVV::/64 he-ipv6 # Note that Hurricane Electric provides different /64 IPv6 prefixes # for the client (UUUU:VVVV) and routing (WWWW:VVVV). # And the /48 prefix is very different altogether.
-
Instale o pptpd. (Claro, tome nota da insegurança do PPTP como um protocolo, e considere o uso do OpenVPN ou de alguma outra alternativa).
-
Edite o
/etc/ppp/pptpd-options
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp nodefaultroute lock nobsdcomp ipv6 ::1,::2
Observe que a última linha é diferente do texto da minha pergunta. Você está atribuindo alguns endereços estáticos que podem ser respeitados pelo sistema operacional do seu cliente ou não. (OS X parece ignorá-los, mas o Windows os usa.)
-
Crie usuários para PPTP. Filtros de segunda coluna baseados no argumento
name
empptpd-options
. Editar/etc/ppp/chap-secrets
:ivucica pptpd AHyperSecretPasswordInPlainText 10.0.101.2 10.0.101.3 10.0.101.4
Você deveria poder substituir os endereços com
*
em vez de listá-los manualmente. Eu não tentei isso. -
Atribua aos seus usuários PPTP alguns prefixos IPv6. NOTA: isso é usado exclusivamente pelo script que listarei abaixo, que é derivado do script do Konrad.
Edite o
/etc/ppp/ipv6-addr
:ivucica:1234 littlejohnny:1235
-
Adicionar novo arquivo
/etc/ppp/ipv6-up.d/setupradvd
:#!/bin/bash ADDR=$(grep ^$PEERNAME: /etc/ppp/ipv6-addr |cut -f 2 -d :) if test x$ADDR == x ; then echo "No IPv6 address found for user $PEERNAME" exit 0 fi # We'll assign the user a /64 prefix. # I'm using a Hurricane Electric-assigned /48 prefix. # Operating systems seem to expect to be able to assign the # last 64 bits of the address (based on ethernet MAC address # or some other identifier). So try to obtain a /48 prefix. # If you only have a /64 bit prefix, you can try to assign a # /80 prefix to your remote users. It works, but I'm only now # trying to enable these users to have routing. USERPREFIX=2001:470:XXXX:$ADDR USERPREFIXSIZE=64 USERPREFIXOURADDRESS=1 USERPREFIXUSERADDRESS=2 # Add the address for your side of the tunnel to the PPP device. ifconfig $IFNAME add $USERPREFIX::$USERPREFIXOURADDRESS/$USERPREFIXSIZE # establish new route # (when a packet is directed toward user subnet, send it to user ip) route -6 add $USERPREFIX::/$USERPREFIXSIZE gw $USERPREFIX::$USERPREFIXUSERADDRESS #generate radvd config RAP=/etc/ppp/ipv6-radvd/$IFNAME RA=$RAP.conf echo interface $IFNAME >$RA echo '{ AdvSendAdvert on; MinRtrAdvInterval 5; MaxRtrAdvInterval 100;' >>$RA echo ' prefix' $USERPREFIX::/$USERPREFIXSIZE '{};' >>$RA # Instead of your DNS... #echo ' RDNSS $USERPREFIX::$USERPREFIXOURADDRESS {}; };' >>$RA # ...try assigning the Google DNS :) echo ' RDNSS 2001:4860:4860::8888 {}; }; ' >> $RA # The creation of radvd configuration could be more readable, but whatever. # Start radvd /usr/sbin/radvd -C $RA -p $RAP.pid exit 0
Não se esqueça de chmodar o script para torná-lo executável em
pppd
:chmod 755 /etc/ppp/ipv6-up.d/setupradvd
-
O script envia a configuração
radvd
para/etc/ppp/ipv6-radvd/
... certifique-se de que a pasta exista!mkdir /etc/ppp/ipv6-radvd
-
Adicione também
/etc/ppp/ipv6-down.d/setupradvd
(e torne-o executável!) - obtido textualmente de Konrad :#!/bin/bash RAP=/etc/ppp/ipv6-radvd/$IFNAME kill 'cat $RAP.pid' || true rm -f $RAP.*
e
chmod 755 /etc/ppp/ipv6-down.d/setupradvd
Eu não testei o uso do DHCPv6 para distribuir informações de roteamento, endereços ou informações de DNS, especialmente porque rtadv
deve estar cumprindo essas funções. Também não me ajudaria, porque a partir do Mountain Lion, o OS X ainda não é fornecido com um cliente DHCPv6 (talvez intencionalmente
Mais uma vez, observe os comentários de Michael sobre a segurança do PPTP ; considere o uso do OpenVPN na produção.
Sim, Konrad Rosenbaum também tem um tutorial sobre IPv6 sobre o OpenVPN . : -)