TCP / IPv6 via le tunnel ssh

10

je me demande comment tunneler le trafic tcp / ipv6 sur le tunnel ssh / ipv4 (connexion ptp). C'est possible? Comment puis-je y parvenir?


la source
Essayez-vous de canaliser le trafic JUST ipV6 sur le tunnel? Comme votre tunnel SSH vous permettra d'utiliser IPV5 ou V6 dessus sans problème, en supposant que le réseau aux deux extrémités le supporte.
Sam Cogan
2
TCP sur TCP n'est généralement pas une bonne idée: sites.inka.de/sites/bigred/devel/tcp-tcp.html TCP sur TCP sur TCP: Cela ne sonne pas mieux
Reece45

Réponses:

15

Oui, c'est possible et pas trop difficile, mais la solution est très sous-optimale, car SSH s'exécute sur TCP et a une surcharge raisonnable.

Le serveur doit avoir dans son fichier de configuration sshd_config:

PermitTunnel point-to-point

Ensuite, vous devez être root sur les deux machines. Vous vous connectez au serveur en utilisant:

ssh -w any root@server

Après la connexion, utilisez la commande ip linkdans les deux systèmes pour savoir quel périphérique tunN a été créé dans chacun d'eux et utilisez-le dans les commandes suivantes. Notez que j'utilise des exemples d'adresses locales de site, qui sont obsolètes, mais ok pour cette introduction.

Sur le serveur:

server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0

Sur le client:

client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0

Cela suffit pour que vous puissiez envoyer une requête ping à l'autre côté du tunnel, s'il n'y a pas de blocage de règle de pare-feu. L'étape suivante consiste à définir des itinéraires sur le tunnel (n'oubliez pas net.ipv6.conf.default.forwarding = 1), puis ajustez le lien MTU pour obtenir des performances optimales.

server# sysctl net.ipv6.conf.all.forwarding=1

client# ip -6 route add default via fec0:1::1

Cela permettra à votre client d'envoyer une requête ping à d'autres réseaux auxquels le serveur a accès, étant donné que les cibles ont des routes de retour vers votre client distant.

Vous devrez également corriger le lien MTU afin que le client n'envoie pas de paquets que le serveur ne pourra pas transmettre vers l'avant. Cela dépend du MTU de la liaison IPv6 du serveur lui-même. Ne vous fiez pas à la découverte de chemin MTU car cela ne fonctionnera pas correctement sur le tunnel SSH. En cas de doute, commencez par une valeur MTU faible, comme 1280 (MTU minimum autorisé pour IPv6).

Juliano
la source
1
Le MTU minimum pris en charge par IPv6 est 1280 (contrairement à IPv4, qui prend en charge un MTU minimum de 576). Avertissement: si vous définissez votre MTU en dessous de 1280, vos adresses IPv6 disparaîtront et ne pourront pas être rajoutées avant de redémarrer SSH!
Jeremy Visser
1
OS X n'a ​​pas la ipcommande, alors définissez l'adresse IP avec sudo ifconfig tun0 inet6 fec0:1::2/112 up et définissez l'itinéraire avec sudo route add -inet6 -mtu 1280 default fec0:1::1
larsr