Newsgroup: it.comp.os.linux.sys
Titolo: sempre iptables..skull HELP

ho letto bene l'articolo che mi ha segnalato skull ma a dir la verità mi
sono perso un pezzo.. nell'ultima riga:
"A questo punto, provvediamo a far sì che quelle connessioni che ivi
giungono proveniendo dall'interno vengano SNATtate per sembrare provenienti
dal firewall:
iptables -A POSTROUTING -t nat -s $int_net -d $web_int -p tcp --dport 80 -j
SNAT --to-source $fw"viene usata questa variabile $int_net che non ho
proprio capito cos'è..  descrivo dinuovo la mia sitauzione.Ho un'unico ip
pubblico assegnato alla scheda di rete eth0 poi vi sono la eth1 e la eth2
che rispettivamenterappresentano altre 2 lan,una di queste 2 lan è una finta
dmz perchè deve contere il server web. Io voglio chetutti i pacchetti in
ingresso alla eth0 sulla porta web sia dirottati alla eth2 che contiene la
finta dmz eprecisamente al mio server web quest'ultimo deve rispondere alle
richieste con l'ip del firewall.Prima di lanciare tutto questo progetto su
internet ho deciso di fare delle prove casalighe per vedere se
funziona,allora alla eth0 che rappresenta internet ho assegnato ip
192.168.0.1 alle eth1 192.168.1.1 e alla eth2 192.168.2.1Spero di non usato
ip che si incasinano fra di loro ma non credo,sono 3 classi distinte,ad ogni
scheda di rete sulfirewall ho assegnato che il gateway è se stessa,quindi
alla eth0 ho detto che il gateway è 192.168.0.1 ecc ecc..ho sbagliato?dovevo
assegnare a tutte e 3 come gateway 192.168.0.1 che finge di essere il mio ip
pubblico??Devo configurare la mia eth0 come dispositivo di default per
l'invio dei pacchetti?cioè deve essere lei la scheda didefault per
l'invio?domande a parte voglio che quando dalla classe che simula internet
"192.168.0.0" arriva una richiestaal firewall "192.168.0.1" questo la
rediriga a 192.168.2.2 che stà nella finta dmz che è collegata al firewall
tramite laeth2 con indirizzo 192.168.2.1 e voglio che il mio server web
risponda alla richiesta tramite il firewall uscendo con ilsuo ip. ora sulla
base di questi fatti ho fatto delle prove ed ho visto che mettendo queste
impostazioni che lascianopassare tutto ma fà niente era solo per fare delle
prove:iptables -t nat -A PREROUTING -d 192.168.2.1 -j DNAT --to
192.168.2.2iptables -t nat -A POSTROUTING -s 192.168.2.2 -j SNAT --to
192.168.2.1funziona,cioè dalla mia macchina di prova che simula internet
192.168.0.2 richiedo: 
http://192.168.2.1
 e il firewallfà il suo lavoro. se
invece vado a modificare sul firewall i parametri in questo modo:iptables -t
nat -A PREROUTING -d 192.168.0.1 -j DNAT --to 192.168.2.2iptables -t nat -A
POSTROUTING -s 192.168.2.2 SNAT --to 192.168.0.1Non và una mazza..
perchè??dove sbaglio??ps:scusate il post lungo e eventuali errori ma sono le
2.40 del mattino e ho una voglia pazza di capire come mai nn vàe come fare
per far funzionare tutto.. ora vado a dormire che è meglio grazie a tutti
ciao ciao

scusate la formattazione di merda del testo... sono proprio stanco...

 che contiene la
posto che:
$ext_ip_fw sia l'ip pubblico del firewall $int_ip_web sia l'ip privato in
proprietà del tuo server web eth0 va fuori
eth1 va al webserver
eth2 va alla lan
Avrai
iptables -A PREROUTING -t nat -i ! eth1 -p tcp -d $ext_ip_fw --dport 80 -j
DNAT --to-destination $int_ip_web
iptables -A FORWARD -o eth1 -d $int_ip_web --dport 80 -m state --state NEW
-j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
non l'ho provato ma non vedo perchè non dovrebbe andare  ;-)
su tutte le macchine (sia in dmz sia in lan) dovranno esserci ip
appartenenti a reti distinte (es: 
192.168.0.0/24
 per la lan e
192.168.100.0/24
 per la dmz).
il firewall avrà pertanto una interfaccia con ip pubblico e altre due con
2 ip privati appartenenti alle due reti. Tutte le macchine di queste due
reti dovranno avere l'ip del firewall affacciato alla loro lan come
gateway, e il fw dovrà ovviamente abilitare il routing.
Penso di non dimenticare nulla :-P
Ciao...
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Skull says:
Stop VeriSign. Go to 
http://www.whois.sc/verisign-dns/
* The most stupid thing since Microsoft Network... <g> *

