Newsgroup: it.comp.os.linux.sys
Titolo: FIREWALL ed problema con indirizzi IP.

CIao a tutti.
Ho appena adibito un vecchio pentium 200MMX a firewall su una piccola
rete locale (piccolo ufficio)
Ho installato la RedHat 7.1, configurato due schede di rete.
eth0 e' configurata con l'ip 10.0.0.254 (gateway 255.255.255.0 se vi
e' utile) (ho creato anche un ip alias: eth0:0 configurato con ip
92.32.110.155)
eth1 e' configurata per il lato internet (ESTERNO): posseggo 8
indirizzi ip contigui (vi do degli indirizzi fittizzi, tanto per
capirci)
dal 92.32.110.145 al 92.32.110.151.
Il mio firewall ha eth1 (92.32.110.146) collegata al router
(92.32.110.145) e la eth0 collegata all'hub interno (al quale tutti i
pc sono collegati).
In questo modo non e' possibile par passare dati tra la rete interna e
i einternet senza che i pacchetti (tcp) passino per il firewall.
Ho attivato ip_forwarding e inpostato le regole di masqueranding e di
instradamento con IPCHAINS (e devo dire che tutto funziona).
Il mio problema sta nel server web 92.32.110.147 che si trova dietro
il firewall (cioe' e' collegato all'hub interno, anche se ha
l'indirizzo ip "reale")
Premetto che ho inpostato come regola di ipchains (del firewall) in
modo tale che tutti i pacchetti che sono diretti a 92.32.110.147
vengono "forward" inoltrati direttamente al server senza fare nulla
(ovviamente solo quelli relativi alla porta 80, gli altri ho impostato
DENY). Ho lasciato libera la circolazione degli ICMP (permetto i ping
tra interno/esterno e esterno/interno)
IL PROBLEMA e' il seguente:
tramite la scheda di rete eth0 non riesco ad inoltrare i pacchetti
verso il server web: mi spiego, il proxy quando vuole contattare
92.32.110.147 lo cerca sulla scheda eth1.
Tra le prove che ho fatto, ho notato questo:
- se disattivo la scheda eth1 i pacchetti vengono correttamente
inoltrati al server web tramite la scheda eth0
ho provato anche ad impostare la subnet mask(senza risultati):
eth1   ip: 92.32.110.146 subnet mask: 255.255.255.254
eth0   ip 10.0.0.254 subnet mask: 255.255.255.0
eth0:0 ip 92.32.110.155 subnet mask:255.255.255.0
Ma con la scheda di rete eth0 collegata all'HUB non riesco a vedere il
mio server... QUINDI DALL'ESTERNO (internet) NON RIESCONO AD ACCEDERE
AL SERVER INTERNET (tramite l'instradamento del proxy).
aggiungo che: il server web deve per forza avere un'ip compreso tra
92.32.110.147 e 92.32.110.151 (altrimenti il router internet non
permette la circolazione dei dati con la rete internet) ma l'ip
"alias" di eth0:0 puo' essere qualunque (ci pensa poi il firewall a
gestire il passaggio dei pacchetti tra la rete interna e il server
web)
Qualche idea?
schema
INTERNET <-> ROUTER (92.32.110.145) <-> (92.32.110.146) FIREWALL <->
(92.32.110.155) e (10.0.0.254) <-> HUB <-> WEB SERVER (92.32.110.147)
e computer della rete (10.0.0.x)

è una configurazione fouri norma: se metti il webserver dietro al firewall 
non dovresti usare un ip pubblico...
il tutto non ti funziona perchè la tabella di instradamento (route -n) dice 
che per cercare la classe di ip pubblici deve passare per la eth1, mettendo 
un secondo ip virtuale al web server della rete 10.x.x.x e creando una 
route statica su linux potresti anche convincere il firewall a vedere il 
webserver, solo che dovresti modificare anche la tabella di routing del 
router per dirgli che per andare all'ip pubbico del webserver deve passare 
per il firewall (così come sta il router si aspetta di vedere il webserver  
alla stessa altezza del firewall...) e sinceramente non so se funzioni 
correttamente...
In ogni caso è una configurazione di rete per la quale potresti essere 
radiato da qualsiasi albo di giovani sistemisti di rete... ;-)
Per fare quello che vuoi ad ogni modo le soluzioni potrebbero essere due:
a)
stacchi l'RJ45 del web server dall'hub e lo metti sul router (stesso 
livello del firewall) e imposti come default gateway sul webserver l'ip 
pubblico del firewall (mantieni comunque un discreto livello di sicurezza 
visto che il web server per rispondere deve comunque passare per il 
firewall)
b) (quella che ti consiglio vivamente)
lasci il web server dietro al firewall, gli dai un solo ip 10.x.x.x, port 
forwardi la porta 80 del firewall verso 10.x.x.x:80 usando una reverse NAT, 
sul kernel 2.4 questa funzionalità esiste a livello di iptables (sostituto 
di ipchains), è una sintassi del tipo:
iptables -t nat -A PREROUTING -p tcp -d ip_pubblico --dport 80 -i eth1 \
-j DNAT --to-destination 10.x.x.x:80
se non hai il kernel 2.4 usi un tool che si chiama ipmasqadm che fa da 
portforward...
attento che il web server da internet è visto con l'ip del firewall 
(ip_pubblico), altrimenti usi una interfaccia virtuale per il 92.32.110.147 
(eth1:1) sempre sul firewall.. il web server ha come default gateway 
10.0.0.254
Se vedi i log del web server, vedrai che il web server vedrà gli ip reali 
del client, questo per la reverse nat del firewall.
Ciao.
CYN
