Iptables, routing e catena di forward
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) Specificare se discussione/suggerimento o richiesta d'aiuto.
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.
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) Specificare se discussione/suggerimento o richiesta d'aiuto.
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.
Iptables, routing e catena di forward
Ciao a tutti,
sono approdata qui su consiglio di un conoscente .
E' da un po' che lavoro con Linux, in genere me la cavo, ma da ieri mi ritrovo con una problematica irrisolta:
Mi trovo, semplificando a dover affrontare questa situazione:
RETE_A FIREWALL LINUX RETE_B
192.168.0.0/24 ----> eth0 eth1 ---> 192.168.100.0/24
RETE_A e RETE_B hanno rispettivamente come gw gli ip delle eth0 e eth1 di
FIREALL LINUX (192.168.0.100 e 192.168.100.100)
Il FIREWALL_LINUX e' configurato con echo 1 > /proc/sys/net/ipv4/ip_forward.
Devo fare in modo che:
Rete B possa accedere a RETE_A su tutti i protocolli
RETE A possa accedere a RETE_B solo sulle porte 80, 443, 22 , 25 e
terminal service (che ovviamente non ricordo)
Non ho mai avuto a che fare con firewall che devono fare routing e non nat.
Penso si debba agire sulla chain di forward ... Pensavo a qualcosa del
genere:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables-A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP
Per ora ho messo la regola solo x la porta 80 per semplificarmi la vita.
Il problema e' che non funziona: quel che succede e' che RETE_A riesce ad
accedere ad un server web su RETE_B, ma RETE_B non ne vuole sapere di
raggiungere RETE_A .
Spero in un qualche suggermimento.
Grazie.
ciaspola
sono approdata qui su consiglio di un conoscente .
E' da un po' che lavoro con Linux, in genere me la cavo, ma da ieri mi ritrovo con una problematica irrisolta:
Mi trovo, semplificando a dover affrontare questa situazione:
RETE_A FIREWALL LINUX RETE_B
192.168.0.0/24 ----> eth0 eth1 ---> 192.168.100.0/24
RETE_A e RETE_B hanno rispettivamente come gw gli ip delle eth0 e eth1 di
FIREALL LINUX (192.168.0.100 e 192.168.100.100)
Il FIREWALL_LINUX e' configurato con echo 1 > /proc/sys/net/ipv4/ip_forward.
Devo fare in modo che:
Rete B possa accedere a RETE_A su tutti i protocolli
RETE A possa accedere a RETE_B solo sulle porte 80, 443, 22 , 25 e
terminal service (che ovviamente non ricordo)
Non ho mai avuto a che fare con firewall che devono fare routing e non nat.
Penso si debba agire sulla chain di forward ... Pensavo a qualcosa del
genere:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables-A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP
Per ora ho messo la regola solo x la porta 80 per semplificarmi la vita.
Il problema e' che non funziona: quel che succede e' che RETE_A riesce ad
accedere ad un server web su RETE_B, ma RETE_B non ne vuole sapere di
raggiungere RETE_A .
Spero in un qualche suggermimento.
Grazie.
ciaspola
sid77 ha scritto:hai provato a routare le richieste di 192.168.100.0/24 verso 192.168.0.0/24 da eth1 a eth0?
non credo sia un problema di iptabes per la direzione B->A
Correggetemi se sbaglio ma :
/proc/sys/net/ipv4/ip_forward e' a 1
se flusho tutto le due reti si vedono su tutti i protocolli .
Quindi non credo che sia un problema di routing ...
a meno che non ci sia qualcos'altro di particolare da fare come route che a me e' ignoto ....
- Paoletta
- Staff

- Messaggi: 3974
- Iscritto il: lun 25 apr 2005, 0:00
- Slackware: 14.2 - 64 bit
- Desktop: fluxbox
- Località: Varese
Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -j ACCEPT P.S. se non funziona (come molto probabilmente succederà
ciao!
Puo' essere in effetti ora provo a levare la doppia interfaccia ...Paoletta ha scritto:la butto lì: magari perchè quando questa regola viene valutata la decisione sull'instradamento non è ancora stata presa e quindi non è detto che il pacchetto proveniente da eth1 vada su eth0..prova a far così:Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPTtanto dalla rete B deve passare tutto, giusto?Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -j ACCEPT
P.S. se non funziona (come molto probabilmente succederà
) prova a non eseguire lo script in un colpo solo, ma a scrivere manualmente ogni istruzione e a provare , di volta in volta, se la rete va o no; così capirai qual è l'istruzione "colpevole"
ciao!
Si da B verso fuori deve passare tutto ....
e' solo il traffico in ingresso da filtrare ....
grazie
ho provato a semplificare ulteriormente e a usare solo -o e non -i
[root@kiazserver iptables]# iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP
[root@kiazserver iptables]# iptables -I FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp --dport 80 -j ACCEPT
[root@kiazserver iptables]#
[root@kiazserver iptables]#
[root@kiazserver iptables]# iptables -I FORWARD -p tcp -o eth0 -j ACCEPT
il risultato e' che :
ReteA (0.203) riesce ad andare in http su reteB (100.5)
Rete B continua a non volerne sapere di attraversare il firewall
Non so piu' dove sbattere la testa ...
Le regole sugli stati servono a qualcosa in questo caso ?
Se faccio tcpdump sul firewall noto che i pacchetti arrivano alla destinazione, tornano indietro ma poi si bloccano sull'interfaccia eth1 .
e' come se un passaggio verso la eth1 venga comunque contemplato nel DROP

Scusate il doppio nick ... e' che credevo di aver dimenticato la pass di sto forum e chiudendo e riaprendo il browser mi son loggata con la vecchia registrazione !!!
ciaspola aka KiaZ
[root@kiazserver iptables]# iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP
[root@kiazserver iptables]# iptables -I FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp --dport 80 -j ACCEPT
[root@kiazserver iptables]#
[root@kiazserver iptables]#
[root@kiazserver iptables]# iptables -I FORWARD -p tcp -o eth0 -j ACCEPT
il risultato e' che :
ReteA (0.203) riesce ad andare in http su reteB (100.5)
Rete B continua a non volerne sapere di attraversare il firewall
Non so piu' dove sbattere la testa ...
Le regole sugli stati servono a qualcosa in questo caso ?
Se faccio tcpdump sul firewall noto che i pacchetti arrivano alla destinazione, tornano indietro ma poi si bloccano sull'interfaccia eth1 .
e' come se un passaggio verso la eth1 venga comunque contemplato nel DROP
Scusate il doppio nick ... e' che credevo di aver dimenticato la pass di sto forum e chiudendo e riaprendo il browser mi son loggata con la vecchia registrazione !!!
ciaspola aka KiaZ
- Paoletta
- Staff

- Messaggi: 3974
- Iscritto il: lun 25 apr 2005, 0:00
- Slackware: 14.2 - 64 bit
- Desktop: fluxbox
- Località: Varese
probabilmente i pacchetti che si bloccano sono pacchetti tcp ma non della porta 80 e matchano con questa regola:
ripeto, prova ad inserire a mano una regola per volta dopo aver resettato il fw e testa la rete ad ogni inserimento... troverai la regola colpevole...
Codice: Seleziona tutto
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP
Lo so che matchano li ..Paoletta ha scritto:probabilmente i pacchetti che si bloccano sono pacchetti tcp ma non della porta 80 e matchano con questa regola:ripeto, prova ad inserire a mano una regola per volta dopo aver resettato il fw e testa la rete ad ogni inserimento... troverai la regola colpevole...Codice: Seleziona tutto
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp -j DROP
ho solo 3 regole le metto a mano
quando metto la DROP tutto smette di funzionare ...
e' come se i pacchetti generati 100.0 una volta che devono tornare alla stessa rete vengono droppati in quanto devono passare dalla eth0 alla eth1 .....
e' come se la regola fosse bidirezionale e non tenesse conto di chi ha generato il traffico ma funzionasse ad un livello un po' + basso .
Ora io non conosco nel profondo il comportamento di iptables, ma questo smanettando sulla INPUT non mi e' mai sucesso ......
Non e' che bisogna specificare qualche altro flag per farlo entrare nel merito del traffico "originato da" e non della direzione dei pacchetti e basta ???
KiaZ aka ciaspola
Pare che ci siamo !!
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP
Ci volevano le regole sulle flag e sugli stati ... prese da quelle che uso nella chain di input ..
Ora ho aperto solo la 80 e nmap dice :
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Interesting ports on 192.168.100.5:
(The 1662 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
80/tcp open http
Device type: general purpose
Running: Linux 2.4.X|2.5.X
Un grazie per avermi messo sulla buona strada !
ciaspola aka KiaZ
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP
Ci volevano le regole sulle flag e sugli stati ... prese da quelle che uso nella chain di input ..
Ora ho aperto solo la 80 e nmap dice :
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Interesting ports on 192.168.100.5:
(The 1662 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
80/tcp open http
Device type: general purpose
Running: Linux 2.4.X|2.5.X
Un grazie per avermi messo sulla buona strada !
ciaspola aka KiaZ

