5. La séquence de tests

Une fois que les configurations sont en place à chaque extrémité, il ne reste plus qu'à tester cette nouvelle liaison WAN virtuelle. Comme toute séquence de tests qui se respecte, on remonte les couches de la modélisation une à une.

Au niveau commutation de trame

On affiche la table des adresses MAC connues du commutateur wan-sw à partir de la console du système hôte.

$ sudo ovs-appctl fdb/show wan-sw
 port  VLAN  MAC                Age
    1     0  de:ad:be:ef:00:01    9
    2     0  de:ad:be:ef:00:03    9

On retrouve bien les adresses MAC «fantaisistes» attribuées aux deux routeurs lors du lancement des machines virtuelles. Voir la section intitulée « Instances de systèmes virtuels ».

Au niveau du routeur Hub
  • Les journaux système révèlent l'établissement de la session PPPoE suivie du lancement du démon PPP et des transactions LCP et NCP pour les deux protocoles de couche réseau IPv4 et IPv6.

    hub pppoe-server[106]: Session 1 created for client de:ad:be:ef:00:03 (203.0.113.10) on eth1 using Service-Name ''
    hub pppd[106]: pppd 2.4.6 started by etu, uid 0
    hub pppd[106]: using channel 4
    hub pppd[106]: Using interface ppp0
    hub pppd[106]: Connect: ppp0 <--> /dev/pts/1
    hub pppd[106]: sent [LCP ConfReq id=0x1 <auth chap MD5> <magic 0xcd537d21>]
    hub pppd[106]: rcvd [LCP ConfAck id=0x1 <auth chap MD5> <magic 0xcd537d21>]
    hub pppd[106]: rcvd [LCP ConfReq id=0x1 <mru 1492> <magic 0xf9d3d6a1>]
    hub pppd[106]: sent [LCP ConfAck id=0x1 <mru 1492> <magic 0xf9d3d6a1>]
    hub pppd[106]: sent [LCP EchoReq id=0x0 magic=0xcd537d21]
    hub pppd[106]: sent [CHAP Challenge id=0xad <d3ea7672130fd1d22b91cfbe6e1355da>, name = "hub"]
    hub pppd[106]: rcvd [LCP EchoReq id=0x0 magic=0xf9d3d6a1]
    hub pppd[106]: sent [LCP EchoRep id=0x0 magic=0xcd537d21]
    hub pppd[106]: rcvd [LCP EchoRep id=0x0 magic=0xf9d3d6a1]
    hub pppd[106]: rcvd [CHAP Response id=0xad <d66b72abdc872fdba648a68009be6514>, name = "spoke"]
    hub pppd[106]: sent [CHAP Success id=0xad "Access granted"]
    hub pppd[106]: Initializing PAM (2) for user spoke
    hub pppd[106]: ---> PAM INIT Result = 0
    hub pppd[106]: Attempting PAM account checks
    hub pppd[106]: PAM Account OK for spoke
    hub pppd[106]: PAM Session opened for user spoke
    hub pppd[106]: user spoke logged in on tty  intf ppp0
    hub pppd[106]: local  LL address fe80::5c3a:77a1:aad1:a619
    hub pppd[106]: remote LL address fe80::b474:5671:fc2c:ddd8
    hub pppd[106]: local  IP address 203.0.113.1
    hub pppd[106]: remote IP address 203.0.113.10
  • Une entrée de la table de routage a bien été définie en fonction des éléments donnés ci-dessus.

    # ip route ls
    default via 192.0.2.1 dev eth0 
    192.0.2.0/26 dev eth0  proto kernel  scope link  src 192.0.2.10 
    203.0.113.10 dev ppp0  proto kernel  scope link  src 203.0.113.1

    Côté IPv6, l'activation de l'interface ppp0 a bien été prise en compte.

    # ip -6 route ls dev ppp0
    fe80::/10  metric 1  pref medium
    fe80::/10  proto kernel  metric 256  pref medium
  • Pour identifier la liste des processus associés au démon pppoe-server, on peut utiliser une commande du type suivant.

    # pstree -p $(pidof pppoe-server)
    pppoe-server(10628)───pppd(10692)───sh(10693)───pppoe(10695)

    Un autre affichage donne la liste des arguments associés aux démons. Le lancement du démon pppd via pppoe-server impose une liste de paramètres autres que ceux définis dans le fichier /etc/ppp/pppoe-server-options.

    # ps -fwwp $(pgrep -d, ppp)
    UID        PID  PPID  C STIME TTY          TIME CMD
    root     10628     1  0 oct.10 ?       00:00:00 pppoe-server -I eth1 -C BRAS -L 203.0.113.1 -p /etc/ppp/ip-range
    root     10692 10628  0 oct.10 ?       00:00:00 pppd pty /usr/sbin/pppoe -n -I eth1 -e 1:de:ad:be:ef:00:03 -S '' \
            file /etc/ppp/pppoe-server-options \
            203.0.113.1:203.0.113.10 \
            nodetach \
            noaccomp \
            nobsdcomp \
            nodeflate \
            nopcomp \
            novj \
            novjccomp \
            default-asyncmap
    nobody   10695 10693  0 oct.10 ?       00:00:00 /usr/sbin/pppoe -n -I eth1 -e 1:de:ad:be:ef:00:03 -S
