PDA

Visualizza la versione completa : iptables, routing, forward


ciaspola
10-03-2006, 12:04
Ciao a tutti,
e' da un po' che lavoro su Linux in ambito networking/integrazione, ma ieri mi sono imbattuta in un problema per me nuovo:

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,

ciao e grazie,

Chiara (aka ciaspola)

ciaspola
10-03-2006, 12:39
Originariamente inviato da scomunicato
dai sti comandi

route

arp

e dicci cosa vedi...
ricordarti di impostare il file
/etc/network/options ( se usi debian ) in cuesto modo :
Quote:


ip_forward=yes
spoofprotect=yes
syncookies=no

Ps guarda sto es.

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/255.255.255.0 -j MASQUERADE

Il firewall di produzione e' una debian, quei 3 param in /etc/network/options sono a posto

Le reti di produzione sono su ip pubblici
Non natto, non ho regole di masquerading, routing puro.

Non posso usare nat, snat, dnat o accrocchi, xke' sono le 2 reti che si devono vedere, non si tratta di girare una porta.

Cmq, sulla macchina di test :

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.203 0.0.0.0 UG 0 0 0 eth0

0.203 e' il default gw della macchina test ...
sarebbe cmq una macchina di LAN_A

[root@kiazserver iptables]# arp -a
? (192.168.100.5) at 00:14:BF:FA:22:4B [ether] on eth1
? (192.168.0.203) at 00:40:63:D3:38:81 [ether] on eth0
? (192.168.0.170) at 00:40:63:C9:5D:1E [ether] on eth0

Se puo' essere d'aiuto ...

io facevo i miei test tra il 100.5 e lo 0.203 ...

grazie

Fabiuz
10-03-2006, 13:39
devi nattare tutto quello che esce dalla eth0 e gli cambi l'indirizzo sorgente (gli metti quello di eth0) e lo mandi a eth1; lo stesso fai con tutto quello che sta dietro a eth1!!

ok?

osvi
10-03-2006, 15:31
Originariamente inviato da scomunicato
syncookies=no
come mai lo disattivi?

ciaspola
10-03-2006, 16:29
Dopo un po' di scleri e un merge con quanto avevo sulla chain di input ho risolto :


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

Questo pare fare il caso mio ..
grazie cmq

Fabiuz
11-03-2006, 17:51
:prrr: da come diceva non riusciva a trovare la rotta per l'altra rete oppure non riusciva a tornare indietro!

:prrr:

Loading