[RISOLTO] smistamento traffico via iptables

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5375
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

[RISOLTO] smistamento traffico via iptables

Messaggio da ZeroUno »

Ciao.

Ho una lan con due router
192.168.0.1 e 192.168.1.1
ed un pc che ha due schede di rete, una per ogni lan, eth0 192.168.0.2, eth1 192.168.1.2


Ora se voglio che verso alcuni indirizzi passo per il primo router e per altri indirizzi sul secondo è fatta, basta usare la tabella di routing
route add -host 1.1.1.1 gw 192.168.0.1
route add -host 2.2.2.2 gw 192.168.1.1

ma a me serve smistare il traffico per porta, tipo le richieste su porta 80 mi vengano girate al primo router mentre le richieste su porta 22 all'altro router, a parita di indirizzo
la tabella di routing ha le precedenze
route add -host 1.1.1.1 gw 192.168.0.1
route add -host 1.1.1.1 gw 192.168.1.1
crea due rotte con metriche diverse ed una sola ha la priorità.

Posso specificare via iptables magari quale traffico indirizzare su un router e quale sull'altro?


grazie.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

rik70
Iper Master
Iper Master
Messaggi: 2267
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 64-current
Kernel: 5.4.x
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: smistamento traffico via iptables

Messaggio da rik70 »

Dovresti riuscire agendo sulla tabella NAT.

Un esempio:
- metti che hai una macchina Linux con ip 192.168.1.120;
- la macchina invia le richieste per la risoluzione dei nomi dominio verso un dato 'gateway/server dns';
- tu però vuoi che tali richieste vengano reindirizzate verso un nameserver che abbia un sistema di 'controllo parentale' che filtri i siti 'indesiderati'.

Basterebbe scrivere una regola iptables che intercetta tutte le richieste UDP verso la porta 53 e le 'rimanda' alla destinazione specificata:

Codice: Seleziona tutto

iptables -v -t nat -A OUTPUT -s 192.168.1.120/32 -p udp -m udp --dport 53 -j DNAT --to-destination 208.67.222.123:53
Prova a studiarti la tabella NAT e vedi 'quali 'catene" e 'target' utilizzare per ottenere il risultato voluto.

Nell'esempio sopra è bastato operare sulla catena 'OUTPUT', ma se avessi voluto che so... ...configurare un tuo server dns locale per applicare la stessa regola ad alcuni PC della LAN, avresti dovuto agire sulle catene 'PREROUTING' e 'POSTROUTING' della macchina su cui gira il server utilizzando anche il target SNAT.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5375
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: smistamento traffico via iptables

Messaggio da ZeroUno »

No, credo di aver spiegato male, ma sono riuscito a risolvere.

conosco abbastanza bene i nat, ma la mia situazione è un po' più complicata.
La mia attuale tabella di routing che non posso toccare è questa:

Codice: Seleziona tutto

0.0.0.0         10.222.255.144  0.0.0.0         UG    1      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlan0
...
ora quel 208.67.222.123 ipotizzato è raggiungibile da wlan0 ma non da tun0
quello che voglio io è dirgli, la stessa cosa che hai detto tu ma tipo
-j DNAT --to-destination 208.67.222.123:53 -via wlan0
ma una cosa del genere non esiste con iptables (non l'ho trovata). Si fa solo agendo sulla tabella di routing.


Ho risolto perchè sono riuscito ad aggiungere una tabella di routing alternativa senza toccare la principale

Codice: Seleziona tutto

# echo "1 RDS" >> /etc/iproute2/rt_tables
ip route add default via 192.168.1.1 dev wlan0 table RDS
ip rule add to 0.0.0.0/0 table RDS
ip rule add to 10.0.0.0/8 table main
dopo di questo con un mix di iptables -t mangle è possibile selezionare le singole porte

http://www.linuxhorizon.ro/iproute2.html
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi