Posso limitare un utente (e le sue app) a un'unica interfaccia di rete?


15

In realtà ho due scenari per applicare questo:

  1. Multiseat Desktop: due connessioni di rete entrambe con gateway Internet e due account che svolgono compiti ad alta intensità di banda su ciascuno. Voglio dividerli in modo che un account usi solo eth0 e il secondo account usi solo eth1.

  2. Server: ho due IP su un server e voglio assicurarmi che l'utente di posta invii e-mail solo dal secondo IP (eth0: 1 alias)

Probabilmente il secondo può essere abilitato IPT (non so proprio come) instradare il traffico e-mail attraverso quell'interfaccia, ma il primo avrà a che fare con tutti i tipi di traffico, quindi deve essere basato sull'utente. Se esiste una soluzione basata sull'utente, potrei applicarla in entrambi i casi.

Risposte:


6

Ti consigliamo di utilizzare il modulo proprietario di iptables e forse un po 'di manipolazione intelligente dei pacchetti.

proprietario Questo modulo tenta di abbinare varie caratteristiche del creatore di pacchetti, per i pacchetti generati localmente. È valido solo nella catena OUTPUT e anche allora alcuni pacchetti (come le risposte al ping ICMP) potrebbero non avere alcun proprietario e quindi non corrispondere mai.

--uid-owner userid Corrisponde se il pacchetto è stato creato da un processo con l'ID utente effettivo (numerico) indicato.

--gid-owner groupid Corrisponde se il pacchetto è stato creato da un processo con l'ID gruppo (numerico) effettivo indicato.

--pid-owner processid Corrisponde se il pacchetto è stato creato da un processo con l'ID processo specificato.

--sid-owner sessionid Corrisponde se il pacchetto è stato creato da un processo nel gruppo di sessioni specificato.


È possibile utilizzare iptables per impostare il segno, che è quindi possibile utilizzare nella tabella di routing. Vedi gli obiettivi MARK e CONNMARK. In iproute, la sua allora 'regola ip aggiungi fwmark X ...' Non sarei sorpreso, in realtà, se solo iproute2 può farlo ...
derobert

3
Essendo qualcuno che ha svolto un lungo lavoro con la corrispondenza del proprietario, posso dire che questo non produrrà sempre il risultato desiderato. Cioè, non tutti i pacchetti hanno un proprietario come ti aspetti. ICMP ed ESP sono tipi che appartengono al kernel (o root) indipendentemente dall'applicazione di origine e non saranno abbinati -m owner. È abbastanza affidabile con TCP e UDP, ma altri tipi non sono così affidabili. L' unico modo affidabile per raggiungere questo 100% è con VM o container.
bahamat,


1

Non sono sicuro che sia possibile per il primo punto. Si desidera eseguire alcune manipolazioni del routing in base all'utente id dell'utente. L'ultima volta che controllo non ho visto questa possibilità.

Per il secondo punto, non si tratta di iptables che si desidera utilizzare, ma iproute2 (http://lartc.org/howto/ e http://www.policyrouting.org/iproute2.doc.html per il documento completo). È il sostituto dei comandi ifconfig / route in quanto considerati obsoleti. iproute2 ti consente di instradare i pacchetti in base alla sua fonte. Questo è ciò che vuoi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.