[article] Ajout du début de l'article sur la migration vers nftables
This commit is contained in:
parent
2635c3b6cc
commit
4fb38ca1d4
1 changed files with 90 additions and 0 deletions
90
content/migration_nftables.mdown
Normal file
90
content/migration_nftables.mdown
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
Title: Migration iptables -> nftables
|
||||||
|
Author: kleph
|
||||||
|
Email: kleph@kleph.info
|
||||||
|
Category: Blog
|
||||||
|
Date: 2015/02/05
|
||||||
|
Tags: Linux, Internet
|
||||||
|
Lang: fr
|
||||||
|
|
||||||
|
|
||||||
|
Un article qui va parler de la migration vers nftables de mon routeur.
|
||||||
|
|
||||||
|
# premier test : masquarade
|
||||||
|
Avant de migrer le firewall du routeur principal, j'ai voulu commencer par plus petit. J'ai un VPN sur une autre machine qui fait de la masquarade en sortie.
|
||||||
|
Ce qui tombe assez bien, la masquarade vient d'être ajoutée dans la version 3.18 du noyau.
|
||||||
|
|
||||||
|
|
||||||
|
## Avant:
|
||||||
|
Voici le script précédent que je vais remplacer :
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# On efface les règles définies :
|
||||||
|
iptables -t filter -F
|
||||||
|
iptables -t nat -F
|
||||||
|
|
||||||
|
# Efface les chaînes définies :
|
||||||
|
iptables -X
|
||||||
|
|
||||||
|
# Politique par défaut :
|
||||||
|
iptables -P INPUT ACCEPT
|
||||||
|
iptables -P OUTPUT ACCEPT
|
||||||
|
iptables -P FORWARD ACCEPT
|
||||||
|
|
||||||
|
# forward entre interfaces réseau
|
||||||
|
echo "1" > /proc/sys/net/ipv4/ip_forward
|
||||||
|
|
||||||
|
# nat VPN (for jabber client on hyperion)
|
||||||
|
iptables -t nat -o tun0 -A POSTROUTING -j MASQUERADE
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Après
|
||||||
|
On trouve un peu de documentation sur le net [TODO: liens].
|
||||||
|
Parmis les changements notables dès le départ, c'est que les tables et les chaînes classiques d'iptables ne sont pas créées par défaut. Ainsi que le système de politique par défaut.
|
||||||
|
Il faut donc les déclarer.
|
||||||
|
|
||||||
|
Ensuite, la masquarade est un cas particulier de source NAT, l'adresse de remplacement n'est pas définie explicitement, mais c'est l'adresse de sortie qui est remplacée à la volée, une fois la décision de routage prise, donc dans la chaîne postrouting.
|
||||||
|
[TODO lien vers le fonctionnement d'iptables]
|
||||||
|
Du fait que les chaînes ne soient pas créer par défault, il faut aussi rajouter la chaîne prerouting, pour que la traduction inverse soit effectuée au retour des paquets.
|
||||||
|
|
||||||
|
Voici donc ce que ça donne :
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
# activate masquerade
|
||||||
|
|
||||||
|
IF_OUTPUT=tun0
|
||||||
|
|
||||||
|
# ensure iptable_nat is not loaded
|
||||||
|
lsmod | grep -q iptable_nat
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if [ ${ret} -eq 0 ]; then
|
||||||
|
echo "nft usage is not compatible with iptables_nat"
|
||||||
|
echo "please remove iptable_nat module"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove existing rules
|
||||||
|
nft flush ruleset
|
||||||
|
|
||||||
|
# masquerade
|
||||||
|
nft add table nat
|
||||||
|
# add prerouting to translate back the address when packets come back
|
||||||
|
nft add chain nat prerouting { type nat hook prerouting priority 0\; }
|
||||||
|
|
||||||
|
# postrouting to translate source address
|
||||||
|
nft add chain nat postrouting { type nat hook postrouting priority 0\; }
|
||||||
|
|
||||||
|
# masquerade effective rule
|
||||||
|
nft add rule nat postrouting oif ${IF_OUTPUT} masquerade
|
||||||
|
|
||||||
|
# active packet forwarding between interfaces (routing)
|
||||||
|
echo "1" > /proc/sys/net/ipv4/ip_forward
|
||||||
|
# ipv6
|
||||||
|
# /proc/sys/net/ipv6/conf/all/forwarding = 1
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue