52
Routage IP au niveau hˆ ote Philippe Langevin Oct 2007, Nov 2008, Nov 2011.

Routage IP au niveau hôte - univ-tln.fr

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Routage IP au niveau hôte - univ-tln.fr

Routage IP au niveau hote

Philippe Langevin

Oct 2007, Nov 2008, Nov 2011.

Page 2: Routage IP au niveau hôte - univ-tln.fr

Protocole IP

Interface reseau

Routeur

Livraison physique

Routage IP

Adresse multicast

Filtrage et translation d’adresse

Algorithme de routage

Travaux-Pratiques

Page 3: Routage IP au niveau hôte - univ-tln.fr

Modele TCP/IP

I Le protocole IP (Internet Protocole) constitue la couchereseau de TCP/IP. Il gere l’adressage et realisel’acheminement des donnees.

Page 4: Routage IP au niveau hôte - univ-tln.fr

objectif du cours

Il s’agit de se familiariser avec quelques points, outils et services.

I configuration reseau

I programmation reseau

I administration reseau

I parallelisation

Page 5: Routage IP au niveau hôte - univ-tln.fr

Architecture TCP/IP

I L’architecture TCP/IP comprend plusieurs protocoles etservices.

Page 6: Routage IP au niveau hôte - univ-tln.fr

adresse IP

Le protocole IP decrit le mode d’acheminement de paquets dedonnees entre deux interfaces affectees d’adresses IP. Il prevoittrois modes :

I unicast

I broadcast (diffusion)

I multicast (groupe)

Page 7: Routage IP au niveau hôte - univ-tln.fr

Classe d’adressesUne adresse IP est formee de 4 octets:

192.168.0.253

Classe Debut Numeros Combinaison Nb hotes

A 1-126 1 2553 16581375B 128-191 2 2552 65025C 192-223 3 255 255D MulticastingE Reserve

127.x .y .z

designe une adresse locale, la RFC1357 prevoit des adressesprivees:

I En classe A : 10.0.0.0 a 10.255.255.255

I En classe B : 172.16.0.0 a 172.31.255.255

I En classe C : 192.168.0.0 a 192.168.255.255

Page 8: Routage IP au niveau hôte - univ-tln.fr

Adresse Reseau

adresse ip reseau

adresse ip hote

masque

192 168 52128

255 255 240 0

192 168 176 0

0192 168 128

I L’adresse 192.168.128.52 ne fait pas partie du reseau192.168.176.0 / 20 bits

Page 9: Routage IP au niveau hôte - univ-tln.fr

Interface Reseau

Le peripherique dedie a la communcation reseau est une interfacereseau. La commande ifconfig permet de configurer uneinterface reseau.

I ifconfig : voir une configuration.

I ifconfig eth0 down : desactiver l’interface.

I ifconfig eth1 up : activer l’interface.

I ifconfig eth0 192.168.0.1 mask 255.255.255.0 :assigner une adresse IP.

Page 10: Routage IP au niveau hôte - univ-tln.fr

ifconfig

eth0 Link encap:Ethernet HWaddr 00:60:97:AA:04:0Dinet adr:10.2.73.86 Bcast:10.2.79.255 Mask:255.255.248.0adr inet6: fe80::260:97ff:feaa:40d/64 Scope:LienUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:230900 errors:0 dropped:0 overruns:0 frame:0TX packets:89477 errors:0 dropped:0 overruns:0 carrier:1collisions:12043 lg file transmission:1000RX bytes:74627279 (71.1 MiB) TX bytes:55943233 (53.3 MiB)Interruption:10 Adresse de base:0xe800

lo Link encap:Boucle localeinet adr:127.0.0.1 Masque:255.0.0.0adr inet6: ::1/128 Scope:HoteUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:10794 errors:0 dropped:0 overruns:0 frame:0TX packets:10794 errors:0 dropped:0 overruns:0 carrier:0collisions:0 lg file transmission:0RX bytes:9488777 (9.0 MiB) TX bytes:9488777 (9.0 MiB)

Page 11: Routage IP au niveau hôte - univ-tln.fr

Routeur

Les reseaux sont relies entre eux par des routeurs. Un routeur estun hote qui joue le role de passerelle entre les reseaux sur lequel ilest physiquement connecte.

I une adresse physique par interface

I une adresse IP par reseau.I autorisation des transfert d’interface :

I /proc/sys/net/ipv4/ip forwardI find /proc -name ‘‘*forward*’’

