cours4 - Olivier FLAUZAC
Transcription
cours4 - Olivier FLAUZAC
configuration du réseau Cours 4 Olivier FLAUZAC plan Gestion du réseau Un « nouvel outil » : Iproute 2 Montages réseaux 1 gestion du réseau pont réseau Définition ∙ Bridge ∙ Dispositif permettant de faire communiquer plusieurs interfaces réseaux ∙ Hub reliant plusieurs interfaces réseaux ∙ Bus d’interconnexion ∙ Pont physique / pont virtuel ∙ Comment créer un bridge virtuel ? 3 bridge ? Bridge ∙ Pont entre plusieurs interfaces ∙ interfaces physiques ∙ interface virtuelles ∙ Un bridge ne contient pas obligatoirement une interface physique ∙ Un bridge ne contient pas obligatoirement une interface virtuelle ∙ Création ∙ au démarrage du système /etc/network/interfaces + bridge-utils ∙ en ligne de commande ∙ avec les outils bridge-utils ∙ avec les outils iproute2 4 bridge au démarrage : configuration Configuration : /etc/network/interfaces 1. Création du bridge 2. Ajout des interfaces , Positionnement des propriétés 3. Autorisation de forwarding /etc/network/interfaces 6 auto lo iface lo inet loopback auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_maxwait 0 1 net.ipv4.ip_forward=1 1 relecture de la configuration sysctl -p /etc/sysctl.conf 1 2 3 4 5 /etc/sysctl.conf Aucune interface d’invité n’est présente dans le bridge ! 5 bridge au démarrage : état obtenu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 br0 ifconfig Link encap:Ethernet HWaddr 00:0c:29:24:0c:6e inet adr:192.168.230.139 Bcast:192.168.230.255 Masque:255.255.255.0 adr inet6: fe80::20c:29ff:fe24:c6e/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:131 errors:0 dropped:0 overruns:0 frame:0 TX packets:91 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:12172 (11.8 KiB) TX bytes:10678 (10.4 KiB) eth0 Link encap:Ethernet HWaddr 00:0c:29:24:0c:6e UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:132 errors:0 dropped:0 overruns:0 frame:0 TX packets:91 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:14181 (13.8 KiB) TX bytes:10732 (10.4 KiB) lo ..... Remarques ∙ pas d’adresse sur eth0 ∙ l’adresse est sur le bridge 6 bridge en ligne de commande bridge-utils brctl ∙ Création / suppression de bridge ∙ Ajout / supression d’interfaces dans un bridge ∙ Statistiques sur les bridges Opérations 1. Création du bridge 2. Suppression et désactivation de l’Interface 3. Ajout de l’interface dans le bridge 4. Configuration IP du bridge 5. Activation de l’interface / du bridge 6. Ajout d’une route par défaut (passerelle) 7 bridge en ligne de commande : mise en œuvre 1 1 2 3 4 5 6 7 8 9 10 /etc/sysctl.conf net.ipv4.ip_forward=1 configuration du bridge root@debLXC:/home/user# brctl addbr br root@debLXC:/home/user# ifconfig eth0 default down root@debLXC:/home/user# brctl addif br eth0 root@debLXC:/home/user# ifconfig br 10.0.2.15 netmask 255.255.255.0 root@debLXC:/home/user# ifconfig eth0 up root@debLXC:/home/user# ifconfig br up root@debLXC:/home/user# route add default gw 10.0.2.2 root@debLXC:/home/user# brctl show bridge name bridge id STP enabled interfaces br 8000.080027c1263c no eth0 8 bridge en ligne de commande : mise en œuvre (suite) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ifconfig Link encap:Ethernet HWaddr 08:00:27:c1:26:3c inet adr:10.0.2.15 Bcast:10.0.2.255 Masque:255.255.255.0 adr inet6: fe80::a00:27ff:fec1:263c/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:814 (814.0 B) TX bytes:1535 (1.4 KiB) br eth0 lo Link encap:Ethernet HWaddr 08:00:27:c1:26:3c adr inet6: fe80::a00:27ff:fec1:263c/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25 errors:0 dropped:0 overruns:0 frame:0 TX packets:51 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:3121 (3.0 KiB) TX bytes:4780 (4.6 KiB) ... route 1 2 3 4 5 6 root@debLXC:/home/user# route Table de routage IP du noyau Destination Passerelle default 10.0.2.2 10.0.2.0 * Genmask 0.0.0.0 255.255.255.0 Indic Metric Ref UG 0 0 U 0 0 Use Iface 0 br 0 br 9 interface Définition ∙ Dispositif permettant de transformer des données reçues de la carte réseau en paquet IP ∙ Passage des paquets à la couche réseau de la machine ∙ Exécution d’opérations inverses aussi ! ∙ TUN/TAP interfaces réseaux qui communiquent avec un système logiciel ∙ interface virtuelle ∙ TUN : simulation d’un périphérique point à point (couche 3) ∙ TAP : simulation d’un périphérique Ethernet (couche 2) ∙ Comment créer une interface TAP ? 10 généralités iproute2 ∙ Ensemble d’outils de gestion ∙ des protocoles (TCP, UDP, IP) ∙ du réseau (IPv4, IPv6) ∙ Remplacement des net-tools ∙ Unification des éléments ∙ de configuration ∙ d’activation / désactivation ∙ de test de configuration 11 equivalence Utilité version net-tools iproute2 Adressage Routage Résolution des adresses Vlan Tunnels Statistiques ifconfig route arp vconfig iptunnel netstat ip addr , ip link ip route ip neigh ip link ip tunnel ss 12 récupération des adresses 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ip addr root@debLXC:/home/user# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fec1:263c/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:a9:e3:6a brd ff:ff:ff:ff:ff:ff inet 192.168.59.104/24 brd 192.168.59.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fea9:e36a/64 scope link valid_lft forever preferred_lft forever root@debLXC:/home/user# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fec1:263c/64 scope link valid_lft forever preferred_lft forever 13 modification des adresses 1 2 3 4 5 6 7 ip addr root@debLXC:/home/user# ip addr del 10.0.2.15/24 dev eth0 root@debLXC:/home/user# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP ... ...group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff inet6 fe80::a00:27ff:fec1:263c/64 scope link valid_lft forever preferred_lft forever 14 gestion des liens 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ip link root@debLXC:/home/user# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN ... ...mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast ... ...state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast ... ...state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:a9:e3:6a brd ff:ff:ff:ff:ff:ff root@debLXC:/home/user# ip link set eth0 down root@debLXC:/home/user# ip link show eth0 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN ... ...mode DEFAULT group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff 15 autres utilisations 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ip route - ip neigh - ss root@debLXC:/home/user# ip route default via 10.0.2.2 dev eth0 10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.59.0/24 dev eth1 proto kernel scope link src 192.168.59.104 root@debLXC:/home/user# ip neigh 192.168.59.3 dev eth1 lladdr 0a:00:27:00:00:00 REACHABLE root@debLXC:/home/user# ss Netid State Recv-Q Send-Q Local Address:Port u_str ESTAB 0 0 * 10726 u_str ESTAB 0 0 * 10308 u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 10727 u_str ESTAB 0 0 * 10579 u_str ESTAB 0 0 * 10418 u_str ESTAB 0 0 * 10725 u_str ESTAB 0 0 * 10307 u_str ESTAB 0 0 /run/systemd/journal/stdout 10580 u_str ESTAB 0 0 * 10660 u_str ESTAB 0 0 /run/systemd/journal/stdout 10661 u_str ESTAB 0 0 * 13590 u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 10728 u_str ESTAB 0 0 * 10377 u_str ESTAB 0 0 /run/systemd/journal/stdout 10419 u_str ESTAB 0 0 * 10669 u_str ESTAB 0 0 /run/systemd/journal/stdout 10379 u_str ESTAB 0 0 * 13589 u_str ESTAB 0 0 * 10378 tcp ESTAB 0 0 192.168.59.104:ssh 16 mise en place de bridge avec iproute Principe ∙ Similaire aux autres outils ∙ un seul outil pour tout faire ∙ ∙ ∙ ∙ création du bridge configuration des adresses enregistrement des interfaces gestion du routage 17 bridge avec iproute2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ip root@debLXC:/home/user# ip link add name br type bridge root@debLXC:/home/user# ip link set eth0 down root@debLXC:/home/user# ip addr flush dev eth0 root@debLXC:/home/user# ip link set eth0 up root@debLXC:/home/user# ip addr add 10.0.2.15/24 broadcast 10.0.2.255 dev br root@debLXC:/home/user# ip link set dev br up root@debLXC:/home/user# ip link set eth0 master br root@debLXC:/home/user# bridge link 2: eth0 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... ...master br state forwarding priority 32 cost 4 root@debLXC:/home/user# ip addr show 1: lo: ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast ... ...master br state UP group default qlen 1000 link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff inet6 fe80::a00:27ff:fec1:263c/64 scope link valid_lft forever preferred_lft forever 3: eth1: ... 4: br: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue ... ...state UP group default link/ether 08:00:27:c1:26:3c brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global br valid_lft forever preferred_lft forever inet6 fe80::e8eb:31ff:fee6:7ecf/64 scope link valid_lft forever preferred_lft forever root@debLXC:/home/user# ip route add default via 10.0.2.2 18 montages réseaux montages réseau Principe ∙ Combiner ∙ la configuration de l’hôte ∙ les spécificités des modes réseaux des invités ∙ objectifs de communication ∙ Nécessité de configuration ∙ la configuration de l’invité ∙ les paramètres réseau de l’hôte ∙ les adresses si nécessaire 20 problématique Cas d’étude ∙ 2 hôtes (h1 et h2) ∙ 2 invités (i1 et i2) sur h1 ∙ 1 serveur sur internet (s) Echange possibles ∙ i1 → i2 ∙ i2 → i1 ∙ h1 → i1 ∙ i1 → h1 ∙ h2 → i1 ∙ i1 → h2 ∙ i1 → s 21 modes réseau Modes classiques ∙ Mode sans réseau ∙ Mode pont (bridge) ∙ Mode réseau hôte privé ∙ Mode NAT 22 modes réseau de qemu Fonctionnement ∙ Fonctionnement par émulation de carte réseau ∙ Emulation de divers matériels ∙ Quatre modes connus ∙ ∙ ∙ ∙ user mode redirection tap VDE 23 la gestion du réseau Commande ∙ net / netdev ∙ ∙ ∙ ∙ ∙ ∙ user mode utilisateur nic création d’une interface réseau tap lien vers une interface tap ifname nom de l’interface script script à exécuter id identifiant du réseau 24 le mode réseau user Utilisation ∙ SLIRP ∙ Mode par défaut ∙ Ne nécessite pas de droits administrateur ∙ Emulation par défaut d’une carte Intel e1000 PCI ∙ Placé en NAT sur l’hôte ∙ Autorise l’accès sortant ∙ Interdit l’accès entrant ∙ Ne supporte que TCP et UDP mais pas ICMP ∙ Propriétés par défaut : ∙ ∙ ∙ ∙ serveur DHCP en 10.0.2.2 adresses distribuées à partir de 10.0.2.15 DNS virtuel en 10.0.2.3 serveur samba virtuel en 10.0.2.4 (accès à l’hôte) 25 le mode user ligne de commande qemu-system-x86_64 -k fr -m 512 -hda myDeb.img & qemu-system-x86_64 -k fr -m 512 -hda myDeb.img -net nic -net user & qemu-system-x86_64 -k fr -m 512 -hda myDeb.img -netdev user,id=network0 -device e1000,netdev=network0 & 26 le mode réseau redirection Utilisation ∙ Extension du mode user ∙ Redirection d’un port de l’hôte sur l’invité ∙ Utilisé pour le partage de ressources ou accès SSH ∙ Pas de règles iptables à spécifier ∙ redir directive de redirection ∙ tcp:port_hôte::port_invité ligne de commande qemu-system-x86_64 -k fr -m 512 -redir tcp:5555::80 -hda myDeb.img & 27 le mode tap Utilisation ∙ Accès aux TAP offert par l’hôte ∙ Utilisation dans le cadre de pont réseau ∙ Utilisable en mode ∙ réseau ponté : hôte et invité sur le même réseau ∙ NAT : invité dans un sous réseau de l’hôte ∙ Exploitation possible de script de configuration réseau ligne de commande qemu-system-x86_64 -k fr -m 512 -net nic -netdev tap,ifname=tap0,script=no -hda myDeb.img & 28 le réseau et docker Résaux par défaut ∙ Création de 3 instances réseau ∙ bridge : réseau spécifique à docker ∙ none : pas de réseau ∙ host : même configuration que l’hôte root@debian:~# docker network ls NETWORK ID NAME 680cd5c1b318 none 077fa1a68526 host f9536e13b42b bridge DRIVER null host bridge root@debian:~# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... ... ... 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... ... ... 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:ed:90:21:61 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:edff:fe90:2161/64 scope link valid_lft forever preferred_lft forever 29 mode réseau Deux modes réseau ∙ bridge ∙ réseau des conteneurs sur un seul hôte ∙ overlay ∙ réseau des conteneurs sur plusieurs hôtes ∙ exploitation des conteneurs sur diféfrentes machines d’un cluster / cloud 30 mode bridge Paricularité ∙ Plusieurs bridge possibles ∙ Isolation des conteneur par bridge ∙ Bridge par défaut : docker0 ∙ pas d’interface système ∙ DHCP intégré : 172.17.x.x ∙ mode NAT ∙ Possibilité de créer un bridge contenant ethX 31 création d’un bridge Mode NAT ∙ Création du réseau bridge docker ∙ Allocation automatique de la plage d’adresses ∙ Gestion automatique de la passerelle / forward ∙ docker network create –driver bridge mybridge 32 root@debian:~# docker network inspect mybridge [ { ”Name”: ”mybridge”, ”Id”: ”7d7146596c4893936678e46957ca11b3c851ec1ffadba88b4fd54e839d80e28b”, ”Scope”: ”local”, ”Driver”: ”bridge”, ”IPAM”: { ”Driver”: ”default”, ”Options”: {}, ”Config”: [ { ”Subnet”: ”172.18.0.0/16”, ”Gateway”: ”172.18.0.1/16” } ] }, ”Containers”: {}, ”Options”: {} } ] 33 hôte : ip addr show root@debian:~# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 ... 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 ... 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:ed:90:21:61 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:edff:fe90:2161/64 scope link valid_lft forever preferred_lft forever 21: br-7d7146596c48: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:09:66:cc:e5 brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 scope global br-7d7146596c48 valid_lft forever preferred_lft forever 34 invité : ip addr show root@debian:~#docker run -t -i --net=mybridge debian /bin/bash root@89a104f7c590:/# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff inet 172.18.0.2/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe12:2/64 scope link valid_lft forever preferred_lft forever 35 hôte : ip addr show root@debian:~# ip addr show ... 21: br-7d7146596c48: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:09:66:cc:e5 brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 scope global br-7d7146596c48 valid_lft forever preferred_lft forever inet6 fe80::42:9ff:fe66:cce5/64 scope link valid_lft forever preferred_lft forever 23: vetha95fad2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-7d7146596c48 state UP group default link/ether 1e:a4:21:25:20:25 brd ff:ff:ff:ff:ff:ff inet6 fe80::1ca4:21ff:fe25:2025/64 scope link valid_lft forever preferred_lft forever 36 création d’un bridge Mode Bridge 1. Création du bridge (brctl / ip) 2. Ajout de l’interface hôte dans le bridge 3. Ajout du bridge dans le fichier /etc/default/docker configuration DOCKER_OPTS=”-b=nom_bridge” 4. Redémarrage du service 37