iptables
Pare-feu de Linux, voir netfilter. Tout faire en sudo.
Plusieurs outils existent dans le parefeu:
iptablesip6tablesebtablesarptables
Sources à explorer:
On insère dans des tables des règles qui vont agir sur des chaînes.
La table filter (par défaut) contient les chaînes OUTPUT, INPUT et FORWARD. Elle permet d'accepter (-j ACCEPT) ou rejeter (-j DROP) des paquets.
La table nat contient les chaînes PREROUTING, POSTROUTING et OUTPUT. Elle permet de modifier des paquets avant de les traiter.
On indique quelle table on manipule avec le paramètre -t.
Afficher les règles en place
iptables -L iptables -t nat -L watch --interval=1 'sudo iptables -L -v -n | grep -v "0 0 "' # voir en temps réel les règles qui sont utilisées iptables -S # donne les règles sous forme de commandes iptables
Exporter facilement les règles:
iptables-save
Afficher les règles de la table NAT:
iptables -L --line-numbers -t nat
Supprimer la règle n°1 en POSTROUTING de la table NAT:
(le numéro provient de la liste obtenue avec la commande précédente)
iptables -t nat -D POSTROUTING 1
Faire du SNAT
SNAT: Source NAT: transformer l'IP source en A des paquets à destination de B:
iptables -t nat -A POSTROUTING -d B -j SNAT --to-source A
Changer l'IP de destination des paquets, pour les prendre en charge
sudo iptables -t nat -A PREROUTING -s 192.168.12.2 -j DNAT --to 192.168.12.100 # ou sudo iptables -t nat -A PREROUTING -s 192.168.12.2 -d 192.168.12.1 -j REDIRECT
Les paquets venant de 192.168.12.2 (vers 192.168.12.1) sont traités par notre machine (qui a l'IP 192.168.12.100).
PREROUTING signifie qu'on applique les changements sur le paquets dès qu'il arrive sur l'interface réseau: une règle iptables existe pour ce paquet, donc il est pris en charge par la machine et n'est pas forwardé.
Autoriser le forwarding de paquets
sudo iptables -P FORWARD ACCEPT
