Depuis stretch, la commande ifconfig n’est plus installée par défaut. Pour la remettre :
sudo aptitude install net-tools
ping
sudo apt install iputils-ping
pour avoir la commande ping4.
On peut spécifier l’interface de départ d’une requête ICMP via l’option -I , par exemple
ping -I 10.88.2.1 10.88.0.64
dig
Permet de vérifier la résolution des noms de domaine.
Pour l’installer : sudo apt install dnsutils
.
On peut demander une résolution simplement avec :
dig example.org
Par défaut, dig renvoie le champ A s’il existe, et le champ SOA (Start Of Authority) si le domaine demandé n’existe pas.
On peut demander un champ précis en le spécifiant :
dig MX example.org
On peut spécifier un serveur DNS à interroger avec :
dig @1.2.3.4 example.org
On peut demander une résolution inverse :
dig -x 1.2.3.4
On peut aussi demander une résolution inverse avec l’adresse IP inversée, et le suffixe in-addr.arpa
, mais il faut alors spécifier le champ PTR :
dig PTR 4.3.2.1.in-addr.arpa
Test des ports ouverts
Avec netcat :
sudo apt install netcat ## dummy package for netcat-openbsd
puis
nc -z -v example.org 80
ou
nc -z -v -u example.org
pour de l’UDP (ne semble pas indiquer de message d’erreur en cas d’échec ; met environ 3s à conclure à un test réussi ; on peut passer l’option -w 1
pour n’attendre qu’une seconde)
Nom des interfaces réseau
Depuis Stretch, udev possède un mécanisme de noms prédictifs d’interfaces réseau, qui devient activé par défaut, et qui nous donne des noms de type enp6s0
. Ceci peut se désactiver via un paramètre à donner à grub dans le fichier /etc/default/grub :
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
Source (qui explique plusieurs mécanismes réseau)
Une fois ce mécanisme supprimé, nous pouvons choisir le nom “standard” (eth0) que udev donnera aux interfaces réseau via le fichier /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="11:22:33:44:55:66", NAME="eth-motherboard"
Il suffit de modifier l’adresse mac et le nom souhaité pour qu’ils soient opérationnels au prochain boot.
(il peut éventuellement être nécessaire de update-initramfs -k all -u
?)
Interaction de Network-Manager avec /etc/network/interfaces
Depuis quelques versions, Network-Manager gère les connexions qui ont été fixées dans /etc/network/interfaces. Ceci peut s’avérer perturbant si on a besoin d’une connexion complètement fixe en parallèle de NM (par exemple pour du wifi en réseau secondaire).
Ce comportement peut se désactiver. Pour ceci, il faut que le fichier /etc/NetworkManager/NetworkManager.conf
contienne ceci :
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
Reconfiguration d’une interface réseau
Il m’est arrivé qu’une interface refuse de se reconfigurer selon les paramètres du fichier /etc/network/interfaces.
La commande service networking restart renvoyait, de mémoire, “Interface non configurée”. Pareil avec ifup, ifdown.
Finalement, le problème a été résolu grâce à la commande
ip addr flush dev enp4s0
enp4s0 étant évidemment l’interface posant problème.
Création d’une interface virtuelle (dummy)
Cas simple
echo dummy >> /etc/modules
Au chargement du module, un périphérique dummy0
est automatiquement créé, avec une adresse MAC aléatoire.
Si on veut nommer soi-même le périphérique
Comme l’adresse MAC change à chaque boot, on ne peut pas utiliser la méthode via Udev.
On peut donc créer un script qui va créer l’interface, et la renommer, et même changer l’adresse MAC
#!/bin/sh
ip link add dummy0 type dummy
ip link set name my-dummy dev dummy0
ip link set my-dummy address 02:01:02:03:04:08
Ce script peut être appelé manuellement, au boot, ou via le paramètre “pre-up” dans le fichier /etc/network/interfaces
Bridge via le fichier /etc/network/interfaces
Il faut déjà installer le paquet bridge-utils :
sudo apt install bridge-utils
Exemple pour une interface TAP (OpenVPN) :
auto my-bridge
iface my-bridge inet dhcp
bridge_ports eth0 tap0
pre-up openvpn --mktun --dev tap0
bridge_hw 01:02:03:04:0:06 # non obligatoire
post-down openvpn --rmtun --dev tap0
allow-hotplug eth0
Exemple de pont entre une carte physique et une carte virtuelle
auto my-bridge
iface my-bridge inet static
bridge_ports eth0 dummy0
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
pre-up ip link add dummy0 type dummy
post-down ip link delete dummy0
Les interfaces réseau utilisées n’ont pas besoin d’être mentionnées ailleurs dans le fichier.
La mention “auto” sert à démarrer automatiquement la connexion. Si elle n’est pas mentionnée, il faudra ifup my-dev
Configuration sysctl
Pour que le système accepte de transférer les paquets d’un réseau vers un autre (si le poste est conecté à 2 réseaux), il faut activer le forxard IPv4. On peut le faire à la volée avec sudo sysctl -w net.ipv4.ip_forward=1
, et le rendre persistent avec la commande (en root) echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/10-network.conf
.
Pour désactiver l’IPv6, echo net.ipv6.conf.all.disable_ipv6=1 >> /etc/sysctl.d/10-network.conf
.