3 votes

Modifier l'adresse IP source en fonction de l'utilisateur du système

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 être 2001: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 ?

2voto

berto Points 221

Edit : j'ai mal compris votre message au début, j'ai réécrit la réponse.

Lorsque vous faites du routage, vous ne modifiez pas le contenu des paquets, vous choisissez simplement la bonne interface vers laquelle les transmettre. Cela ne changera donc pas l'adresse IP source que vous avez obtenue. Elle ira à la bonne table de routage et à la bonne interface, mais c'est tout. Pour ce faire, vous avez besoin de NAT .

Vous devez donc vous faire passer pour un POSTROUTING, par exemple avec :

/sbin/ip6tables -A POSTROUTING -t nat -m mark --mark 123 -j SNAT --to-source 2001:db8::3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X