Prozess oder Benutzer an bestimmte IP binden (Linux)

7

Ich habe 3 Nicht-Root-Benutzer auf meinem Server und möchte jedem von ihnen die verschiedenen IP-Adressen geben (ich habe mehrere IPs auf einer Netzwerkschnittstelle). Zum Beispiel hat Benutzer1 192.168.1.2, Benutzer2 - 192.168.1.3 und so weiter. Oder, wenn es unmöglich ist, wie kann ich den spezifischen Prozess an die angegebene IP-Adresse binden (ich schlage vor, dass es mit iptables möglich ist, aber wie?). Vielen Dank.

artem
quelle
Können Sie bitte aus Neugier den Anwendungsfall für dieses Szenario beschreiben?
Ztron
1
Eine nützliche Sache, die Sie damit tun können, ist das Einrichten eines Tor-Relais- / Ausgangsknotens. Da viele Sites die IP-Adresse eines Tor-Exit-Knotens verbieten, ist es im Allgemeinen am besten, eine IP-Adresse auf einer dedizierten IP-Adresse einzurichten, die Sie nicht für andere Zwecke verwenden (insbesondere allgemeines, nicht anonymes Surfen im Internet). Mit dem folgenden Befehl können Sie den gesamten Datenverkehr vom tor-Daemon (der unter seinem eigenen Benutzernamen ausgeführt werden soll) über eine bestimmte IP-Adresse weiterleiten. Das Relay kann sich weiterhin in einer eigenen DMZ hinter Ihrer Firewall befinden, jedoch nicht durchlaufen, ohne dass dies zu Konflikten mit Ihrer primären ausgehenden IP führt.
Par
Eine andere Sache, die Sie tun können (ein illegitimer Zweck), ist dies für Absprachen zu verwenden. Nehmen wir zum Beispiel an, Sie spielen Online-Poker - auf den meisten Websites ist nicht mehr als ein Benutzer pro IP-Adresse zu einem bestimmten Zeitpunkt zulässig, um angeblich zu verhindern, dass Personen im selben Raum sitzen und an denselben Tischen spielen, an denen sie Informationen austauschen / betrügen können. Auf diese Weise können Sie eine Umgebung einrichten, in der sich mehrere Personen (oder Bots) im selben Raum befinden und an denselben Tischen spielen können, da jeder Benutzer anscheinend von einer anderen IP-Adresse stammt.
Par
Meine Argumentation ist, dass ich mit meinem kleinen Kind eine Workstation und einen Laptop teile. Ich habe ein separates VLAN für ihn, das Dinge wie Tageszeit und zusätzliche Firewall-Regeln erzwingt. Seine Geräte leben in diesem Subnetz, aber ich möchte nicht, dass meine es tun.
andyortlieb

Antworten:

11
iptables -t nat -A POSTROUTING -m owner --uid-owner user1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -m owner --uid-owner user2 -j SNAT --to-source 192.168.1.3
iptables -t nat -A POSTROUTING -m owner --uid-owner user3 -j SNAT --to-source 192.168.1.4

Es liegt in Ihrer Verantwortung sicherzustellen, dass (a) Sie die POSTROUTING-Nat-Kette nicht anderweitig verwenden, damit diese Regeln mit nichts anderem in Konflikt stehen, und (b) alle diese IP-Adressen auf Ihrer Netzwerkkarte vorhanden sind (Sie werden es nicht tun) sonst viele Antworten hören).

Dies wirkt sich auch nur auf Datenverkehr aus, der lokal von Prozessen stammt, die diesen Benutzern gehören. Wenn dies Benutzer sind, die Netzwerk-Listening-Daemons einrichten, ist ein anderer Ansatz erforderlich, um Antworten zu verarbeiten. Wenn der Server als Router fungiert, funktioniert dies nicht. Aber Sie haben nicht gesagt, dass einer dieser Umstände zutrifft, deshalb habe ich die Probleme nicht angesprochen.

MadHatter
quelle
Ich erwarte nur ausgehende Netzwerkanforderungen (wie z. B. Surfen im Internet). Ich glaube nicht, dass eine Portbindung erforderlich sein wird. Vielen Dank.
Artem
@MadHatter Ihre Lösung scheint bei mir nicht zu funktionieren. Ich habe hier eine Frage geschrieben. Unix.stackexchange.com/questions/564163/… Können Sie sehen, ob Sie mir möglicherweise beim Debuggen helfen können?
Jenso
@jenso Ihre geschriebene Frage bezieht sich auf etwas Subtiles, aber Wichtiges: Sie möchten keine Quelladressen pro Benutzer, sondern Routing-Tabellen pro Benutzer. Ich werde keine Fragen zu unix.SE beantworten, aber es kann sein, dass Sie das wollen iproute2.
MadHatter