Attention, avec la commande _ip_ le résultat ne sera pas visible avec _ifconfig_
si aucun label du type eth0:N n'est donné à l'interface ; on ne verra l'adresse qu'avec un :
~~~
# ip addr show
~~~
Notons que dans certains cas particuliers (comme le besoin de préciser le nom de l'interface
dans une commande _iptables_) on souhaite avoir un nom d'interface virtuelle sans les ":".
On utilisera donc simplement un label sans ":" :
~~~
# ip addr add 192.0.43.13/24 dev label eth00
# iptables -t nat -A POSTROUTING -o eth00 [...]
~~~
## Configuration serveur(s) DNS
Le fichier _/etc/hosts_ permet d'indiquer manuellement des enregistrements DNS, du type :
~~~
127.0.0.1 ad.doubleclick.net
~~~
Pour note, ces enregistrements sont par défaut prioritaires sur les réponses des serveurs DNS
(et pour rappel, les commandes dig et host n'utilisent PAS _/etc/hosts_).
La configuration du (ou des) serveur(s) DNS s'effectue dans le fichier _/etc/resolv.conf_.
Voici un exemple classique :
~~~
search example.com
nameserver 192.0.42.53
nameserver 192.0.43.53
options timeout:2 attempts:2
~~~
Pour des précisions sur les options possibles : _man resolv.conf_
Note : si l'on utilise Postfix, il faut le redémarrer suite à un changement dans _/etc/resolv.conf_ (car il est chrooté par dédaut et il gère sa propre copie dans /var/spool/postfix)
À partir de Stretch, certaines machines sont installés d'office avec networkd (qui fait partie de systemd), on peut vouloir migrer à ifup (`/etc/network/interfaces`) pour plusieurs raisons (compatibilité, …).
Si besoin de « haute performance », on appliquera la configuration [sysctl](https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt) suivante :
*`net.nf_conntrack_max=262144` (utiliser `conntrack -L` pour bien ajuster la valeur)
*`net.core.somaxconn=1024`
*`net.ipv4.tcp_max_syn_backlog=1024`
*`net.ipv4.tcp_tw_reuse=1`
*`net.ipv4.tcp_fin_timeout=30`
*`net.ipv4.ip_local_port_range=2000 65000`
Si cela ne suffit pas, voici quelques pistes pour aller plus loin :
* lire <http://www.nateware.com/linux-network-tuning-for-2013.html> et notamment les options `net.core.*mem*`, `net.core.optmem_max`, `net.ipv4.tcp_*mem`, `net.core.netdev_max_backlog`, `net.ipv4.tcp_max_tw_buckets`
* augmenter le buffer de certains cartes réseau avec [ethtool]() : voir `ethtool -g eth0` et modifier avec `ethtool -G eth0 rx/rx-mini/rx-jumbo/tx NNNN`
puis sur ce serveur on spécifie l'IP déplacée (par exemple 192.0.2.42), l'IP du routeur (par exemple 192.0.2.254) et la nouvelle adresse MAC (par exemple 52:54:00:12:34:56) :
Il arrive qu'on veuille vérifier qu'il est possible de joindre un port TCP au travers d'un firewall, alors que rien n'écoute sur ce port à ce moment là. On peut alors utiliser `socat(1)` ou `nc(1)` pour créer un serveur temporaire, qui imprimera sur la sortie standard ce qui arrive sur le port. Exemple sur le port 2121, en écoute sur toutes les interfaces du serveur :
Lorsqu'on souhaite consulter ce qui passe en TCP entre 2 processus ou serveurs (par exemple entre HAProxy et Apache), pour analyser par exemple les en-têtes échangés… on peut utiliser tcpdump, mais cela n'est pas toujours aisé.
Il est possible d'intercaler `socat(1)` entre les 2 processus. Il fera le passe-plat mais nous indiquera aussi (sur la sortie standard) ce qui est échangé.
Ici on ouvre localement le port 8080 et on renvoie le flux vers le port 8080 de example.com.
# systemctl restart networking; ip a d 192.0.2.42/24 dev eth0; ip a a 192.0.2.42/24 dev br0; ip r d default via 192.0.2.1 dev eth0; ip r a default via 192.0.2.1 dev br0
~~~
Ainsi, si l'on perd la main, la machine revient accessible en quelques minutes.