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.
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 »

Quoto gigyz...
Allora . . .
Da quel che vedo nelle regole di netfilter del gateway (quello con le due schede) hai impostato per la catena POSTROUTING la politica ACCEPT, che dovrebbe invece essere MASQUERADE... Perciò ti consiglio di aggiungere questa riga nelle impostazioni del firewall:

Codice: Seleziona tutto

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
per fare in modo che tutti il traffico che vuole uscire sulla eth1 venga mascherato. In pratica tutto quello che esce da eth1 risulta generato dal gateway e non dalla LAN.
Poi non capisco questa riga nella tabella di routing del gateway:

Codice: Seleziona tutto

0.0.0.0         192.168.1.8     0.0.0.0         UG    1      0        0 eth0
Hai già un default route che è 10.10.10.1, perciò questa riga non occorre...
Poi sul client non capisco questo:

Codice: Seleziona tutto

10.10.10.0      192.168.1.225   255.255.255.0   UG    0      0        0 eth0
Per la rete 10.10.10.0 devi usare come gw 192.168.1.1 e non tutti i computer (chiamati con il 255). Inoltre la riga più strana del client è questa:

Codice: Seleziona tutto

0.0.0.0         192.168.1.8     0.0.0.0         UG    0      0        0 eth0
Per pingare ad esempio Google devi indirizzare i pacchetti ad un computer della tua LAN??? Chi è l'1.8??? Il portatile???
Mi sembra che ci sia un po di confusione :roll: :roll: :roll: :roll:
Riconfigurati tutto quanto dall'inizio ricordandoti che:
  • La tua LAN deve avere come default route 192.168.1.1
  • Il tuo gateway deve avere come default route 10.10.10.1
  • Il tuo gateway deve avere la regola di MASQUERADE per far uscire la LAN su internet
  • Se gli indirizzi IP sono configurati correttamente, la tabella di routing ha già le strade per il ritorno dei pacchetti, infatti appare che per la 192.168.1.0 deve andare sull'interfaccia eth0, etc...
  • Il tuo gateway deve avere le regole di forward, che dovrebbero essere già impostate di default perché hai la politica ACCEPT
  • Il tuo gateway deve avere "1" nel file /proc/sys/net/ipv4/ip_forward per abilitare il forwarding...
Penso sia tutto... Se poi continua a non funzionare facci sapere... Male che vada ti posto direttamente le regole e i comandi da passare, ma dovresti riuscirci anche tu...

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

Messaggio da gigyz »

sardylan mi spiace dirti che ti stai sbagliando, per funzionare, se le defualt policy sono settate su ACCEPT, non serve alcuna regola per fare andare il routing e poi occhio che l'ip è giusto è un .225 e non .255 guarda bene. Per quanto riguarda invece la prima regola che menzioni hai ragione non ci vuole comunque dovrebbe andare lo stesso con gli ip che usa lui.
Il routing che suggerisci è sbagliato se vuole uscire su internet con tutti i client non può mettere come default gw 192.168.1.1 che poi potrebbe nemmeno esistere per come ha configurato lui la rete ma deve essere necessariamente il router che si affaccia su internet, comunque una cosa alla volta, meglio che prima funzioni il routing interno per internet poi ce ne occupiamo.

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 »

:? :? :? Scusate!!!! Era un po tardi ieri... ;) ;) ;)
Comunque avevo provato una roba simile a casa, ed avevo fatto più o meno così... Se li trovo vi posto gli script che avevo usato...
Se ho ben capito, il computer con le due schede deve fare da ulteriore gateway, giusto??? Nel senso che se pingo un computer della rete 10.10.10.0 devo avere un Hop in più...

EDIT: Come scritto sopra, posto il file che richiamavo con il parametro start quando volevo abilitare tutta la questione... Modifico i valori delle variabili iniziali con i valori per la rete di zZeta... L'unica cosa di cui non sono sicuro sono la WAN_MASK="255.255.255.0" e la WAN_BRDC="10.10.10.255"... Per il resto penso che funzioni...

Codice: Seleziona tutto

#!/bin/bash

