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