Principe de fonctionnement








télécharger 84.35 Kb.
titrePrincipe de fonctionnement
date de publication02.02.2018
taille84.35 Kb.
typeDocumentos
ar.21-bal.com > loi > Documentos
VTUN (Virtual Tunnel) entre Equinix-Zurich et PSE-Lausanne

Oussama Hammami, 2010-08-04

Switzernet
Ce document nous sert de memo pour mettre en place un tunnel virtuel sur un serveur et des clients Debian ETCH.

Principe de fonctionnement


On va donc monter un tunnel entre deux machines PSE-L et EQX-Z, c'est-à-dire qu'on va créer une interface virtuelle qui va manipuler nos paquets avant de les envoyer sur l'interface physique. Quand la machine PSE-L voudra parler à la machine EQX-Z, elle enverra ses données vers l'interface tunX (tun0, tun1 …) qui fera la compression, le chiffrement,… et les enverra à EQX-Z via l'interface physique. De l'autre côté c'est le même principe, on reçoit les données sur l'interface physique, elles sont remontées à l'interface virtuelle qui fait la décompression, le déchiffrement,… et renvoie ça à l'application.
L'avantage c'est qu'au niveau applicatif, il n'y a rien à changer. On joint la machine distante en utilisant l'IP affectée au tunnel.

Architecture


On travaillera donc avec deux machines ;

PSE-L : qui se trouve chez nous à PSE-B à Lausanne.

EQX-Z : qui se trouve à Equinix Zurich.

Il n'est pas question de routage, c'est-à-dire que le tunnel va permettre à PSE-L de communiquer directement sans routage avec EQX-Z.

Donc on a la machine PSE-L qui a l'IP 217.X.Y.6 (eth0) et 212.A.B.107 (eth1) et la machine EQX-Z qui a l'IP 217.X.Y.5. Ici toutes les adresses sont des adresses Publiques et on n’est pas derrière une NAT (on a obtenu ces adresses Publiques depuis notre connexion VTX à PSE-A grâce à cette architecture)
Pour permettre l’établissement du tunnel (authentification) entre le client vtun PSE-L et le serveur vtun EQX-Z, il faut ajouter une route uniquement pour ce serveur (EQX-Z) en utilisant le default Gateway du l’interface eth1 :
# route add -host 217.X.Y.5 gw 212.A.B.1
Vous aurez besoin du driver tun dans votre noyau (modprobe tun ou Device Drivers/Network device support/Universal TUN/TAP device driver support) et du paquet vtun.

Installation & configuration


Exécuter ces commandes dans les deux machines (client serveur):
# aptitude update

# aptitude install uml-utilities

# aptitude install bridge-utils

# tunctl -u root -t tap0

# ifconfig tap0 0.0.0.0 promisc up

# aptitude install vtun

# modprobe tun

Serveur vtun: EQX-Z


/etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo

iface lo inet loopback
# The primary network interface

auto eth0

allow-hotplug eth0

iface eth0 inet manual
auto br0

iface br0 inet static

address 217.X.Y.5

netmask 255.255.255.224

gateway 217.X.Y.1

bridge_ports eth0
/etc/vtund.conf

options {

port 5000;

syslog daemon;

# Path to various programs

ifconfig /sbin/ifconfig;

route /sbin/route;

firewall /sbin/iptables;

ip /sbin/ip;

}
default {

compress no;

encrypt no;

speed 0;

}
My-ip-tunnel {

passwd your-password;

type ether;

proto udp;

keepalive yes;

compress no;

encrypt yes;
up {

ifconfig "%% up";

program "/usr/sbin/brctl addif br0 %%";

};
down {

# Connection is Down

ifconfig "%% down";

};

}
/etc/default/vtun

# Defaults for vtun initscript

# sourced by /etc/init.d/vtun

# Created by the maintainer scripts
#

# This is a POSIX shell fragment

#

# Should the standalone server be started?

RUN_SERVER=yes

SERVER_ARGS="-P 5000"
Vous pouvez maintenant démarrer le serveur :