LAN_IF="eth1"
LAN_IP="192.168.1.0"
LAN_MASK="255.255.255.0"
LAN_BRDC="192.168.0.255"

WAN_IF="eth0"
WAN_IP="10.10.10.2"
WAN_MASK="255.255.255.0"
WAN_BRDC="10.10.10.255"
WAN_GW="10.10.10.1"

if_addr() {
	echo -n "Configurazione interfaccie di rete... "
	ifconfig $LAN_IF down
	ifconfig $WAN_IF down
	ifconfig $LAN_IF $LAN_IP netmask $LAN_MASK broadcast $LAN_BRDC up
	ifconfig $WAN_IF $WAN_IP netmask $WAN_MASK broadcast $WAN_BRDC up
	echo "fatto!"
}

ip_route() {
	echo -n "Configurazione tabella di routing... "
	route add default gw $WAN_GW
	echo "fatto!"
}

firewall_tbl() {
	echo -n "Configurazione firewall... "
	
	# Disabilito il forward temporaneamente
	echo 0 > /proc/sys/net/ipv4/ip_forward
	
	# Reset del firewall
	iptables -F
	iptables -t nat -F
	iptables -t mangle -F
	iptables -X
	iptables -t nat -X
	iptables -t mangle -X
	
	# Politiche di default
	iptables -P INPUT DROP
	iptables -P FORWARD DROP
	iptables -P OUTPUT DROP
	
	# Regole per pacchetti frammentati, non validi, etc...
	iptables -A INPUT -f -j DROP
	iptables -A INPUT -m state --state INVALID -j DROP
	iptables -A OUTPUT -f -j DROP
	iptables -A OUTPUT -m state --state INVALID -j DROP
	iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
	iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
	iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
	
	# Regole per il natting
	iptables -t nat -A POSTROUTING -o $WAN_IF -j MASQUERADE
	iptables -A FORWARD -i $LAN_IF -o $WAN_IF -j ACCEPT
	iptables -A FORWARD -i $WAN_IF -o $LAN_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
	
	# Regole generali
	iptables -A INPUT -i lo -j ACCEPT
	iptables -A OUTPUT -o lo -j ACCEPT
	iptables -A INPUT -i $LAN_IF -j ACCEPT
	iptables -A OUTPUT -o $LAN_IF -j ACCEPT
	iptables -A INPUT -i $WAN_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A OUTPUT -o $WAN_IF -j ACCEPT
	
	# Regole finali e di chiusura
	iptables -A INPUT -j LOG
	iptables -A OUTPUT -j LOG
	iptables -A FORWARD -j LOG
	iptables -A INPUT -j DROP
	iptables -A OUTPUT -j DROP
	iptables -A FORWARD -j DROP
	
	# Riabilito il forward
	echo 1 > /proc/sys/net/ipv4/ip_forward
	
	echo "fatto!"
}

if [ $UID != 0 ]; then
	echo "Devi essere ROOT per usare questo script!!!"
	exit 1
fi

case "$1" in
	start)
		if_addr
		ip_route
		firewall_tbl
	;;
	*)
		echo "Usage:   `basename $0`  start"
		echo
		exit 1
	;;
esac
Per i "clients" della tua LAN:

Codice: Seleziona tutto

#!/bin/bash

LAN_IF="eth0"
LAN_IP="192.168.0.2"
LAN_MASK="255.255.255.0"
LAN_BRDC="192.168.0.255"
LAN_GW="192.168.0.1"

if_addr() {
	echo -n "Configurazione interfaccie di rete... "
	ifconfig $LAN_IF down
	ifconfig $LAN_IF $LAN_IP netmask $LAN_MASK broadcast $LAN_BRDC up
	echo "fatto!"
}

ip_route() {
	echo -n "Configurazione tabella di routing... "
	route add default gw $WAN_GW
	echo "fatto!"
}

if [ $UID != 0 ]; then
	echo "Devi essere ROOT per usare questo script!!!"
	exit 1
fi

case "$1" in
	start)
		if_addr
		ip_route
	;;
	*)
		echo "Usage:   `basename $0`  start"
		echo
		exit 1
	;;
esac

Rispondi