[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