# ifconfig br0 up

# vtund -s
Si tout a été configuré correctement, nous verrons la suite des résultats sur les deux interfaces (br0 et tap0):

# ifconfig br0

br0 Link encap:Ethernet HWaddr 00:24:1d:b6:07:ee

inet addr:217.X.Y.5 Bcast:217.X.Y.31 Mask:255.255.255.224

inet6 addr: fe80::224:1dff:feb6:7ee/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:19675720 errors:0 dropped:0 overruns:0 frame:0

TX packets:10061532 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:1331973430 (1.2 GiB) TX bytes:3314605535 (3.0 GiB)
# ifconfig tap0

tap0 Link encap:Ethernet HWaddr 00:ff:16:25:59:a7

inet6 addr: fe80::2ff:16ff:fe25:59a7/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:107 errors:0 dropped:0 overruns:0 frame:0

TX packets:206990 errors:0 dropped:0 overruns:192101 carrier:0

collisions:0 txqueuelen:500

RX bytes:11999 (11.7 KiB) TX bytes:265766330 (253.4 MiB)
Si vous avez besoin de voir l'état actuel de l'interface du Bridge, vous pouvez utiliser l'outil brctl

# brctl show br0

bridge name bridge id STP enabled interfaces

br0 8000.00241db607ee no eth0

tap0
N’hésitez pas de vérifier le log en cas de problème.

# tail -f /var/log/daemon.log

Client vtun: PSE-L


/etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo

iface lo inet loopback
# The primary network interface

###

auto eth0

allow-hotplug eth0

iface eth0 inet manual

###

auto br0

iface br0 inet static

address 217.X.Y.6

netmask 255.255.255.224

bridge_ports eth0
# The scondary network interface

#######################################
auto eth1

allow-hotplug eth1

iface eth1 inet static

address 212.A.B.107

netmask 255.255.255.248

network 212.A.B.104

broadcast 212.A.B.111

gateway 212.A.B.105

dns-nameservers 212.A.B.98
/etc/vtund.conf

bbcs-adsl-c008-p107:~# cat /etc/vtund.conf

options {

port 5000;
syslog daemon;
# Path to various programs

ifconfig /sbin/ifconfig;

route /sbin/route;

firewall /sbin/iptables;

ip /sbin/ip;

}

My-ip-tunnel {

passwd yourpassword;

type ether;

proto udp;

keepalive yes;

compress no;

encrypt yes;
up {

ifconfig "%% up";

program "/usr/sbin/brctl addif br0 %%";

};
down {

# Connection is Down

ifconfig "%% down";

};

}
/etc/default/vtun

# Defaults for vtun initscript

# sourced by /etc/init.d/vtun

# Created by the maintainer scripts
#

# This is a POSIX shell fragment

#

# Should the standalone server be started?

# RUN_SERVER=no

# SERVER_ARGS="-P 5000"
# Client sessions to start. Up to ten instances can be configured.

#

# Session name

# CLIENT0_NAME=viper

#

# Destination host

# CLIENT0_HOST=vtun-server.somewhere.com.au

#

# Optional parameters

# CLIENT0_ARGS=

#

# CLIENT1_NAME=

# CLIENT1_HOST=

# CLIENT1_ARGS=
CLIENT0_NAME=My-ip-tunnel

CLIENT0_HOST=212.X.Y.5
/etc/init.d/vtun-star

ifconfig br0 down

route add -host 217.X.Y.5 gw 212.A.B.105

ifconfig br0 up

#route del -net 0.0.0.0 gw 217.X.Y.1

vtund My-ip-iptunnel 217.X.Y.5
#route -n > start-vtun.log

#brctl show br0 >> start-vtun.log

#tail -f /var/log/daemon.log
Pour démarrer le client vous pouvez exécuter le fichier /etc/init.d/vtun-star donc il faux ajouter les droits d’exécution à ce dernier :

# chmod +x /etc/init.d/vtun-star