Au niveau du routeur Spoke
  • Comme avec l'autre extrémité du lien point à point, les journaux système montrent les phases de l'établissement de la session PPPoE avant le dialogue PPP. En revanche, c'est le code fourni par le noyau Linux (kernel) qui est utilisé cette fois-ci.

    spoke pppd[2211]: Plugin rp-pppoe.so loaded.
    spoke pppd[2218]: pppd 2.4.6 started by etu, uid 0
    spoke pppd[2218]: Failed to disconnect PPPoE socket: 114 Operation already in progress
    spoke pppd[2218]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
    spoke pppd[2218]:  dst ff:ff:ff:ff:ff:ff  src de:ad:be:ef:00:03
    spoke pppd[2218]:  [service-name] [host-uniq  aa 08 00 00]
    spoke pppd[2218]: Recv PPPOE Discovery V1T1 PADO session 0x0 length 44
    spoke pppd[2218]:  dst de:ad:be:ef:00:03  src de:ad:be:ef:00:01
    spoke pppd[2218]:  [AC-name BRAS] [service-name] [AC-cookie  4a f2 52 4d 60 60 27 c6 00 63 97 78 35 3b 93 03 1f 1f 00 00] [host-uniq  aa 08 00 00]
    spoke pppd[2218]: Send PPPOE Discovery V1T1 PADR session 0x0 length 36
    spoke pppd[2218]:  dst de:ad:be:ef:00:01  src de:ad:be:ef:00:03
    spoke pppd[2218]:  [service-name] [host-uniq  aa 08 00 00] [AC-cookie  4a f2 52 4d 60 60 27 c6 00 63 97 78 35 3b 93 03 1f 1f 00 00]
    spoke pppd[2218]: Recv PPPOE Discovery V1T1 PADS session 0x4 length 12
    spoke pppd[2218]:  dst de:ad:be:ef:00:03  src de:ad:be:ef:00:01
    spoke pppd[2218]:  [service-name] [host-uniq  aa 08 00 00]
    spoke pppd[2218]: PADS: Service-Name: ''
    spoke pppd[2218]: PPP session is 4
    spoke pppd[2218]: Connected to de:ad:be:ef:00:01 via interface eth1
    spoke pppd[2218]: using channel 4
    spoke pppd[2218]: Using interface ppp0
    spoke pppd[2218]: Connect: ppp0 <--> eth1
    spoke pppd[2218]: sent [LCP ConfReq id=0x4 <mru 1492> <magic 0xf4de2406>]
    spoke pppd[5046]: rcvd [LCP ConfAck id=0x1 <mru 1492> <magic 0xf9d3d6a1>]
    spoke pppd[5046]: sent [LCP EchoReq id=0x0 magic=0xf9d3d6a1]
    spoke pppd[5046]: rcvd [LCP EchoReq id=0x0 magic=0xcd537d21]
    spoke pppd[5046]: sent [LCP EchoRep id=0x0 magic=0xf9d3d6a1]
    spoke pppd[5046]: rcvd [CHAP Challenge id=0xad <d3ea7672130fd1d22b91cfbe6e1355da>, name = "hub"]
    spoke pppd[5046]: sent [CHAP Response id=0xad <d66b72abdc872fdba648a68009be6514>, name = "spoke"]
    spoke pppd[5046]: rcvd [LCP EchoRep id=0x0 magic=0xcd537d21]
    spoke pppd[5046]: rcvd [CHAP Success id=0xad "Access granted"]
    spoke pppd[5046]: CHAP authentication succeeded: Access granted
    spoke pppd[5046]: CHAP authentication succeeded
    spoke pppd[5046]: peer from calling number DE:AD:BE:EF:00:01 authorized
    spoke pppd[5046]: sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
    spoke pppd[5046]: sent [IPV6CP ConfReq id=0x1 <addr fe80::b474:5671:fc2c:ddd8>]
    spoke pppd[5046]: rcvd [IPCP ConfReq id=0x1 <addr 203.0.113.1>]
    spoke pppd[5046]: sent [IPCP ConfAck id=0x1 <addr 203.0.113.1>]
    spoke pppd[5046]: rcvd [IPV6CP ConfReq id=0x1 <addr fe80::5c3a:77a1:aad1:a619>]
    spoke pppd[5046]: sent [IPV6CP ConfAck id=0x1 <addr fe80::5c3a:77a1:aad1:a619>]
    spoke pppd[5046]: rcvd [IPCP ConfRej id=0x1 <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
    spoke pppd[5046]: sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>]
    spoke pppd[5046]: rcvd [IPV6CP ConfAck id=0x1 <addr fe80::b474:5671:fc2c:ddd8>]
    spoke pppd[5046]: local  LL address fe80::b474:5671:fc2c:ddd8
    spoke pppd[5046]: remote LL address fe80::5c3a:77a1:aad1:a619
    spoke pppd[5046]: Script /etc/ppp/ipv6-up started (pid 5112)
    spoke pppd[5046]: rcvd [IPCP ConfNak id=0x2 <addr 203.0.113.10>]
    spoke pppd[5046]: sent [IPCP ConfReq id=0x3 <addr 203.0.113.10>]
    spoke pppd[5046]: rcvd [IPCP ConfAck id=0x3 <addr 203.0.113.10>]
    spoke pppd[5046]: not replacing default route to eth0 [192.0.2.1]
    spoke pppd[5046]: local  IP address 203.0.113.10
    spoke pppd[5046]: remote IP address 203.0.113.1
    spoke pppd[5046]: Script /etc/ppp/ip-up started (pid 5114)
    spoke pppd[5046]: Script /etc/ppp/ipv6-up finished (pid 5112), status = 0x0
    spoke pppd[5046]: Script /etc/ppp/ip-up finished (pid 5114), status = 0x0
  • On retrouve une entrée symétrique dans la table de routage. Il faut cependant noter que la route par défaut IPv4 n'a pas été remplacée par l'activation du lien WAN. C'est un problème sur lequel il faut revenir par la suite.

    # ip route ls
    default via 192.0.2.1 dev eth0 
    192.0.2.0/26 dev eth0  proto kernel  scope link  src 192.0.2.11 
    203.0.113.1 dev ppp0  proto kernel  scope link  src 203.0.113.10

    Côté IPv6, l'activation de l'interface ppp0 a bien été prise en compte.

    # ip -6 route ls dev ppp0
    fe80::/10  metric 1  pref medium
    fe80::/10  proto kernel  metric 256  pref medium
  • Comme le noyau fournit l'essentiel du code, un seul processus est présent en espace utilisateur.

    # ps -fwwp $(pgrep -d, ppp)
    UID        PID  PPID  C STIME TTY          TIME CMD
    root      5046     1  0 oct.10 ?       00:00:00 /usr/sbin/pppd call dsl-provider
Au niveau réseau

Les tests traditionnels ICMP et ICMP6 confirment que les deux routeurs peuvent échanger des paquets. Depuis le routeur spoke, on lance les commandes suivantes.

$ ping -c2 203.0.113.1
PING 203.0.113.1 (203.0.113.1) 56(84) bytes of data.
64 bytes from 203.0.113.1: icmp_seq=1 ttl=64 time=1.12 ms
64 bytes from 203.0.113.1: icmp_seq=2 ttl=64 time=0.845 ms

--- 203.0.113.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.845/0.987/1.129/0.142 ms
$ ping6 -c2 fe80::5c3a:77a1:aad1:a619%ppp0
PING fe80::5c3a:77a1:aad1:a619%ppp0(fe80::5c3a:77a1:aad1:a619) 56 data bytes
64 bytes from fe80::5c3a:77a1:aad1:a619: icmp_seq=1 ttl=64 time=1.28 ms
64 bytes from fe80::5c3a:77a1:aad1:a619: icmp_seq=2 ttl=64 time=0.808 ms

--- fe80::5c3a:77a1:aad1:a619%ppp0 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.808/1.044/1.281/0.238 ms