Page 12: Routage IP au niveau hôte - univ-tln.fr

datagramme

hlenver longeur

identification deplacement

TTL protocole check−sum

data

paddingoption IP

adresse ip source

adresse ip destination

flags

tos

Page 13: Routage IP au niveau hôte - univ-tln.fr

Encapsulation

Lors de la transmission physique, les datagrammes IP sontencapsules dans des trames ethernet :

hlenver longeuridentification deplacement

TTL protocole check−sum

datapaddingoption IP

adresse ip sourceadresse ip destination

flagstos

mac dst mac srcadresseadresse parite

Ne pas confondre adresses mac et adresses IP !

Page 14: Routage IP au niveau hôte - univ-tln.fr

Livraison physique

who as

reseau physique10.1.0.254

Page 15: Routage IP au niveau hôte - univ-tln.fr

Livraison physique

reseau physique

arp reply : 10.1.0.254is at 00:01:30:10:CB:20

Page 16: Routage IP au niveau hôte - univ-tln.fr

ping mail.univ-tln.fr

[ root@mnsnet ]# / u s r / s b i n /tcpdump −n − i any

0 7 : 3 6 . arp who−has 1 9 2 . 1 6 8 . 0 . 2 5 4 t e l l 1 9 2 . 1 6 8 . 0 . 3 00 7 : 3 6 . arp r e p l y 1 9 2 . 1 6 8 . 0 . 2 5 4 i s−at 0 0 : 0 7 : cb : 1 a : 1 6 : 3 d0 7 : 3 6 . IP 1 9 2 . 1 6 8 . 0 . 3 0 . f i l e n e t −nch > 2 1 2 . 2 7 . 5 4 . 2 5 2 . domain :

37820+ A? m a i l . un iv−t l n . f r .0 7 : 3 6 . IP 2 1 2 . 2 7 . 5 4 . 2 5 2 . domain > 1 9 2 . 1 6 8 . 0 . 3 0 . f i l e n e t −nch :

37820 1/0/0 A 1 9 3 . 4 9 . 9 6 . 20 7 : 3 6 . IP 1 9 2 . 1 6 8 . 0 . 3 0 > 1 9 3 . 4 9 . 9 6 . 2 : ICMP echo r e q u e s t ,

i d 6933 , seq 1 , l e n g t h 640 7 : 3 6 . IP 1 9 3 . 4 9 . 9 6 . 2 > 1 9 2 . 1 6 8 . 0 . 3 0 : ICMP echo r e p l y ,

i d 6933 , seq 1 , l e n g t h 640 7 : 3 6 . IP 1 9 2 . 1 6 8 . 0 . 3 0 . f i l e n e t −nch > 2 1 2 . 2 7 . 5 4 . 2 5 2 . domain :

52476+ PTR? 2 . 9 6 . 4 9 . 1 9 3 . in−addr . a rpa . ( 4 2 )

Page 17: Routage IP au niveau hôte - univ-tln.fr

Usurpation d’adresse mac

Le protocole arp n’est pas securise :

I diffusion des requetes.

I un hote pirate peut usurper une adresse mac.

I arp spoofing.

Page 18: Routage IP au niveau hôte - univ-tln.fr

Commandes et fichiers

I arp - manipule la table ARP du systeme.

I fichier /proc/net/arp

[dm@msnet] cat /proc/net/arpIP address HW type Flags HW address Mask Device192.168.0.254 0x1 0x2 00:07:CB:1A:16:3D * eth

Page 19: Routage IP au niveau hôte - univ-tln.fr

traceroute www.upf.fr

1 1 0 . 2 . 7 2 . 1 3 . 9 8 0 ms 4 . 9 4 7 ms 6 . 3 4 4 ms2 c7200 6 . 7 1 6 ms 4 . 1 1 2 ms 4 . 8 5 8 ms3 1 9 4 . 2 1 4 . 6 6 . 3 0 14 .135 ms 9 . 4 6 3 ms 7 . 6 9 7 ms4 1 9 3 . 5 0 . 1 0 8 . 9 3 7 . 4 4 8 ms 9 . 8 6 7 ms 6 . 2 9 2 ms5 1 9 3 . 4 9 . 2 . 1 4 8 . 0 7 9 ms 7 . 0 1 5 ms 11.694 ms6 m a r s e i l l e −g3−2−24. c s s i . r e n a t e r . f r 7 . 2 1 7 ms7 m o n t p e l l i e r−pos2−0. c s s i . r e n a t e r . f r 17 .109 ms8 lyon−pos15−0. c s s i . r e n a t e r . f r 16 .135 ms9 f t l d −l y o n . c s s i . r e n a t e r . f r 20 .408 ms 19 .344 ms