Sai che non funziona... è tutta la mattina che smanetto.. allora ho fatto in
questo modo:
iptables -A PREROUTING -t nat -d 192.168.0.1 -p tcp --dport 80 -k
DNAT --to-destination 192.168.2.2
iptables -A POSTROUTING -t nat -j SNAT --to-source 192.168.2.1
in questo modo il firewall viene interrogato sull'indirizzo pubblico sulla
porta 80 e tutto sembra funzionare..ma l'ultima riga non dice di far uscire
tutti i pacchetti con l'indirizzo 192.168.2.1??io voglio che i pacchetti che
escono dal server siano con ip 192.168.0.1...
Riassumo la situazione:
eth0 -> indirizzo pubblico (192.168.0.1)
eht1 -> Lan (192.168.1.1)
eth2 -> finta dmz (192.168.2.2)
avete idee in proposito?voglio che la dmz esca con l'ip del firewall...

 escono dal server siano con ip 192.168.0.1...
credo di avere molto poco presente quello che stai cercando di fare (o,
meglio, penso di aver capito altra cosa, finora...)
innanzitutto vorrei capire che cosa è (in effetti) la "finta DMZ", che
ancora non capisco, perchè mi sa che il problema sta lì... :-P


allora ti spiego bene il problema: ho una linea adsl con un ip fisso, su
questo ip fisso ci metto il mio firewall/router che è collegato a 2 lan nel
seguente modo:
eth0-> collegata ad internet
eth1-> collegata alla prima lan con indirizzo 192.168.1.1
eth2 -> collegata alla seconda lan con indirizzo 192.168.2.1
Ora la prima lan è una lan a tutti gli effetti,con pc windows eecc,la
seconda la è una finta dmz perchè contiene un pc che fà da web-server ma non
ha un'indirizzo ip pubblico. Ora io voglio che le connessioni sulla porta 80
indirizzate al mio firewall con ip pubblico siano dirottate verso il server
web nella finta dmz e voglio che il server web spedisca le risposte con l'ip
del firewall, il tutto in maniera trasparente chi fà la richiesta da
internet non si deve accorgere di questo passaggio. Ora per testare tutto
questo schema ho assegnato alla scheda eth0 cioè quella collegata ad
internet un ip 192.168.0.1 e da un'altra macchina con ip 192.168.0.2 faccio
le richieste sul server web. Ho impostato iptables nel seguente modo:
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j
DNAT --to-destination 192.168.2.2
iptables -t nat -A POSTROUTING -j SNAT --to 192.168.2.1
Ok con queste 2 righe funziona tutto,le connessioni vengono inviate al pc
192.168.2.2 e questo risponde in maniera corretta,ho provato ad analizzare
il traffico con Ethereal e ottengo il risultato sperato,il pc che fà la
richiesta sulla porta 80 non si accorge della redirezione infatti tutte le
risposte arrivano da 192.168.0.1. Io penso che questo succeda perchè ho
impostato come gateway sulle 2 lan l'ip pubblico (192.168.0.1) giusto?ok tu
dici hai ottenuto quello che volevi,si però non rispetta la mia logica,cioè
io devo capire perchè se metto nello SNAT 192.168.0.1 non c'è riposta, il
firewall non risponde alle chiamate. Secondo me dovrei mettere l'ip pubblico
del firewall in questo modo tutte le risposte a
verrebbero con l'ip pubblico. E poi se navigo dalla lan le richieste non
escono con 192.168.2.1???  quando navigo dalla lan le richieste devo sempre
figurare come se fossero partite dall'ip pubblico del firewall e poi questo
le smista ai client che le hanno richieste.. illuminami..  ;-)

 le smista ai client che le hanno richieste.. illuminami..  ;-)
Uè, che so', una abatjour?
Onestamente ti consiglierei di partire da un po' più in basso :-/
Quello che vuoi fare non è affatto complesso, ma da come stai affrontando
il problema penso ti farebbe comodo un po' di chiarezza sul funzionamento
del routing e del NAT, più che non la sintassi di iptables, altrimenti
rischi di impastarti...
Dividi i problemi:
1) tutto quello che esce dall'interfaccia pubblica deve sembrare originato
dall'ip pubblico del firewall
iptables -A POSTROUTING -t nat -o $ext_dev -j SNAT --to-source $ext_ip_fw
2) tutte le richieste fatte all'ip pubblico del fw sulla porta 80 devono
essere redirette su $webserver
iptables -A PREROUTING -t nat -p tcp -d $ext_ip_fw --dport 80 -j DNAT
--to-destination $webserver
Già qui hai tutto quello che ti serve per quanto riguarda il nat. Il resto
sono solo policy di filter.
Come vedi trovi nelle regole di iptables una trascrizione paro-paro di
quello che sono le condizioni e le richieste. Il problema è solo sapere
cosa domandarsi...
Hope it helps...
