J'aimerais qu'un utilisateur donné ait une adresse IP source spécifique. Pour ce faire, j'ai ajouté une adresse IP secondaire à l'interface réseau et j'ai essayé d'imposer l'adresse IP source en utilisant ip6tables et policy routing. Résumé :
- Tout le trafic IPv6 est acheminé via une interface OpenVPN IPv4 (tap0), la passerelle est
2001:db8::1
. - Si l'utilisateur est
someuser
l'adresse source doit être2001:db8::3
- Sinon, l'adresse source est
2001:db8::2
.
Les routes et adresses par défaut sont configurées comme suit :
ip -6 addr add 2001:db8::2/112 dev tap0
ip -6 route add default via 2001:db8::1 src 2001:db8::2 dev tap0
Pour les someuser
je marque tous les paquets sortants et j'essaie d'acheminer ces paquets avec une adresse source différente en utilisant une table de routage séparée. Ces tables sont configurées avec :
ip6tables -t mangle -A OUTPUT -m owner --uid-owner someuser -j MARK --set-mark 123
ip -6 rule add fwmark 123 table 1002
ip -6 addr add 2001:db8::3/112 dev tap0
ip -6 route add default via 2001:db8::1 src 2001:db8::3 dev tap0 table 1002
Pour une raison ou une autre, tous les trafics ont encore le 2001:db8::2
adresse source. Je constate que l'adresse ip6tables
est respectée, mais l'IP source est toujours erronée. Vérifié avec NFLOG target + Wireshark et avec curl ip.appspot.com
.
Une idée de ce que j'ai fait de mal ?