Newsgroup: it.comp.os.linux.sys
Titolo: IP_Forword, ti odio !!!

Ciao,
sto cercando di configurare un server linux (A) che tramite un collegamento
ad un altro server linux (B) possa collegarsi alla rete lan di quest'ultimo.
Il server B è dotato di 2 schede ethernet:
eth0 10.173.29.43 netmask 255.255.0.0
eth1 10.174.29.50 netmask 255.255.0.0
Il server A ha una sola scheda di rete ethernet:
eth0 10.174.29.51 netmask 255.255.0.0
Da quanto ho capito se B vuole fare il ping di un ipotetico compiuter C deve
usare come getway il server A che fa da route.
In funzione di questo ho effettuto le seguenti impostazioni route:
Server A: Kernel IP routing table
Destination     Gateway             Genmask         Flags Metric Ref    Use
Iface
10.174.0.0      0.0.0.0              255.255.0.0        U       0      0
0 eth0
10.173.0.0      10.174.29.50     255.255.0.0        UG     0      0
0 eth0
127.0.0.0        0.0.0.0              255.0.0.0           U       0       0
0 lo
Server B: Kernel IP routing table
Destination     Gateway             Genmask         Flags Metric Ref    Use
Iface
10.173.0.0      0.0.0.0              255.255.0.0        U       0        0
0 eth0
10.174.0.0      0.0.0.0              255.255.0.0        U       0        0
0 eth1
127.0.0.0        0.0.0.0              255.0.0.0           U       0        0
0 lo
Ho anche verificato nel il server B il /proc/sys/net/ipv4/ip_forward fosse
effettivamente impostato a 1.
Risultato, non funziona.
Dal server A posso fare il ping su tutti e due gli indirizzi IP del server
B, ma se mi azzardo a pingare una qualsiasi macchina collegata alla LAN del
server B non ottengo nessun risultato. (Ovvimente B riesce a vedere sia A
che i computer della sua LAN.
Ho dimenticato di configurare qualcosa?
Carlo.

 Ho dimenticato di configurare qualcosa?
Domanda: l'ipotetico computer C che devi pingare da A, ha configurata la route
su 10.173.29.43 per la rete 
174.29.0.0/16
?
bye G.L.
--
La logica non attiene alla verosimiglianza delle ipotesi,
ma alla coerenza delle tesi con le ipotesi.

 Ho dimenticato di configurare qualcosa?
Domanda: l'ipotetico computer C, che devi raggiungere da A passando per il
gateway B, ha impostata la route 10.173.29.43 per la rete 
10.174.0.0/16
?


 gateway B, ha impostata la route 10.173.29.43 per la rete 
10.174.0.0/16
?
Sono macchine Windows e hanno come gatway anche l'indirizzo 10.173.29.43 del
server B.
Cosě facendo in teoria dovrebbe vedere sia A che l'altra scheda di rete del
server B (eth1), ma non č cosě.
Se pingo da C posso vedere solo l'eth0 di B.

 server B (eth1), ma non č cosě.
Scusa l'ulteriore domanda stupida, siamo sicuri che le netmask dei computer
windows sulla lan siano impostate a 255.255.0.0?


 windows sulla lan siano impostate a 255.255.0.0?
Si è tutto impostato a 255.255.0.0
Potrebbe essere un problema di MASQUERADE?

 Se pingo da C posso vedere solo l'eth0 di B.
Allora il problema e` nella direzione C -> A, e puo` essere una route
sbagliata in C oppure (ma non mi pare visto l'output) in B.
Bye.

Car wrote:

Potrebbe. Posta l'output di:
# iptables-save


Car wrote:

No.
prova dal prompt dei comandi del PC windows:
route add XXX.XXX.XXX.XXX mask ZZZ.ZZZ.ZZZ.ZZZ YYY.YYY.YYY.YYY
X... indirizzo rete da raggiungere
z     maschera della rete da raggiungere
y...  gatway

 
# iptables-save




[root@Server-Aucom root]# iptables-save


# Generated by iptables-save v1.2.6a on Thu Nov 21 13:57:52 2002


*filter


:INPUT ACCEPT [0:0]


:FORWARD ACCEPT [0:0]


:OUTPUT ACCEPT [1813:748159]


:RH-Lokkit-0-50-INPUT - [0:0]


-A INPUT -j RH-Lokkit-0-50-INPUT


-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT


-A RH-Lokkit-0-50-INPUT -i eth0 -j ACCEPT


-A RH-Lokkit-0-50-INPUT -i eth1 -j ACCEPT


-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --tcp-flags SYN,RST,ACK 
SYN -j REJECT --reject-with icmp-port-unreachable


-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --tcp-flags SYN,RST,ACK 
SYN -j REJECT --reject-with icmp-port-unreachable


-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT --reject-with 
icmp-port-unreachable


-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT --reject-with 
icmp-port-unreachable


-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --tcp-flags 
SYN,RST,ACK


SYN -j REJECT --reject-with icmp-port-unreachable


-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --tcp-flags SYN,RST,ACK 
SYN -j REJECT --reject-with icmp-port-unreachable


COMMIT


# Completed on Thu Nov 21 13:57:52 2002


-------------------------------------------------------------------------------------------


Ho provato a eseguire:


iptables -t nat -A POSTROUTING -o eth0 -s 
10.174.0.0/16
 -j SNAT 

10.173.29.43/32


ma ci deve essere un errore di sintassi perchè non lo 
accetta.



 route add XXX.XXX.XXX.XXX mask ZZZ.ZZZ.ZZZ.ZZZ YYY.YYY.YYY.YYY
Effettivamente mancava il routing.
Ora oltre alla eth0 del server B riesco a pingare anche la eth1 dello stesso
server B.
Però non riesco ancora a pingare il server A.

iptables -t nat -A POSTROUTING -o eth0 -s 
10.174.0.0/16
 -j >SNAT
10.173.29.43/32
Togli quel /32 alla fine. E comunque non serve un NAT. Ti consiglio
comunque di pulire, per sicurezza, tutte le catene e le regole.
/sbin/iptables -X
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
bye G.L.

 /sbin/iptables -P OUTPUT ACCEPT
Fatto ma non è cambiato nulla.

 Fatto ma non è cambiato nulla.
Non saprei a questo punto cosa dirti... mi appare tutto corretto.
Se non provare a usare traceroute sulla macchina A e tcpdump sulla
macchina B, e magari anche mettere una regola iptables per il log sulla
catena forward e guardare /var/log/messages.
/sbin/iptables -A FORWARD -j LOG --log-prefix "NetFilter FORWARD - "


 /sbin/iptables -A FORWARD -j LOG --log-prefix "NetFilter FORWARD - "
Purtroppo non va.
Se dal server A cerco di pingare una macchina di C, nel file di log trovo
solamente richieste di echo.
Se dal server A pingo il server B, nel file di log trovo richieste di echo e
relative risposte.
Non so proprio che pesci prendere.


10.173.29.43/16
Ok, per poter fare cio', devi scrivere "1" in /proc/sy/net/ipv4/ip_forward,
svuotare le regole del firewall sulla macchina che ha la doppia scheda,
configurare il default gateway in modo che le macchine sulla lan
10.174.0.0/16
 puntino a 10.174.29.51, poi devi configurare le macchine che
stanno sulla rete 10.173.29.0.0/16 in modo che puntino a 10.173.29.50
io feci la stessa cosa ma con ip /24 ma la sostanza non cambia, niente route
strane, niente firewall, solo gli esatti gateway di entrambe le reti

Visto l'importante supporto che mi avete dato tutti posto di seguito le
istruzioni che mi hanno permesso di risolvere il mio problema.
iptables -A FORWARD -i eth1 -o eth0 - j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLESHED,RELATED - j
ACCPET
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ancora grazie a tutti.
Peace.