10 po0−0. p a s s e 2 . P a r i s . o p e n t r a n s i t . ne t 24 .689 ms11 t e n g i g e 0 −3−0−0−1000. p a s t r 1 . P a r i s . o p e n t r a n s i t . ne t12 v e r i o −4.GW. o p e n t r a n s i t . ne t 28 .795 ms 30.372 ms13 as−0. r23 . londen03 . uk . bb . g i n . n t t . n et 33 .649 ms14 xe−3−1. r01 . londen03 . uk . bb . g i n . n t t . ne t 50 .833 ms15 xe−3−1. r01 . londen05 . uk . bb . g i n . n t t . ne t 32 .742 ms16 ge−2−15. c01 . londen02 . uk . wh . v e r i o . n et 32 .899 ms17 8 3 . 2 3 1 . 1 5 2 . 3 6 44 .401 ms 32.400 ms 34 .702 ms18 eul0001112−p i p . eu . v e r i o . ne t 34 .425 ms

Page 20: Routage IP au niveau hôte - univ-tln.fr

Renater

Page 21: Routage IP au niveau hôte - univ-tln.fr

Routage IP

extractionadresse IPdestination

le paquetest arrive suivant

a l’hote

la table deroutage

consulter

envoyer

locale ?

datagramme

acces ?

Page 22: Routage IP au niveau hôte - univ-tln.fr

Routage IP

eth2

eth0

eth1

10.0.1.1192.168.1.5

192.168.5.2

192.168.5.0 / 24 192.168.5.1 eth0192.168.1.0 / 24 192.168.1.1 eth10.0.0.0 10.0.0.1 eth2

192.168.1.5

Page 23: Routage IP au niveau hôte - univ-tln.fr

Messages ICMP

Lorsque un paquet traverse une passerelle, le TTL du datagrammeest decremente. Le routeur emet un message ICMP a l’adressesource IP du paquet:

I paquet perdu

I pas d’hote sur le reseau

I pas de route pour la destination

I port ferme

I paquet filtre

Page 24: Routage IP au niveau hôte - univ-tln.fr

Paquet filtre

[root@ou812 ~]# traceroute luminy.univ-mrs.fr.traceroute to luminy.univ-mrs.fr (139.124.100.7), 30 hops max, 38 byte packets1 10.2.72.1 (10.2.72.1) 0.815 ms 0.860 ms 0.717 ms2 c7200 (192.168.6.2) 1.284 ms 2.705 ms 0.743 ms3 194.214.66.30 (194.214.66.30) 24.132 ms 28.485 ms 29.849 ms 4 vers-ustv-lagarde.ge-0-1-1.ns1-mars.sherpaa.net (193.50.108.93) 21.238 ms 9.177 ms 5.657 ms5 193.50.108.138 (193.50.108.138) 29.207 ms 32.550 ms 29.857 ms6 194.214.66.194 (194.214.66.194) 10.021 ms 4.012 ms 3.708 ms 7 * * *8 vpn-internet-u2-Timone.phocean.fr (194.214.97.5) 21.966 ms 6.592 ms 23.842 ms9 ad-u2-Luminy.phocean.fr (193.50.131.23) 20.335 ms 5.991 ms 4.405 ms

10 luminy.univ-mrs.fr (139.124.100.7) 10.074 ms 8.488 ms 4.799 ms

[root@ou812 ~] # ping -c1 -t4 luminy.univ-mrs.frPING luminy.univ-mrs.fr (139.124.100.7) 56(84) bytes of data.From (192.168.6.2) icmp_seq=0 Packet filtered

--- luminy.univ-mrs.fr ping statistics ---1 packets transmitted, 0 received, +1 errors,100 % lost

Page 25: Routage IP au niveau hôte - univ-tln.fr

Time to live exceeded

[pl@localhost $ traceroute www.univ-tln.frtraceroute to www.univ-tln.fr (193.49.96.34), 30 hops max, 60 byte packets1 192.168.0.254 (192.168.0.254) 2.538 ms 4.685 ms 5.327 ms2 82.244.173.254 (82.244.173.254) 25.973 ms 29.212 ms 29.967 ms3 78.254.6.222 (78.254.6.222) 31.299 ms 31.923 ms 32.659 ms4 tga83-1-v902.intf.nra.proxad.net (78.254.254.113) 33.824 ms 34.710 ms 35.426 ms5 tsm83-1-v900.intf.nra.proxad.net (78.254.254.109) 36.630 ms 37.223 ms 47.977 ms6 tdv83-1-v902.intf.nra.proxad.net (78.254.254.105) 48.845 ms 22.422 ms 22.067 ms7 tro83-1-v900.intf.nra.proxad.net (78.254.254.101) 22.586 ms 25.163 ms 25.886 ms8 tca83-1-v902.intf.nra.proxad.net (78.254.254.97) 26.375 ms 26.865 ms 27.713 ms9 lse83-1-v900.intf.nra.proxad.net (78.254.254.93) 28.436 ms 30.469 ms 32.329 ms

10 sf283-1-v902.intf.nra.proxad.net (78.254.254.89) 33.990 ms 35.823 ms 36.350 ms11 ban83-1-v900.intf.nra.proxad.net (78.254.254.85) 37.797 ms 39.720 ms 40.580 ms12 lbe83-1-v902.intf.nra.proxad.net (78.254.254.81) 22.952 ms 23.090 ms 22.816 ms13 scy83-1-v900.intf.nra.proxad.net (78.254.254.77) 23.605 ms 24.233 ms 26.805 ms14 cio13-1-v902.intf.nra.proxad.net (78.254.254.73) 27.558 ms 30.166 ms 31.434 ms15 au213-1-v900.intf.nra.proxad.net (78.254.254.69) 32.455 ms 33.004 ms 34.909 ms16 au113-1-v902.intf.nra.proxad.net (78.254.254.65) 36.067 ms 36.734 ms 37.258 ms17 etc...

Page 26: Routage IP au niveau hôte - univ-tln.fr

Time to live exceeded

[pl@localhost]$ ping -c1 -t8 www.univ-tln.frPING www.univ-tln.fr (193.49.96.34) 56(84) bytes of data.From tca83-1-v902.intf.nra.proxad.net(78.254.254.97) icmp_seq=1 Time to live exceeded

--- www.univ-tln.fr ping statistics ---1 packets transmitted, 0 received, +1 errors,100% packet loss, time 65ms

Page 27: Routage IP au niveau hôte - univ-tln.fr

Destination Host Unreachable

[root@ou812 ~]# host port-aciport-aci.univ-tln.fr has address 10.2.73.93

[root@ou812 ~]# ping -c1 10.2.73.93PING 10.2.73.93 (10.2.73.93) 56(84) bytes of data.From 10.2.73.86 icmp_seq=0 Destination Host Unreachable

--- 10.2.73.93 ping statistics ---1 packets transmitted, 0 received, +1 errors

Page 28: Routage IP au niveau hôte - univ-tln.fr

Destination Net Unreachable

[root@ou812 ~]# ping 10.0.0.1PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.From 193.49.2.14 icmp_seq=7 Destination Net UnreachableFrom 193.49.2.14 icmp_seq=8 Destination Net UnreachableFrom 193.49.2.14 icmp_seq=9 Destination Net UnreachableFrom 193.49.2.14 icmp_seq=10 Destination Net Unreachable

--- 10.0.0.1 ping statistics ---11 packets transmitted, 0 received, +4 errors, 100

Page 29: Routage IP au niveau hôte - univ-tln.fr

Port unreachable

[langevin@ou812 ~] host port-aci maitinfo7;; connection timed out; no servers could be reached

[root@ou812 ~]# tcpdump -t icmp or port domaintcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

IP ou812.univ-tln.fr.32831 > maitinfo7.univ-tln.fr.domain:18541+ A? port-aci.univ-tln.fr. (38)

IP ou812.univ-tln.fr.32832 > mail.univ-tln.fr.domain:21309+ PTR? 223.185.9.10.in-addr.arpa. (43)

IP maitinfo7.univ-tln.fr > ou812.univ-tln.fr:icmp 74: maitinfo7.univ-tln.fr

udp port domain unreachable

Page 30: Routage IP au niveau hôte - univ-tln.fr

Manipulation des tables de Routage

I route affiche la table de routage.

I route add permet d’ajouter une route.

I route del permet de supprimer une route.

Page 31: Routage IP au niveau hôte - univ-tln.fr

Exemple

[ root@ou812 ] r o u t e

Table de r o u t a g e IP du noyauD e s t i n a t i o n P a s s e r e l l e Genmask I f a c e1 0 . 2 . 7 2 . 0 ∗ 2 5 5 . 2 5 5 . 2 4 8 . 0 U eth01 6 9 . 2 5 4 . 0 . 0 ∗ 2 5 5 . 2 5 5 . 0 . 0 U eth0d e f a u l t 1 0 . 2 . 7 2 . 1 0 . 0 . 0 . 0 UGeth0

[ root@ou812 ] r o u t e add 1 9 2 . 1 6 8 . 0 . 1 r e j e c t

[ root@ou812 ] r o u t eTable de r o u t a g e IP du noyauD e s t i n a t i o n P a s s e r e l l e Genmask I f a c e1 9 2 . 1 6 8 . 0 . 1 − 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5 !H −1 0 . 2 . 7 2 . 0 ∗ 2 5 5 . 2 5 5 . 2 4 8 . 0 Ueth01 6 9 . 2 5 4 . 0 . 0 ∗ 2 5 5 . 2 5 5 . 0 . 0 Ueth0d e f a u l t 1 0 . 2 . 7 2 . 1 0 . 0 . 0 . 0 UGeth0

Page 32: Routage IP au niveau hôte - univ-tln.fr

Correct ou pas ?

destination masque passerelle interface ?

10.1.30.0 255.255.0.0 10.1.30.9 10.1.30.1

10.1.40.0 255.255.255.0 10.1.40.2 10.1.40.1

10.1.50.0 255.255.255.0 10.1.50.1 10.1.50.1

10.1.60.0 255.255.255.0 10.1.60.1 10.1.40.1

10.1.70.0 255.255.255.0 10.1.40.8 10.1.40.1

10.1.80.1 255.255.255.0 10.1.50.9 10.1.50.1

10.1.90.1 255.255.255.255 10.1.50.9 10.1.40.1

0.0.0.0 0.0.0.0 10.1.50.9 10.1.40.1

Page 33: Routage IP au niveau hôte - univ-tln.fr

Adresse multicast

I L’adresse 224.0.0.1 identifie tous les hotes d’un sous-reseau.Tous les hotes ayant des capacites multicast dans unsous-reseau doivent faire partie de ce groupe.

I L’adresse 224.0.0.2 identifie tout routeur multicast dans unreseau.

I Le champ d’adresse 224.0.0.0 - 224.0.0.255 est alloue pour lesprotocoles bas niveau. Les datagrammes envoyes dans cetteplage d’adresse ne seront pas routes par des routeursmulticast.

I La plage d’adresse 239.0.0.0 - 239.255.255.255 est allouee ades fins administratives. Les adresses sont allouees localementpour chaque organisation mais elles ne peuvent exister al’exterieur de celles-ci. Les routeurs de l’organisation nedoivent pas pouvoir router ces adresses a l’exterieur du reseaude l’entreprise.

Page 34: Routage IP au niveau hôte - univ-tln.fr

Regions multicast

scope TTL Plage d’adresse

Noeud 0

Lien 1 224.0.0.0 - 224.0.0.255

Departement < 32 239.255.0.0 - 239.255.255.255

Organisation < 64 239.192.0.0 - 239.195.255.255

Global < 255 224.0.1.0 - 238.255.255.255

Page 35: Routage IP au niveau hôte - univ-tln.fr

Conversion IP multicast adresse physique

ADRESSE IP MULTICAST

ADRESSE PHYSIQUE MULTICAST

0 0 5 E0 1

224 x y z

y zx

Page 36: Routage IP au niveau hôte - univ-tln.fr

ping -c1 -t1 224.0.0.1

64 bytes from 10.2.73.86: icmp_seq=0 ttl=64 time=0.133 ms64 bytes from 10.2.73.84: icmp_seq=0 ttl=64 time=0.578 ms (DUP!)64 bytes from 10.2.73.103: icmp_seq=0 ttl=64 time=0.657 ms (DUP!)64 bytes from 10.2.73.87: icmp_seq=0 ttl=64 time=0.718 ms (DUP!)64 bytes from 10.2.73.100: icmp_seq=0 ttl=64 time=0.780 ms (DUP!)64 bytes from 10.2.73.75: icmp_seq=0 ttl=64 time=0.797 ms (DUP!)64 bytes from 10.2.73.113: icmp_seq=0 ttl=64 time=1.08 ms (DUP!)64 bytes from 10.2.73.181: icmp_seq=0 ttl=64 time=1.08 ms (DUP!)64 bytes from 10.2.73.178: icmp_seq=0 ttl=64 time=1.18 ms (DUP!)64 bytes from 10.2.73.74: icmp_seq=0 ttl=254 time=1.19 ms (DUP!)64 bytes from 10.2.73.187: icmp_seq=0 ttl=255 time=1.39 ms (DUP!)64 bytes from 10.2.73.111: icmp_seq=0 ttl=64 time=1.39 ms (DUP!)64 bytes from 10.2.75.5: icmp_seq=0 ttl=128 time=1.49 ms (DUP!)64 bytes from 10.2.73.48: icmp_seq=0 ttl=60 time=2.30 ms (DUP!)64 bytes from 10.2.73.43: icmp_seq=0 ttl=60 time=2.56 ms (DUP!)64 bytes from 10.2.73.206: icmp_seq=0 ttl=64 time=6.79 ms (DUP!)64 bytes from 10.2.73.183: icmp_seq=0 ttl=255 time=6.81 ms (DUP!)64 bytes from 10.2.73.78: icmp_seq=0 ttl=64 time=7.12 ms (DUP!)64 bytes from 10.2.73.29: icmp_seq=0 ttl=255 time=7.35 ms (DUP!)64 bytes from 10.2.73.184: icmp_seq=0 ttl=255 time=7.80 ms (DUP!)64 bytes from 10.2.73.131: icmp_seq=0 ttl=64 time=8.34 ms (DUP!)64 bytes from 10.2.72.1: icmp_seq=0 ttl=128 time=8.42 ms (DUP!)64 bytes from 10.2.73.126: icmp_seq=0 ttl=60 time=8.93 ms (DUP!)64 bytes from 192.168.0.1: icmp_seq=0 ttl=127 time=8.93 ms (DUP!)

Page 37: Routage IP au niveau hôte - univ-tln.fr

setsockopt - Lire et ecrire les options dune socket.

#inc lude <s y s / t y p e s . h>#inc lude <s y s / s o c k e t . h>i n t s e t s o c k o p t ( i n t s , i n t l e v e l , i n t optname , void ∗ o p t v a l ,

s o c k l e n t o p t l e n ) ;

