Déterminez les cartes réseaux dont vous disposez sur votre machine
avec les commandes scanpci ou lspci.
Déterminez au moyen de ethtool -i eth0 par exemple quels sont
les modules qui contiennent les drivers de ces cartes. Vérifiez
que ces modules sont bien chargés.
Déterminez quelle est la configuration actuelle de vos interfaces réseaux avec la commande ifconfig.
La configuration des interfaces se fait au démarrage au moyen, entre autre, du fichier /etc/network/interfaces. Vérifiez que la configuration est bien faite via DHCP.
Visualisez les échanges réalisés par la configuration DHCP. Pour cela, vous utiliserez ethereal et vous lancerez dhcpcd-bin -n pour renouveler votre bail, dhcpcd-bin -k pour arrêter DHCP, et dhcpd-bin eth-bas pour configurer l'interface. Pourquoi faut il utiliser la machine voisine ou une autre de vos cartes pour visualiser les messages DCHP_DISCOVER et DHCP_OFFER.
Arrêtez l'interface eth0 : ifdown eth0.
Utilisez la commande ifrename pour renommer vos interfaces de telle sorte que l'interface du bas (eth0) s'appelle eth-bas et que celle du haut (eth1) s'appelle eth-haut. Pour cela, il vous faut écrire un fichier de configuration qui associe un nom à une adresse MAC (mot clef mac) ou à un nom de module (mot clef driver) et lancer le commande ifrename -c conf, où conf est le nom de votre fichier de configuration qui contient par exemple:
eth-bas mac 00:0F:1F:44:E2:3E
Modifiez maintenant fichier de configuration /etc/network/interfaces afin de prendre en compte le nouveau nom de l'interface et configurer votre interface statiquement plutôt que par DHCP (man interfaces)
Vérifiez que votre configuration est valide en utilisant les commandes ifdown et ifup pour reconfigurer votre interface.
Trouvez comment modifier l'adresse MAC en utilisant la commande ifconfig (man ifconfig) sachant que l'adresse est précisée après l'option hw ether et qu'il faut que l'interface soit inactive au moment du changement d'adresse.
Vérifiez au moyen de la commande ping que vous pouvez bien joindre les autres machines. Visualisez au moyen de la commande ethereal les paquets échangés.
Visualisez la table d'association ARP au moyen de la commande arp -a. Tentez de visualiser un échange ARP, pour cela, vous pourrez supprimer une des entrées de la table (arp -d).
Mettez-vous d'accord avec un de vos voisins pour réaliser un configuration statique ARP. Pour cela, faire en sorte que l'interface de votre voisin ne réponde plus aux requêtes ARP et n'en émette plus avec l'option -arp de la commande ifconfig (vérifiez c'est bien le cas). Ajoutez ensuite une entrée statique pour votre voisin dans votre table ARP et une entrée pour vous dans la sienne et vérifiez que vous arrivez maintenant à le joindre.
Visualisez au moyen de la commande route -n la table de routage de votre machine.
Créez avec cinq de vos voisins un réseau reliant vos six machines sous la forme d'un anneau en utilisant vos deux interfaces comme dans la figure suivante :
Pour configurer une interface au moyen de ifconfig on écrit par exemple:
ifconfig eth-bas 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 upPour ajouter une route au moyen de route on écrit par exemple:
route add -net 192.167.2.0/24 gw 192.168.1.1 route add default gw 193.4.5.2Pour que votre machine accepte de transmettre les datagrammes qui ne lui sont pas destinés (qu'elle route) modifiez son comportement au moyen de:
echo 1 > /proc/sys/net/ipv4/ip_forward for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i done
Pour tester votre réseau vous utiliserez ping et ethereal
Déterminez le TTL utilisé par défaut par Linux. Le modifier dans le pseudo-fichier /proc/sys/net/ipv4/ip_default_ttl.
Testez le comportement de la commande traceroute.
Tous les datagrammes qui transitent par votre machine traversent un ensemble de tables (file d'attentes) qui sont gérées via la commande iptables. Chacune de ces files contient un ensemble de chaînes qui réalisent un ensemble de filtrages/transformations et s'appliquent à un type particulier de datagrammes. Il y a en tout trois files :
iptables -A INPUT -p TCP -s 0/0 -i eth0 -d 192.168.1.1 -j ACCEPTLes actions principales de la commande iptables sont les suivantes :
On souhaite réaliser avec deux de vos voisins le réseau de la figure suivante :
Définissez un plan d'adressage et faire en sorte que votre machine intermédiaire ne réponde plus aux requêtes ICMP si elles proviennent du réseau extérieur. Vérifiez que vous pouvez encore le faire en sens inverse.
Réalisez une configuration par défaut qui rejette tous les flux FORWARD sur votre machine intermédiaire (iptables -P ...).
Vérifiez que plus rien ne passe.
Ajoutez une règle sur le firewall permettant de faire de la translation d'adresse (SNAT) entre l'Intranet et l'Internet, et ajouter les règles FORWARD qui permettent de faire transiter les flux sortant vers l'Intranet et n'autorisant que les flux établis provenant de l'Internet.
Sur la machine de votre Intranet, ajoutez le service chargen en décommentant la ligne correspondant à ce service dans le fichier /etc/inetd.conf et en relançant le daemon inetd au moyen de /etc/init.d/inetd restart (vérifiez également qu'il n'est pas présent sur la machine intermédiaire). Ajoutez une règle de translation (DNAT) d'adresse en entrée qui permette d'accéder à votre service depuis l'Internet comme s'il était sur votre machine intermédiaire ainsi que la règle FORWARD lui permettant de transiter par la machine intermédiaire.