1 votes

OpenVPN tunnel IPV6 Radvd

J'ai une question intéressante concernant ipv6 + openvpn..

Ma version est OpenVPN 2.1.1

Je dispose de 2 réseaux natifs /64 ipv6

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

( Bloc2 -> 2a01:abc:123:dead::/64 )

( Passerelle -> 2a01:abc:123:deaf::1/59 ) * je n'ai aucun contrôle sur cela *

Le plan était/de route ce "Bloc2" à travers openvpn et dans un bureau (à des fins de test)

Donc pour expliquer..

J'ai une boîte Centos en tant que premier "routeur" Linux dans un centre de données & une boîte Ubuntu en tant que deuxième "routeur" Linux dans le bureau J'ai créé un tunnel point-à-point simple en utilisant tun (basé sur l'adresse ipv4 pour démarrer le tunnel)

J'ai affecté à 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  ## Bloc2 ipv6 à travers le tunnel
ip route add ::/0 via 2a01:abc:123:deaf::1 dev eth0 ## Par défaut à la passerelle

J'ai affecté à 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 ## Par défaut à travers le tunnel

J'ai également inclus sur les deux serveurs..

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

Ça a l'air bien... n'est-ce pas ??? Faux.. :(

Je ne peux pas faire de ping sur la passerelle ou 2a01:abc:123:dead::1 depuis Ubuntu-eth0

Je peux accéder à internet depuis n'importe quelle interface ipv6 sur la boîte Centos mais clairement pas depuis la boîte Ubuntu..

En outre, je mettrai éventuellement en place radvd sur la boîte Ubuntu eth0, et autoconfigurerai le réseau avec des adresses ipv6

Quelqu'un aurait-il des conseils / astuces pour m'aider.. ???

À votre santé

2voto

Dot Net Pro UK Points 761

Votre question m'a vraiment captivé, car je pourrais utiliser la même solution dans un autre réseau que je gère. J'ai expérimenté avec cela et c'est effectivement possible! (J'adore Linux...).

J'ai créé un laboratoire Netkit qui modélise votre situation. Vous pouvez télécharger le laboratoire ici (1.8 Ko).

Vous n'avez pas besoin d'installer Netkit si vous n'êtes pas intéressé par le tester sur votre machine. Vous pouvez simplement obtenir le package ci-dessus et consulter les fichiers .startup pour les différentes machines. Si vous voulez tester le laboratoire, il a besoin d'un système de fichiers avec "radvd" installé, qui n'est pas inclus dans le système de fichiers standard de Netkit. Consultez le README du package de système de fichiers pour voir comment le monter sur votre machine, puis utilisez apt-get update && apt-get install radvd.

Le laboratoire contient 6 machines: v6site (un site Internet V6 auquel vous voulez accéder), v6isp (votre Fournisseur d'Accès Internet), r1 (votre premier routeur avec connectivité V4 et V6), r2 (votre deuxième routeur qui se connecte à r1 via OpenVPN), pc1 et pc2 (machines connectées et desservies en IPv6 par r2).

J'ai utilisé la documentation du RFC 3849 comme préfixe dans l'exemple, au lieu des adresses d'exemple aléatoires que vous avez utilisées. De plus, j'ai utilisé FEC0::/96 pour les points d'extrémité OpenVPN, qui est obsolète. Dans votre déploiement, il est recommandé d'utiliser un petit préfixe de votre Adresse Unique Locale à la place.


Clarification: RFC 3849 définit le préfixe 2001:DB8::/32 à utiliser à des fins d'exemple et de documentation (pour les unicast globaux). Au lieu de choisir une adresse IPv6 aléatoire, les gens sont encouragés à utiliser des adresses dans le préfixe 2001:DB8::/32 comme un caractère générique dans des exemples qui seront remplacés par autre chose dans le déploiement réel. Dans cette question, d'abord 2001:acb:132:acb::/64, puis 2001:123:123:11a1::/64. Dans la réponse, j'ai simplement remplacé les deux par des adresses dans le préfixe de documentation. Lorsque vous appliquez la réponse à votre scénario réel, recherchez simplement chaque occurrence d'adresses 2001:DB8:: et remplacez-les par vos adresses réelles.

Les points d'extrémité des tunnels ont également besoin d'adresses. Les adresses utilisées dans les points d'extrémité des tunnels n'ont pas besoin d'être routables extérieurement, car elles ne sont utilisées qu'en interne. Vous avez utilisé des adresses commençant par FED1:: et FED2::, tandis que j'ai utilisé les adresses commençant par FECO::. Ces adresses ont été initialement définies dans RFC 3513. Elles sont l'équivalent des adresses d'utilisation privée IPv4 10.0.0.0/8, 192.168.0.0/16 et 172.16.0.0/12. En raison de problèmes, elles ont été ultérieurement abandonnées dans RFC 3879 en faveur des Adresses Uniques Locales (ULA) dans RFC 4193. Les ULA ont un préfixe "aléatoire" unique pour chaque utilisateur final. Le bénéfice est que si pour une raison quelconque vous routez entre ces réseaux, en utilisant des tunnels par exemple, ils pourront se parler sans traduction d'adresse (alors que des conflits peuvent se produire en utilisant par exemple 192.168.0.0/16). La page liée avant cette clarification vous aidera à créer votre propre préfixe ULA (et éventuellement à le enregistrer, mais ce n'est pas nécessaire de l'enregistrer).

Il n'y a pas de réel problème à utiliser des adresses locales de site comme FECx ou FEDx dans les points d'extrémité des tunnels. Ils sont obsolètes, mais cela ne les rend pas incorrects. Il est simplement recommandé d'utiliser les ULA.


La configuration globale de votre premier routeur (r1) est ci-dessous. Suivez les commentaires pour une meilleure compréhension.

# Activer le transfert pour IPv6 (entre eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## Réseau interne V6 du FAI
# Comme il n'y a pas d'adresse spécifique à l'hôte, nous choisissons une adresse dans le /64
# préfixe. Notez que cette adresse est la même dans deux préfixes différents:
# ...11a1::/64 et ...11a0::/59. Cela nécessite une astuce d'interproxing dans R2.
# Idéalement, vous auriez une adresse dans le préfixe /59 à utiliser ici,
# en dehors du préfixe délégué /64.
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

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

## Tunnel OpenVPN via Internet IPv4 vers R2
# C'est la configuration la plus basique d'OpenVPN. Pas de chiffrement, pas de sécurité,
# rien du tout. NE PAS UTILISER CELA EN DEHORS DE CE LABORATOIRE.
openvpn --dev tun --tun-ipv6 --daemon

while ! ip link show tun0 2>/dev/null
do
    echo "En attente de la connexion OpenVPN..."
    sleep 1
done

# Configurer les points d'extrêmité OpenVPN. Choisissez un préfixe petit distinct pour les points d'extrémité
# et utilisez-le pour router le préfixe /64 vers 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

La configuration globale pour le deuxième routeur (r2):

# Activer le transfert pour IPv6 (entre eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1

## Réseau interne IPv6 de la Société
# L'adresse du routeur est arbitraire.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::ffff/64 dev eth0

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

## Tunnel OpenVPN via Internet IPv4 vers R1
# C'est la configuration la plus basique d'OpenVPN. Pas de chiffrement, pas de sécurité,
# rien du tout. NE PAS UTILISER CELA EN DEHORS DE CE LABORATOIRE.
openvpn --remote 192.168.1.1 --dev tun --tun-ipv6 --daemon

# Attendre OpenVPN...
while ! ip link show tun0 2>/dev/null
do
    echo "En attente de la connexion OpenVPN..."
    sleep 1
done

# Configurer les points d'extrémité OpenVPN. Voir les commentaires pour R1 ci-dessus.
# Notez que nous routons TOUT le trafic IPv6 à travers le tunnel.
ip link set tun0 up
ip addr add fec0::2/96 dev tun0
ip route add default via fec0::1 dev tun0

# L'adresse de R1 est dans notre réseau privé (eth0, voir ci-dessus), mais de l'autre
# côté du tunnel. Nous avons besoin d'une route plus spécifique spécifiquement pour cela.
# De plus, faites en sorte que ce routeur (R2) agisse comme un proxy voisin afin que d'autres
# machines sur le réseau privé puissent voir R1 à travers le tunnel.
# C'est un hack qui serait évité si nous avions un préfixe plus grand que
# /64, ou si R1 avait une adresse spécifique à l'hôte en dehors du /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

## Démon d'annonces de routage
# REMARQUE: Le système de fichiers standard de Netkit n'a pas radvd, il doit être
# installé manuellement avec `apt-get update && apt-get install radvd` dans
# le modèle fs.
chmod 644 /etc/radvd.conf
radvd

La configuration des PC connectés à r1 (eth0) est extrêmement simple, grâce à radvd:

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

C'est la configuration la plus importante. Les autres détails (y compris une copie de /etc/radvd.conf de r2) se trouvent dans le package de laboratoire ci-dessus.

0voto

BillThor Points 27096

Demander à votre courtier de tunnels pour une allocation /56 or /48, au moins un autre /64. Vous pourrez ensuite générer un /64 dans ce bloc pour l'extrémité lointaine du lien. Si vous avez plusieurs tunnels, vous aurez besoin d'un /64 séparé pour chaque tunnel.

Je m'attends à ce que les adresses FED1 soient toujours sur les dispositifs TUN seulement. (Les adresses locales de site sont obsolètes et ne doivent pas être utilisées.) Vous devrez probablement spécifier un routage pour ::0/0 du côté d'Ubuntu. Utilisez l'adresse 2001: ou FED1:x: pour les interfaces eth0 d'Ubuntu. RADV devrait automatiquement récupérer l'adresse, mais je le programme.

Ma configuration utilise mon allocation /48 pour les dispositifs LAN, et le /64 pour les adresses DMZ. Cela rend la configuration du pare-feu plus facile car elles sont dans des plages non chevauchantes.

Vos résultats de ping sont ce que je m'attendrais. Vous devrez spécifier un lien vers FED1::1 sur Ubuntu. Changer l'adresse eth0 de Centos en FED1:1::1 et spécifier les adresses en /32 ou /64 devrait aider. Vous devez seulement connaître les adresses de lien sur les extrémités des tunnels. Les interfaces eth0 devraient avoir vos adresses publiques 2001:.

Si l'eth0 sur Centos est votre lien montant, il aura probablement une adresse IPv6 Point à Point pour l'extrémité locale du lien montant. Cela devrait être géré par votre configuration de tunnel 6to4 qui devrait également ajouter la route par défaut vers Internet.

MODIFICATION : Configuration suggérée

Centos (Serveur/Réseau)

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

Ubuntu (Client via tunnel)

À travers /etc/network/interfaces

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

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

Ou manuellement (vous voudrez peut-être gérer tun0) dans le script de démarrage du VPN), mais je configurerais eth0 avec /etc/network/interfaces

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

Configurer radvd sur les hôtes avec des routes ipv6 par défaut utilisant l'interface eth0 (LAN). La route tun0 est faite manuellement.

AVERTISSEMENT : Une fois que cela fonctionne, tous vos ordinateurs IPv6 auront des adresses routables sur Internet. Assurez-vous d'avoir un bon pare-feu et de comprendre le trafic que vous autorisez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X