setsockopt() manipule les options associees une socket. Il s’agitde preciser le niveau vise et le nom de loption. Au niveau socket,level prend la valeur SOL SOCKET. Pour tous les autres niveaux,il faut fournir le numro de protocole approprie.Les parametres optval et optlen sont utilises pour determiner lesoptions.optname et toute autre option sont passees sans interpretation auprotocole approprie, pour quil linterprete lui-meme.

Page 38: Routage IP au niveau hôte - univ-tln.fr

Socket multicast : main

// kwds=r e c e p t i o n , e m i s s i o ni n t main ( i n t argc , char∗ a r g v [ ] ){

i n t sock ;

ADDRMULTICAST = i n e t a d d r ( "224.1.2.3" ) ; // a d r e s s e par d e f a u t

i f ( ( sock = s o c k e t ( AF INET , SOCK DGRAM, 0 ) ) < 0)

p e r r e u r ("socket" ) ;

i f ( ! a r g s ( argc , a r g v ) ) e x i t ( 1 ) ;

i f ( RECEPT ) r e c e p t i o n ( sock ) ;i f ( SEND ) e m i s s i o n ( sock ) ;

c l o s e ( sock ) ;return 0 ;

}

Page 39: Routage IP au niveau hôte - univ-tln.fr

Socket multicast : args// mark=a r g si n t a r g s ( i n t argc , char∗ a r g v [ ] ){

