[technique] Routage par user via VLAN : iptables

Alexandre Chataignon alexandre at chataignon.net
Lun 15 Oct 19:18:26 CEST 2012


On Mon, 15 Oct 2012 15:33:41 +0200
Rémi Boulle <remi.boulle at gmail.com> wrote:

> Bonjour,
>
 
Bonjour,

> [snip]
> iptables -t mangle -A OUTPUT -m owner --uid-owner toto -j MARK
> --set-mark 2

Ça me parait correct, mais je n'ai jamais expérimenté le match owner.
Tu vérifies bien que les compteurs augmentent quand tu tentes d'envoyer
les paquets avec l'utilisateur en question ?

> 
> On les reroute vers eth0.3196 (source routing) :
> 
> iptables -t nat -A POSTROUTING -o eth0.3196 -m mark --mark 2 -j SNAT
> --to-source 91.224.XXX.YYY

Je ne suis pas sur que cette ligne soit réellement nécessaire, je pense
même qu'elle peut nuire. En effet, tu essaie de SNATer avec des paquets
qui sortent déjà de ton PC (le match uid ne marche qu'en OUTPUT), c'est
donc inutile et ça peut créer des effets de bords.

> 
> Je "connecte" la table de routage aux paquets marqués :
> 
> ip rule add fwmark 2 table 2
> 
> Et là on indique qu'il faut sortir via 91.224.149.254 (qui est la GW
> chez TTN ?) :
> 
> ip route add default via 91.224.149.254 dev eth0.3196 table 2

Tout ça me parait correct.

> 
> Et là, cela ne fonctionne pas, toto continue de sortir via eth0 (mtr
> free.fr me l'indique).
> 
> Est-ce dans le bon ordre ? Il n'y a pas un module du noyau à charger
> ou autre ? Merci.
> ++

Donc voilà, j'ai pas trop de solution autre que « regarde bien si tes
compteurs iptables semblent correspondre », et essayer d'enlever la
règle de NAT.

Une dernière chose : ping et mtr sont en SUID root pour des raisons™
(une histoire de capacités pour les sockets ICMP (enfin c'est plus
nécessaire depuis les derniers noyaux il me semble mais bon ping et
mtr n'en prennent pas encore compte)), du coup, peut être que c'est
juste ton test qui fausse tout.

--
Alexandre Chataignon



Plus d'informations sur la liste de diffusion technique