routing tra 2 nic

Postate qui per tutte le discussioni legate a Linux in generale.

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) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
zZeta
Linux 0.x
Linux 0.x
Messaggi: 18
Iscritto il: gio 30 set 2004, 0:00

routing tra 2 nic

Messaggio da zZeta »

ciao a tutti, so che il problema può essere banale, ma mi sono arenato.
ho una server con 2 intefacce su subnet diverse e ho bisogno di routare i pacchetti da una all'altra e viceversa.
lo scenario è il seguente:

Codice: Seleziona tutto

eth0 (verso ext) ha ip [b]10.10.10.2[/b]/255.255.255.0
eth1 (verso lan) ha ip [b]192.168.1.225[/b]/225.225.225.0
ip_forward è abilitato

in teoria questo dovrebbe bastare per pingare da una interfaccia i client che stanno sotto l'altra e viceversa.
cioè da eth1 dovrei pingare il 10.10.10.1 e da eth0 il 192.168.1.102 ma:

Codice: Seleziona tutto

root@mrtg:/home/zeta# ping -I eth1 192.168.1.102  
PING 192.168.1.102 (192.168.1.102) from 10.10.10.2 eth1: 56(84) bytes of data.

--- 192.168.1.102 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3009ms
e

Codice: Seleziona tutto

root@mrtg:/home/zeta# ping -I eth0 10.10.10.1 
PING 10.10.10.1 (10.10.10.1) from 192.168.1.225 eth0: 56(84) bytes of data.

--- 10.10.10.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1009ms
questa è la mia tabella di routing:

Codice: Seleziona tutto

root@mrtg:/home/zeta# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.10.10.1      0.0.0.0         UG    0      0        0 eth1
(10.10.10.1 è il mio gateway su internet).

cosa mi manca per mettere le 2 subnet in comunicazione??

grazie ;)

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Messaggio da sardylan »

Dalla tabella di routing risulta che eth0 è la tua LAN privata 192.168.1.0 e che eth1 è su 10.10.10.0, e non il contrario... Confermi??
Comunque controlla se iptables ha le regole giuste... Dai un

Codice: Seleziona tutto

# iptables -L -v
da root per vedere le regole... Devi avere due righe simili a queste:

Codice: Seleziona tutto

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
 3891  517K ACCEPT     0    --  eth0   eth1    anywhere             anywhere
 3416 2281K ACCEPT     0    --  eth1   eth0    anywhere             anywhere            state RELATED,ESTABLISHED
Se non ci sono, o se non ci sono regole in generale, devi aggiungere i comandi in rc.firewall

zZeta
Linux 0.x
Linux 0.x
Messaggi: 18
Iscritto il: gio 30 set 2004, 0:00

Messaggio da zZeta »

Dalla tabella di routing risulta che eth0 è la tua LAN privata 192.168.1.0 e che eth1 è su 10.10.10.0, e non il contrario... Confermi??
confermo :D
ho scritto male all'inizio ma fa fede quanto riportato nella tabella di routing.
Codice:
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
...
3891 517K ACCEPT 0 -- eth0 eth1 anywhere anywhere
3416 2281K ACCEPT 0 -- eth1 eth0 anywhere anywhere state RELATED,ESTABLISHED

Se non ci sono, o se non ci sono regole in generale, devi aggiungere i comandi in rc.firewall
ma il kernel non dovrebbe routare indipendentemente da iptables?
comunque domattina provo e vi aggiorno. grazie ;)

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Messaggio da sardylan »

zZeta ha scritto:ma il kernel non dovrebbe routare indipendentemente da iptables?
Quota solo se la politica di default della catena FORWARD è impostata su ACCEPT. Nel mi caso non lo è, infatti mi da

Codice: Seleziona tutto

Chain FORWARD (policy DROP 0 packets, 0 bytes)
.
Se anche a te non lo da, allora o aggiungi le regole, oppure dai un

Codice: Seleziona tutto

# iptables -P FORWARD ACCEPT
da root per impostare la politica di default

gigyz
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: mar 9 ott 2007, 17:45

Messaggio da gigyz »

non basta devi impostare anche il routing sugli host

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Messaggio da sardylan »

gigyz ha scritto:non basta devi impostare anche il routing sugli host
Cioe???

gigyz
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: mar 9 ott 2007, 17:45

Messaggio da gigyz »

su tutti gli host della lan gli devi dire che per raggiungere il 10.10.10.1 devono passare per il server che quindi farà da gateway, quindi:
route add 10.10.10.1 gw 192.168.1.225

sul gateway WAN gli devi dire si raggiungere gli hosts tramite il server quindi dipende dalla netmask che usi, comunque per esempio

route add -net 192.168.1.1/26 gw 10.10.10.2

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Messaggio da sardylan »

Ah... Si... Scusa... Ho Capito... :oops: :oops: :oops:

zZeta
Linux 0.x
Linux 0.x
Messaggi: 18
Iscritto il: gio 30 set 2004, 0:00

Messaggio da zZeta »

le policies di iptables sono tutte su ACCEPT di default (e comunque le mie lo sono, per ora), e gli host routano correttamente sulla seconda interfaccia.
infatti dall'host 192.168.1.102 riesco a pingare la seconda interfaccia del gateway (che ha ip 10.10.10.2) ma non il 10.10.10.1 .
come, del resto, dal gateway stesso non pingo il 10.10.10.1 passando per l'intefaccia 192.168.1.225 .

quindi riassumendo:

1) la policy FORWARD di iptables è ACCEPT
2) ip_forward è attivo
3) gli host nelle sottoreti routano correttamente

il problema è che non esco dal gateway se non verso internet (10.10.10.1)

gigyz
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: mar 9 ott 2007, 17:45

Messaggio da gigyz »

è normale la soluzione te l'ho scritta sopra

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Messaggio da sardylan »

zZeta ha scritto:le policies di iptables sono tutte su ACCEPT di default (e comunque le mie lo sono, per ora), e gli host routano correttamente sulla seconda interfaccia.
infatti dall'host 192.168.1.102 riesco a pingare la seconda interfaccia del gateway (che ha ip 10.10.10.2) ma non il 10.10.10.1 .
come, del resto, dal gateway stesso non pingo il 10.10.10.1 passando per l'intefaccia 192.168.1.225 .

quindi riassumendo:

1) la policy FORWARD di iptables è ACCEPT
2) ip_forward è attivo
3) gli host nelle sottoreti routano correttamente

il problema è che non esco dal gateway se non verso internet (10.10.10.1)
Posta l'output di questi 4 comandi da root

Codice: Seleziona tutto

# iptables -L -v
# iptables -t nat -L -v
# route -n
# cat /etc/resolv.conf
del computer con le due interfaccie di rete e da uno qualsiasi dei computer della LAN interna... Vediamo che dicono...

zZeta
Linux 0.x
Linux 0.x
Messaggi: 18
Iscritto il: gio 30 set 2004, 0:00

Messaggio da zZeta »

questo per quanto riguarda il server-gateway:

Codice: Seleziona tutto

root@mrtg:/home/zeta# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Codice: Seleziona tutto

root@mrtg:/home/zeta# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Codice: Seleziona tutto

root@mrtg:/home/zeta# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.10.10.1      0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.1.8     0.0.0.0         UG    1      0        0 eth0
quindi sul client:

Codice: Seleziona tutto

root@zeta-laptop:/home/zeta# route -n
Kernel IP routeing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.10.10.0      192.168.1.225   255.255.255.0   UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.1.8     0.0.0.0         UG    0      0        0 eth0
ma continuo a non raggiungere il 10.10.10.1:

Codice: Seleziona tutto

root@zeta-laptop:/home/zeta# traceroute 10.10.10.1
traceroute to 10.10.10.1 (10.10.10.1), 30 hops max, 40 byte packets
 1  mrtg (192.168.1.225)  0.207 ms  0.144 ms  0.124 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  *

gigyz
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: mar 9 ott 2007, 17:45

Messaggio da gigyz »

certo sul gateway che ha 10.10.10.1 che tabella di routing hai ? hai messo quello che ti ho suggerito io ? scommetto di no quindi i pacchetti arrivano sul 10.10.10.1 e poi escono su internet perchè seguono il default gw visto che non hai messo la route opportuna per tornare sui clients

zZeta
Linux 0.x
Linux 0.x
Messaggi: 18
Iscritto il: gio 30 set 2004, 0:00

Messaggio da zZeta »

non vorrei urtare la tua sensibilità, ma come fai a capire che i pacchetti arrivano al 10.10.10.1 e poi escono?
stando al traceroute non lo raggiungono nemmeno...

a parte il mio tono becero (scusalo), continuo a non capire perchè dall'interfaccia 10.10.10.2 non pingo il mio pc (192.168.1.102) anche se ho impostato la route corretta:

Codice: Seleziona tutto

route add -net 10.10.10.0/24 gw 192.168.1.225

gigyz
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: mar 9 ott 2007, 17:45

Messaggio da gigyz »

scusami ma che vuol dire che pinghi il 192.168.1.102 dall'interfaccia 10.10.10.2 ? che non lo pinghi dal server con 2 nic o da un pc attaccatto all'eth che ha il 10.10.10.2 ?
Il traceroute usa i ping questo vuol dire che se il pacchetto va e non torna perchè non ha la route per tornare non ti dirà che è arrivato a un determinato hop perchè fisicamente non gli arriva l'informazione, il routing deve funzionare in entrambe le direzioni altrimenti la rete non andrà e il traceroute non ti è di alcun aiuto in questo caso.
La mia era una supposizione visto che hai postato le tabelle di routing del server e dei client ma non quelle del default gw questo mi ha indotto a pensare che tu non abbia intervenuto sul gateway e finchè non lo farai non potrà funzionare.
L'unica cosa che ti puo aiutare è guardare i pacchetti sulle eth io per esempio lo faccio con gkrellm su pc che hanno X oppure con tcpdump se non lo hanno così riesci a vedere dovre transitano i pacchetti.
Tu dici di aver impostato la route con:
route add -net 10.10.10.0/24 gw 192.168.1.225
bene ma dove ? sui client ... quindi un pacchetto che parte da 192.168.1.1 e deve andare su 10.10.10.X sa che deve passare per 192.168.1.225 ma dopo che il pacchetto arriva su 10.10.10.1 deve tornare indietro su 192.168.1.1 ma se non c'è la route del tipo:
route add -net 192.168.1.0/24 gw 10.10.10.2 (questa messa sul gateway)
che gli dice che per tornare su 192.168.1.1 deve ripassare da 10.10.10.2 il pacchetto andrà perso o se sulla macchina c'è un default gw verrà instradato li non "matchando" con nessuna altra regola precedente.
Spero di essere stato chiaro perchè più di così non ci riesco, comunque sarebbe meglio se postassi anche la tabella di routing del gateway.

Rispondi