char ∗ o p t l i s t e = "a:p:rs:t:h" ;i n t opt ;whi le ( ( opt = g e t o p t ( argc , argv , o p t l i s t e ) ) >=0 ) {

switch ( opt ){case ’a’ : ADDRMULTICAST = i n e t a d d r ( o p t a r g ) ; break ;case ’s’ : SEND = a t o i ( o p t a r g ) ;

break ;case ’r’ : RECEPT = 1 ;

break ;case ’t’ : TTL = a t o i ( o p t a r g ) ;

break ;case ’p’ : PORT = a t o i ( o p t a r g ) ;

break ;case ’h’ : p r i n t f ("\nusage %s : %s" , a r g v [ 0 ] , o p t l i s t e ) ;d e f a u l t : return 0 ;}

}return 1 ;}

Page 40: Routage IP au niveau hôte - univ-tln.fr

Socket multicast : reception// kwds=s e t s o c k o p tvoid r e c e p t i o n ( i n t sock ){ char b f r [ 1024 ] ;

i n t nb ;s t r u c t i p m r e q rm ;s t r u c t s o c k a d d r i n adr ;memset ( & adr , 0 , s i z e o f ( s t r u c t s o c k a d d r i n ) ) ;adr . s i n f a m i l y = AF INET ;adr . s i n a d d r . s a d d r = h t o n l ( INADDR ANY ) ;adr . s i n p o r t = h t o n s (PORT) ;