# /etc/init.d/vtun-star
Pour que le redémarrage du ce serveur se fait correctement il faut remplacer vtun par ce script dans la liste de démarrage en utilisant par exemple rcconf.
# ifconfig

br0 Link encap:Ethernet HWaddr 00:13:49:aa:9d:34

inet addr:217.X.Y.6 Bcast:217.X.Y.31 Mask:255.255.255.224

inet6 addr: fe80::213:49ff:feaa:9d34/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2378 errors:0 dropped:0 overruns:0 frame:0

TX packets:13 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:136269 (133.0 KiB) TX bytes:978 (978.0 B)
eth0 Link encap:Ethernet HWaddr 00:13:49:aa:9d:34

inet6 addr: fe80::213:49ff:feaa:9d34/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:109 errors:0 dropped:0 overruns:0 frame:0

TX packets:2742 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:12509 (12.2 KiB) TX bytes:416600 (406.8 KiB)

Interrupt:18 Base address:0xce00
eth1 Link encap:Ethernet HWaddr 00:23:54:b7:a4:7e

inet addr:212.A.B.107 Bcast:212.A.B.111 Mask:255.255.255.248

inet6 addr: fe80::223:54ff:feb7:a47e/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:3084 errors:0 dropped:0 overruns:0 frame:0

TX packets:447 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:577916 (564.3 KiB) TX bytes:58606 (57.2 KiB)

Interrupt:219 Base address:0xc000
lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:69 errors:0 dropped:0 overruns:0 frame:0

TX packets:69 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:5404 (5.2 KiB) TX bytes:5404 (5.2 KiB)
tap0 Link encap:Ethernet HWaddr 00:ff:54:2c:6e:90

inet6 addr: fe80::2ff:54ff:fe2c:6e90/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2755 errors:0 dropped:0 overruns:0 frame:0

TX packets:116 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:500

RX bytes:417434 (407.6 KiB) TX bytes:13019 (12.7 KiB)
# brctl show br0

bridge name bridge id STP enabled interfaces

br0 8000.001349aa9d34 no eth0

tap0
# tail -f /var/log/daemon.log

Aug 4 16:51:23 bbcs-adsl-c008-p107 vtund[2538]: VTun client ver 3.X 01/14/2009 started

Aug 4 16:51:23 bbcs-adsl-c008-p107 vtund[2538]: Connecting to 217.X.Y.5

Aug 4 16:51:23 bbcs-adsl-c008-p107 vtund[2538]: Use SSL-aware challenge/response

Aug 4 16:51:23 bbcs-adsl-c008-p107 vtund[2538]: Remote Server sends #012.

Aug 4 16:51:23 bbcs-adsl-c008-p107 vtund[2538]: Session iptunnel[217.X.Y.5]opened

Aug 4 16:51:24 bbcs-adsl-c008-p107 vtund[2538]: UDP connection initialized

Aug 4 16:51:24 bbcs-adsl-c008-p107 vtund[2538]: Blowfish-128-ECB encryption initialized

Testes de confirmation


Voici le résultat d’une trace route (tracert) depuis le client vtun (Lausanne) à une machine derrière le tunnel à Zurich

# tracert -d 217.X.Y.4

traceroute to 217.X.Y.4 (217.X.Y.4), 30 hops max, 40 byte packets

1 217.168.45.4 18.624 ms 18.958 ms 19.576
Résultat d’une trace route (tracert) depuis le serveur vtun (Zurich) à une machine derrière le client vtun (+switch) à Lausanne

# tracert -d 217.X.Y.7

traceroute to 217.X.Y.7 (217.X.Y.7), 30 hops max, 40 byte packets

1 (217.X.Y.7) 29.238 ms 30.938 ms 32.612 ms
Résultat d’une trace route (tracert) depuis une machine à Lausanne derrière le client vtun (+switch) à une machine à Zurich

$ tracert -d 217.X.Y.4

Tracing route to 217.X.Y.4 over a maximum of 30 hops

1 27 ms 13 ms 13 ms 217.X.Y.4
Dans le serveur, vous pouvez lancez une capture pour le port 5000

# ngrep -qpl -W byline "" udp port 5000

eth0: no IPv4 address assigned: Cannot assign requested address

interface: eth0

filter: (ip or ip6) and ( udp port 5000 )
U 217.X.Y.5:5000 -> 212.A.B.107:39897

.@.-...T.&.e...>.?l...v..S.../.wd....;:.a...w._XR..:.....+...{F.`.
U 217.X.Y.5:5000 -> 212.A.B.107:39897

.@.-...T.&.e...>.?l...v..S.../.wd....;:.a...w._XR..:.....+...{F.`.

Statistique Ping


PING depuis le client vtun (Lausanne) à une machine derrière le tunnel à Zurich

# ping 217.X.Y.4

PING 217.X.Y.4 (217.X.Y.4) 56(84) bytes of data.

64 bytes from 217.X.Y.4: icmp_seq=1 ttl=64 time=29.8 ms

64 bytes from 217.X.Y.4: icmp_seq=2 ttl=64 time=13.7 ms

64 bytes from 217.X.Y.4: icmp_seq=3 ttl=64 time=14.0 ms

64 bytes from 217.X.Y.4: icmp_seq=4 ttl=64 time=14.0 ms

64 bytes from 217.X.Y.4: icmp_seq=5 ttl=64 time=14.6 ms

64 bytes from 217.X.Y.4: icmp_seq=6 ttl=64 time=14.0 ms

64 bytes from 217.X.Y.4: icmp_seq=7 ttl=64 time=14.1 ms

64 bytes from 217.X.Y.4: icmp_seq=8 ttl=64 time=13.5 ms

64 bytes from 217.X.Y.4: icmp_seq=9 ttl=64 time=14.2 ms

64 bytes from 217.X.Y.4: icmp_seq=10 ttl=64 time=13.7 ms

64 bytes from 217.X.Y.4: icmp_seq=11 ttl=64 time=13.9 ms

64 bytes from 217.X.Y.4: icmp_seq=12 ttl=64 time=14.1 ms

64 bytes from 217.X.Y.4: icmp_seq=13 ttl=64 time=15.3 ms

64 bytes from 217.X.Y.4: icmp_seq=14 ttl=64 time=14.8 ms

64 bytes from 217.X.Y.4: icmp_seq=15 ttl=64 time=14.0 ms

64 bytes from 217.X.Y.4: icmp_seq=16 ttl=64 time=13.9 ms

64 bytes from 217.X.Y.4: icmp_seq=17 ttl=64 time=13.6 ms

64 bytes from 217.X.Y.4: icmp_seq=18 ttl=64 time=13.6 ms

64 bytes from 217.X.Y.4: icmp_seq=19 ttl=64 time=14.2 ms

64 bytes from 217.X.Y.4: icmp_seq=20 ttl=64 time=13.2 ms

^C

--- 217.X.Y.4 ping statistics ---

20 packets transmitted, 20 received, 0% packet loss, time 19074ms

rtt min/avg/max/mdev = 13.276/14.856/29.827/3.465 ms
PING depuis le client vtun (Lausanne) à machine derrière le client vtun (+switch) à Lausanne

# ping 217.X.Y.7

PING 217.X.Y.7 (217.X.Y.7) 56(84) bytes of data.

64 bytes from 217.X.Y.7: icmp_seq=1 ttl=128 time=0.147 ms

64 bytes from 217.X.Y.7: icmp_seq=2 ttl=128 time=0.119 ms

64 bytes from 217.X.Y.7: icmp_seq=3 ttl=128 time=0.117 ms

64 bytes from 217.X.Y.7: icmp_seq=4 ttl=128 time=0.111 ms

64 bytes from 217.X.Y.7: icmp_seq=5 ttl=128 time=0.123 ms

64 bytes from 217.X.Y.7: icmp_seq=6 ttl=128 time=0.118 ms

64 bytes from 217.X.Y.7: icmp_seq=7 ttl=128 time=0.122 ms

64 bytes from 217.X.Y.7: icmp_seq=8 ttl=128 time=0.119 ms

64 bytes from 217.X.Y.7: icmp_seq=9 ttl=128 time=0.115 ms

64 bytes from 217.X.Y.7: icmp_seq=10 ttl=128 time=0.111 ms

64 bytes from 217.X.Y.7: icmp_seq=11 ttl=128 time=0.116 ms

64 bytes from 217.X.Y.7: icmp_seq=12 ttl=128 time=0.112 ms

64 bytes from 217.X.Y.7: icmp_seq=13 ttl=128 time=0.119 ms

64 bytes from 217.X.Y.7: icmp_seq=14 ttl=128 time=0.111 ms

64 bytes from 217.X.Y.7: icmp_seq=15 ttl=128 time=0.108 ms

64 bytes from 217.X.Y.7: icmp_seq=16 ttl=128 time=0.112 ms

64 bytes from 217.X.Y.7: icmp_seq=17 ttl=128 time=0.108 ms

64 bytes from 217.X.Y.7: icmp_seq=18 ttl=128 time=0.112 ms

64 bytes from 217.X.Y.7: icmp_seq=19 ttl=128 time=0.115 ms

64 bytes from 217.X.Y.7: icmp_seq=20 ttl=128 time=0.109 ms

^C

--- 217.X.Y.7 ping statistics ---

20 packets transmitted, 20 received, 0% packet loss, time 18997ms

rtt min/avg/max/mdev = 0.108/0.116/0.147/0.010 ms

Référence


Connecting Two Remote Local Networks With Transparent Bridging Technique

http://kovyrin.net/2006/04/05/connecting-two-remote-local-networks-with-transparent-bridging/
Vtun Experimentation

http://awgtek.blogspot.com/2009/06/vtun-experimentation_17.html
Création d'un tunnel chiffré entre deux machines avec vtun

http://blog.orniz.org/index.php/post/2010/03/Cr%C3%A9ation-d-un-tunnel-chiffr%C3%A9-entre-deux-machines-avec-vtun
Installation d'un VPN avec Vtun

http://ot.geneve.ch/ot/IMG/pdf/VPNinstallation-HOWTO1.1.pdf
Secure Tunneling between Intranets with VTun

http://www.adamolson.com/articles/UnixReview.com%20%20Secure%20Tunneling%20between%20Intranets%20with%20VTun%202000.htm
EssaiConfigVTun

http://www.nantes-wireless.org/pages/wiki/index.php?pagename=EssaiConfigVTun
VTUN The easiest way to create Virtual Tunnels over TCP/IP networks with traffic shaping, compression and encryption.

http://vtun.sourceforge.net/
Switzernet infrastructure

http://switzernet.com/company/091216-infrastructure/
Architecture and configurations of Equinix Zurich collocation

http://switzernet.com/company/091228-equinix-configs/
Transfer des adresses IP public de VTX à PSE-B

http://switzernet.com/2/public/100730-vtx-pse-lan/
VPN (Virtual Private Network) pour Equinix

http://switzernet.com/company/091127-vpn-equinix/

similaire:

Principe de fonctionnement iconPrincipe de fonctionnement de la tête d'impression

Principe de fonctionnement iconTypes de topologie
«switchée» ou «commutée» (fabric) : on utilise dans ce cas un commutateur (switch en anglais) Fibre Channel, dont le principe de...

Principe de fonctionnement iconI un principe de dénomination

Principe de fonctionnement iconPrincipe de construction du Galup 40

Principe de fonctionnement iconFonctionnement d'un ordinateur

Principe de fonctionnement iconI fonctionnement de la blr 1 Généralités

Principe de fonctionnement iconLe cours Fonctionnement de l’arbre

Principe de fonctionnement iconIii structure et fonctionnement

Principe de fonctionnement iconI assemblage Installation Fonctionnement nstructions

Principe de fonctionnement iconLe fonctionnement d'une mémoire flash








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com