[technique] Routage par user via VLAN : iptables
Rémi Boulle
remi.boulle at gmail.com
Mar 16 Oct 22:08:17 CEST 2012
Le 15/10/2012 16:09, Helios le Guillou de Creisquer a écrit :
> Hello,
>
> On Mon, Oct 15, 2012 at 03:33:41PM +0200, Rémi Boulle wrote:
>> iptables -t nat -A POSTROUTING -o eth0.3196 -m mark --mark 2 -j SNAT
>> --to-source 91.224.XXX.YYY
>
> Oui mais peut-etre faudrait-il par commencer a marquer les paquets en PREROUTING
> ou dans -t mangle ? et simplifier la regle de POSTROUTING.
>
> Cette regle ne matchera jamais autre chose que ce qui doit DEJA sortir via eth0.3196.
>
> Tu as fait un marking precedemment, aucune raison de le garder la.
>
>> 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
>
> il faut en PREROUTING, marker le paquet des son entree.
MANGLE devrait le gérer ça (si j'ai bien compris) ?
> -> donc ca va selectionner d'apres la rule susdite, la bonne table
> -> donc ca va sortir par eth0.3196
> -> et la tu source-nat.
>
> Pour gerer plusieurs routes par defaut sur un linux, et plus particuliere sur
> debian, j'utilise ca:
>
> http://stor.balios.net/ifrt/
>
> ("ifrt" se rajoute dans /etc/network/if-{up,down}.d/, interfaces est un example d'utilisation).
>
> Jeter un oeuil peut permettre de mieux comprendre comment c'est gere au niveau du flux sur Linux.
>
> en resume:
> - mangle OUTPUT match user set mark
> - rule fwmark 2 table 2
> - ip route table 2 avec la default
> - iptables -t nat -A POSTROUTING avec du sourcenat, sans autre matching que -o eth0.3196
J'ai donc fait dans l'ordre :
ip link add link eth0 name eth0.3196 type vlan id 3196
ip link set eth0.3196 up
ip addr add 91.224.149.172/24 dev eth0.3196
iptables -t mangle -A OUTPUT -m owner --uid-owner toto -j MARK --set-mark 2
ip rule add fwmark 2 table 2
ip route add default via 91.224.149.254 dev eth0.3196 table 2
ip route add 91.224.149.0/24 dev eth0.3196 table 2
iptables -t nat -A POSTROUTING -o eth0.3196 -j SNAT --to-source
91.224.149.172
Pas très concluant, mtr me dit que je passe par eth0 comme avant (mais
d'après Alexandre, c'est normal). Étonnant que links ne répondent pas
(attente de connection) ni un autre navigateur. Il doit manquer le
chemin retour.
Merci,
++
Rémi.
>
> devrait le faire...
>
> A+
>
> PS: Et bonjour a tetaneutral, dont je decouvre la ML :)
>
--
Plus d'informations sur la liste de diffusion technique