i f ( b i n d ( sock , ( s t r u c t s o c k a d d r ∗) & adr , l e n ) < 0 )p e r r e u r ("bind" ) ;

memset ( & rm , 0 , s i z e o f ( s t r u c t i p m r e q ) ) ;rm . i m r m u l t i a d d r . s a d d r = ADDRMULTICAST ;rm . i m r i n t e r f a c e . s a d d r = h t o n l (INADDR ANY ) ;i f ( s e t s o c k o p t ( sock , IPPROTO IP , IP ADD MEMBERSHIP , & rm , s i z e o f ( s t r u c t i p m r e q ) ) < 0 )

p e r r e u r ("opt" ) ;whi le ( 1 ) {

nb = r e c v ( sock , b f r , 1024 , 0 ) ;i f ( nb > 0 ) p r i n t f ("%s" , b f r ) ;e l s e p r i n t f ("*" ) ;f f l u s h ( s t d o u t ) ;

}}

Page 41: Routage IP au niveau hôte - univ-tln.fr

Socket multicast : emission

// kwds=s e t s o c k o p tvoid e m i s s i o n ( i n t sock ){ char b f r [ 1024 ]="\nhello !" ;

i n t nb ;s t r u c t s o c k a d d r i n adr ;memset ( & adr , 0 , s i z e o f ( s t r u c t s o c k a d d r i n ) ) ;adr . s i n f a m i l y = AF INET ;adr . s i n a d d r . s a d d r = ADDRMULTICAST ;adr . s i n p o r t = h t o n s (PORT) ;s e t s o c k o p t ( sock , IPPROTO IP , IP MULTICAST TTL , &TTL , s i z e o f (TTL ) ) ;whi le ( SEND−− ) {

nb = s e n d t o ( sock , b f r , 1024 , 0 , ( s t r u c t s o c k a d d r ∗)& adr , l e n ) ;i f ( nb <= 0 ) {

i f ( nb ) p e r r o r ("send" ) ;break ;

}s l e e p ( 1 ) ;

}}

Page 42: Routage IP au niveau hôte - univ-tln.fr

tcpdump -n igmp or dst 225.0.0.31

listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes16:49:31.014253 IP 192.168.0.1 > 224.0.0.1: igmp query v2# ./igmp.exe -rIP 10.2.73.86 > 224.0.0.251: igmp v2 report 224.0.0.251IP 10.2.73.86 > 225.0.0.31: igmp v2 report 225.0.0.31IP 10.2.73.86 > 225.0.0.31: igmp v2 report 225.0.0.31IP 10.2.73.86 > 225.0.0.31: igmp v2 report 225.0.0.31# ./igmp.exe -s3 -t1IP 10.2.73.86.32809 > 225.0.0.31.31415: UDP, length 1024IP 10.2.73.86.32809 > 225.0.0.31.31415: UDP, length 1024IP 10.2.73.86.32809 > 225.0.0.31.31415: UDP, length 1024# killall igmp.exeIP 10.2.73.86 > 224.0.0.2: igmp leave 225.0.0.31IP 10.2.75.5 > 225.0.0.31: igmp query v2 [gaddr 225.0.0.31]IP 10.2.75.5 > 225.0.0.31: igmp query v2 [max resp time 10] [gaddr 225.0.0.31]IP 10.2.75.5 > 225.0.0.31: igmp query v2 [max resp time 10] [gaddr 225.0.0.31]IP 10.2.75.5 > 224.0.0.1: igmp query v2IP 10.2.73.86 > 224.0.0.251: igmp v2 report 224.0.0.251

Page 43: Routage IP au niveau hôte - univ-tln.fr

Evolution du nombre d’hotes

En fevrier 2011, la reserve de blocs libres d’adresses publiques IPv4de l’Internet Assigned Numbers Authority (IANA) est arrivee aepuisement.

