P24 Annexe : Différence entre versions
(→Création du bridge général) |
|||
Ligne 5 : | Ligne 5 : | ||
− | = | + | =Sur la machine hôte= |
+ | ==Mise à jour et outils pratiques== | ||
Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants : | Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants : | ||
apt-get update -y; apt-get upgrade -y | apt-get update -y; apt-get upgrade -y | ||
Ligne 11 : | Ligne 12 : | ||
Les outils suivants sont également conseillés : | Les outils suivants sont également conseillés : | ||
apt-get install -y vim python curl lynx nmap | apt-get install -y vim python curl lynx nmap | ||
− | |||
− | + | ==Création du bridge général== | |
− | =Création du bridge général= | ||
Nous créons une interface ''tap'' dédiée à la connexion des interfaces du bridge. L'interface eth0 est dédiée au support. Pour que la configuration soit identique si la machine redémarre, nous éditons le fichier '''/etc/network/interfaces''' comme suit : | Nous créons une interface ''tap'' dédiée à la connexion des interfaces du bridge. L'interface eth0 est dédiée au support. Pour que la configuration soit identique si la machine redémarre, nous éditons le fichier '''/etc/network/interfaces''' comme suit : | ||
# The loopback network interface | # The loopback network interface | ||
Ligne 31 : | Ligne 30 : | ||
#MASQUERADE | #MASQUERADE | ||
pre-up iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE | pre-up iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE | ||
− | pre-up ip tuntap add mode tap dev | + | pre-up ip tuntap add mode tap dev $IFACE |
− | pre-up ip addr add '''172.26.79.230/20''' dev | + | pre-up ip addr add '''172.26.79.230/20''' dev $IFACE |
− | up ip link set dev | + | up ip link set dev $IFACE up |
− | #post-up ip route add '''172.26.79.230/32''' dev | + | #post-up ip route add '''172.26.79.230/32''' dev $IFACE |
− | down ip link set | + | down ip link set $IFACE down |
− | post-down ip link del dev | + | post-down ip link del dev $IFACE |
#Bridge réunissant les conteneurs | #Bridge réunissant les conteneurs | ||
Ligne 47 : | Ligne 46 : | ||
La mascarade doit s'effectuer manuellement plutôt que l'option '''iptables-restore'''. En effet nous risquons d'écraser les nouvelles règles de routages de machines virtuelles Xen. | La mascarade doit s'effectuer manuellement plutôt que l'option '''iptables-restore'''. En effet nous risquons d'écraser les nouvelles règles de routages de machines virtuelles Xen. | ||
− | =Création des machines virtuelles Xen= | + | ==Création des machines virtuelles Xen== |
Une fois les outils Xen installé, on créée autant de vm que nécessaire | Une fois les outils Xen installé, on créée autant de vm que nécessaire | ||
− | xen-create-image --hostname='''teemo''' --ip=10.'''2'''.0.1 --netmask=255.255.255.240 --gateway= | + | xen-create-image --hostname='''teemo''' --ip=10.'''2'''.0.1 --netmask=255.255.255.240 --gateway=10.0.0.1 \ |
--dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd | --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd | ||
+ | =Sur la machine Xen= | ||
+ | On se connecte à la machine Xen via la commande '''xl console ''teemo'' ''' | ||
+ | ==Architecture réseau== | ||
+ | Dans une premier temps il est nécessaire d'établir les bons paramètres réseaux. La création d'un bridge personnalisé nous servira par la suite pour y mettre tous les conteneurs. On le créée comme précédemment dans '''/etc/network/interfaces'''. | ||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | pre-up ip link set $IFACE up | ||
+ | post-down ip link set $IFACE down | ||
+ | |||
+ | # The primary network interface | ||
+ | auto br0 | ||
+ | iface br0 inet static | ||
+ | bridge_ports eth0 | ||
+ | address 10.'''2'''.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | gateway 10.0.0.1 | ||
+ | reboot | ||
− | = | + | ==Mise a jour et outils pratiques== |
− | + | Une fois reconnecté, nous devrions avoir une connexion internet valide. | |
− | |||
− | |||
− | Mise a jour et | ||
apt-get update -y; aptget upgrade -y | apt-get update -y; aptget upgrade -y | ||
− | apt-get install -y vim curl | + | apt-get install -y vim curl nmap |
− | Ajout des dépôts ''backports'' de jessie | + | ==Installation de Docker== |
+ | Ajout des dépôts ''backports'' de jessie ou se trouve les paquets nécessaires | ||
echo -e "\n\n#\n# Jessie backports\n#\n deb http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list | echo -e "\n\n#\n# Jessie backports\n#\n deb http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list | ||
echo -e "deb-src http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list | echo -e "deb-src http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list | ||
Ligne 69 : | Ligne 87 : | ||
Installation proprement dite de Docker | Installation proprement dite de Docker | ||
− | apt-get install -y docker-engine | + | apt-get install -y '''docker-engine''' |
Ajout du proxy dans l’environnement Docker | Ajout du proxy dans l’environnement Docker | ||
Ligne 77 : | Ligne 95 : | ||
systemctl restart docker | systemctl restart docker | ||
− | |||
====Création d'un bridge personnalisé pour Docker ==== | ====Création d'un bridge personnalisé pour Docker ==== | ||
Pour changer le réseau par défaut de Docker, on doit dans un premier temps détruire toute la configuration existante. | Pour changer le réseau par défaut de Docker, on doit dans un premier temps détruire toute la configuration existante. | ||
Ligne 85 : | Ligne 102 : | ||
iptables -t nat -F POSTROUTING | iptables -t nat -F POSTROUTING | ||
− | On | + | On doit ensuite indiquer au démon de Docker d'utiliser notre bridge '''br0''' précédemment créée. On édite pour cela '''/lib/systemd/system/docker.service'''. On y indique aussi que l'on souhaite que les conteneurs prennent leurs adresses dans la plage donnée par l'option ''fixed-cidr''. Par défaut, la passerelle par défaut est construite en fonction de l'adresse de l'hôte du conteneur (ici ''10.1.0.1'' au lieu de ''10.0.0.1''). Nous devons également la préciser ici. Voici la ligne a remplacer dans le fichier : |
− | + | ExecStart=/usr/bin/docker daemon -H fd:// -b='''br0''' --fixed-cidr='''10.1.0.1/16''' --default-gateway='''10.0.0.1''' | |
− | + | On recharge le démon pour prendre en compte la configuration. | |
− | |||
systemctl daemon-reload | systemctl daemon-reload | ||
service docker restart | service docker restart | ||
Ligne 95 : | Ligne 111 : | ||
ifconfig | ifconfig | ||
iptables -t nat -L -n | iptables -t nat -L -n | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Mise en place des scripts= | =Mise en place des scripts= | ||
=Tests= | =Tests= |
Version du 16 février 2016 à 17:21
Cette page est un guide pas à pas pour reconstruire l'architecture de notre projet sur une machine Debian (Jessie 8) avec un noyau Linux 3.16.0-4-amd64.
Sur la machine hôte
Mise à jour et outils pratiques
Sur une machine Debian Jessie, il est nécessaire d'installer les outils suivants :
apt-get update -y; apt-get upgrade -y apt-get install -y xen-hypervisor-4.4-amd64 xen-tools sqlite3 nginx ssh xen-utils-common bridge-utils
Les outils suivants sont également conseillés :
apt-get install -y vim python curl lynx nmap
Création du bridge général
Nous créons une interface tap dédiée à la connexion des interfaces du bridge. L'interface eth0 est dédiée au support. Pour que la configuration soit identique si la machine redémarre, nous éditons le fichier /etc/network/interfaces comme suit :
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 172.26.64.13 netmask 255.255.240.0 gateway 172.26.79.254 auto tap0 iface tap0 inet manual #MASQUERADE pre-up iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE pre-up ip tuntap add mode tap dev $IFACE pre-up ip addr add 172.26.79.230/20 dev $IFACE up ip link set dev $IFACE up #post-up ip route add 172.26.79.230/32 dev $IFACE down ip link set $IFACE down post-down ip link del dev $IFACE #Bridge réunissant les conteneurs auto Summoners iface Summoners inet static bridge-ports tap0 address 10.0.0.1 netmask 255.0.0.0
La mascarade doit s'effectuer manuellement plutôt que l'option iptables-restore. En effet nous risquons d'écraser les nouvelles règles de routages de machines virtuelles Xen.
Création des machines virtuelles Xen
Une fois les outils Xen installé, on créée autant de vm que nécessaire
xen-create-image --hostname=teemo --ip=10.2.0.1 --netmask=255.255.255.240 --gateway=10.0.0.1 \ --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd
Sur la machine Xen
On se connecte à la machine Xen via la commande xl console teemo
Architecture réseau
Dans une premier temps il est nécessaire d'établir les bons paramètres réseaux. La création d'un bridge personnalisé nous servira par la suite pour y mettre tous les conteneurs. On le créée comme précédemment dans /etc/network/interfaces.
# The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static pre-up ip link set $IFACE up post-down ip link set $IFACE down # The primary network interface auto br0 iface br0 inet static bridge_ports eth0 address 10.2.0.1 netmask 255.0.0.0 gateway 10.0.0.1
reboot
Mise a jour et outils pratiques
Une fois reconnecté, nous devrions avoir une connexion internet valide.
apt-get update -y; aptget upgrade -y apt-get install -y vim curl nmap
Installation de Docker
Ajout des dépôts backports de jessie ou se trouve les paquets nécessaires
echo -e "\n\n#\n# Jessie backports\n#\n deb http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list echo -e "deb-src http://ftp.fr.debian.org/debian jessie-backports main" >> /etc/apt/sources.list apt-get update -y; aptget upgrade -y
Installation proprement dite de Docker
apt-get install -y docker-engine
Ajout du proxy dans l’environnement Docker
mkdir /etc/systemd/system/docker.service.d echo -e "[Service]\nEnvironment=HTTP_PROXY=http://proxy.polytech-lille.fr:3128/" > /etc/systemd/system/docker.service.d/http-proxy.conf systemctl daemon-reload systemctl restart docker
Création d'un bridge personnalisé pour Docker
Pour changer le réseau par défaut de Docker, on doit dans un premier temps détruire toute la configuration existante.
service docker stop ip link set docker0 down brctl delbr docker0 iptables -t nat -F POSTROUTING
On doit ensuite indiquer au démon de Docker d'utiliser notre bridge br0 précédemment créée. On édite pour cela /lib/systemd/system/docker.service. On y indique aussi que l'on souhaite que les conteneurs prennent leurs adresses dans la plage donnée par l'option fixed-cidr. Par défaut, la passerelle par défaut est construite en fonction de l'adresse de l'hôte du conteneur (ici 10.1.0.1 au lieu de 10.0.0.1). Nous devons également la préciser ici. Voici la ligne a remplacer dans le fichier :
ExecStart=/usr/bin/docker daemon -H fd:// -b=br0 --fixed-cidr=10.1.0.1/16 --default-gateway=10.0.0.1
On recharge le démon pour prendre en compte la configuration.
systemctl daemon-reload service docker restart
On peut alors vérifier que notre configuration a bien été prise en compte avec les commandes suivantes :
ifconfig iptables -t nat -L -n