Page 44: Routage IP au niveau hôte - univ-tln.fr

chaines de routage

routage routage

processus

ENTREE SORTIE

POSTROUTAGEPREROUTAGE

TRANSFERT

I modification des adresses : 5 zones critiques.

I iptable

Page 45: Routage IP au niveau hôte - univ-tln.fr

iptables -L

Chain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- anywhere anywhere

state RELATED,ESTABLISHEDACCEPT icmp -- anywhere anywhereACCEPT tcp -- anywhere anywhere

state NEW tcp dpt:sshREJECT all -- anywhere anywhere

reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)REJECT all -- anywhere anywhere

reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destination

Page 46: Routage IP au niveau hôte - univ-tln.fr

Translation de ports

5001 : 10.1.65.2.2450

5002 : 10.1.65.5.1789

5000 : 10.1.65.1.5778

195.12.127.15.5000

193.12.15.1.53

10.1.65.0

10.1.65.1

10.1.65.254

195.12.127.15

10.1.65.1.5778

193.12.15.1.53

I iptables -t nat -A POSTROUTING -s 10.1.65.0/24 -oeth0 -j MASQ

Page 47: Routage IP au niveau hôte - univ-tln.fr

Table de routage

I Un routeur decide de la destination (passerelle, gateway) d’unpaquet par consultation de la table de routage et de l’adresseIP du datagramme.

I La maintenance des tables de routage est une operationfondamentale. Elle peut etre manuelle, statique oudynamique.

Page 48: Routage IP au niveau hôte - univ-tln.fr

Algorithme de la patate chaude

route vers 193.10.1.0

193.10.2.0193.10.1.0

I La notion de route par defaut permet la connexion d’unreseau local a un reseau global.

I route add default gw ip

Page 49: Routage IP au niveau hôte - univ-tln.fr

Configuration reseau

1. A quoi sert la commande ipcalc ?

2. Utiliser les commandes ifconfig, ip, netstat pour determinerla configuration des interfaces reseau de votre poste.

3. Le repertoire /etc contient traditionnellement desinformations configurations. Trouver les numeros de port desservices : ftp, ssh, DNS.

4. Quels sont les serveurs DNS utilises par l’hote. Quels sont lesdomaines de completion par defaut.

5. Les serveurs DNS sont ils sur le reseau correspondant al’interface eth0 ?

6. Utiliser la commande arp pour determiner l’adresse MAC dela passerelle par defaut.

7. Sur quelle machine est heberge votre systeeme de fichiers ?

Page 50: Routage IP au niveau hôte - univ-tln.fr

ssh

1. Consulter le manuel de la commande who.

2. Utiliser la commande ssh-keygen pour construire un jeu decles.

3. Consulter le manuel de la commande ssh-keygen pour savoirce que vous devez faire de ces cles !

4. Ecrire un script pour determiner la liste des utilisateursconnectes sur les machines du departement d’informatique.

Page 51: Routage IP au niveau hôte - univ-tln.fr

ping

1. Consulter le manuel de la commande ping

2. Envoyer un ECHO REQUEST a destination du serveur DNS.

3. Envoyer un ECHO REQUEST a destination du serveur DNS,avec un TTL de 1. Commenter.

4. Quelle est la passerelle du site de l’universite connectee aureseau publique ?

5. Ecrire un script base sur ping pour tracer les routes.

6. Comparer les routes obtenues a destination du serveur DNSavec celles qui sont donnees par traceroute.

Page 52: Routage IP au niveau hôte - univ-tln.fr

netcat

1. Consulter le manuel de la commande nc.

2. Lancer nc en ecoute sur le port 31415 de l’interface eth0 devotre poste. Il s’agit d’un serveur!

3. Utiliser la commande netstat pour verifier qu’il existe unprocessus en ecoute sur le port 31415.

4. Utiliser nc a partir d’une autre machine pour vous connecter ace port. Il s’agit d’un client !

5. Ecrire un script cmd.sh qui lit et execute des commandes surl’entree standard, une commande par ligne, les resultats serontplaces sur la sortie standard.

6. Utiliser nc pour executer cmd.sh a distance : nc -l 31415 |./cmd.sh, tout simplement. Le resultat des commandes restesur la machine distante :-(

7. Utiliser un tube de communication (mkfifo), pour renvoyer leresultat des commandes vers le client nc : nc -l 31415 </tmp/pipo | ./cmd.sh > /tmp/pipo.