Bridge di rete

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.
Rispondi
Avatar utente
Zapotech
Packager
Packager
Messaggi: 155
Iscritto il: gio 7 set 2006, 22:58
Slackware: -current
Kernel: 2.6.32.5-smp
Desktop: kde 4.3.4
Località: Roma

Bridge di rete

Messaggio da Zapotech »

Ciao a tutti! :)

Sto cercando di creare un bridge di rete ma alcune macchine della rete non si vedono! :?
Spero possiate aiutarmi a venirne a capo!

Il computer PC"A" si connette a Internet tramite Modem/Router connesso con cavo di rete;
Il computer PC"A" ha anche una scheda wireless (wlan0), attraverso la quale è connesso al PC"B".
Il computer PC"A" viene dotato, inoltre, di scheda di rete virtuale "tap0" per essere utilizzata con VirtualBox.

grafico: (...ci provo... ;))

Internet
/|\
Modem/Router (192.168.1.254)
/|\
eth0
/|\
PC"A" ---> tap0 > Guest VirtualBox (192.168.1.156)
|
|__ --> wlan0 > PC"B" (192.168.1.103)


dotazioni:
PC"A": Slackware 12.2 (kernel 2.6.28 - eth0:b44; wlan0:iwl3945)
PC"B": Slackware 12.2 (kernel 2.6.28 - wlan0:ath5k)
Guest VirtualBox: VectorLinux
(....ebbene sì...sono "abbastanza" in fissa con il mondo slackware...! :))

obiettivi: creare un Bridge di Rete fra diverse interfacce, in modo da avere indirizzi
appartenenti al medesimo intervallo: 192.168.1.0/24.
Le macchine devono potersi connettere ad Internet attraverso
PC"A" e devono "vedersi" perchè appartengono ad un'unica LAN (samba).

risultato attuale:
positivo: \:D/
- tutte le macchine accedono ad Internet attraverso PC"A".
- La "Guest VirtualBox" vede direttamente il Modem/Router.

negativo: :banghead:
- La "Guest VirtualBox" NON vede PC"B" (ping: DESTINATON HOST UNREACHABLE) e viceversa.
- PC"B" NON vede direttamente il Modem/Router (ping: DESTINATON HOST UNREACHABLE)


...ecco ciò che ho fatto, cronologicamente:

In PC"A":
imposto eth0 con:

Codice: Seleziona tutto

ifconfig eth0 192.168.1.178
	route add default gw 192.168.1.254 eth0
imposto wlan0 con:

Codice: Seleziona tutto

iwconfig wlan0 essid MyEssid mode ad-hoc
imposto tap0 con (e dopo aver dato "modprobe tun"):
(per creare, in PC"A", l'interfaccia virtuale "tap0" da utilizzare per il Guest VirtualBox)

Codice: Seleziona tutto

/etc/rc.d/rc.vboxbridge start 1 MyUser
poi, setto in modalità promiscua eth0 e wlan0, con:

Codice: Seleziona tutto

ifconfig eth0 promisc
 	ifconfig wlan0 promisc
creo il bridge di rete "br0":

Codice: Seleziona tutto

brctl addbr br0
	brctl addif br0 eth0
	brctl addif br0 wlan0
	brctl addif br0 tap0
In PC"A", con "brctl show", ottengo:

Codice: Seleziona tutto

bridge name     bridge id               STP enabled     interfaces
br0             8000.001302475d76       no              tap0
                                                        eth0
                                                        wlan0
pan0            8000.000000000000       no

In PC"A", con "ifconfig" ottengo:

Codice: Seleziona tutto

br0       Link encap:Ethernet  HWaddr 00:15:c5:14:13:2a
          inet addr:192.168.1.178  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:18268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41093 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2074141 (1.9 MiB)  TX bytes:34231773 (32.6 MiB)

eth0      Link encap:Ethernet  HWaddr 00:15:c5:14:13:2a
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0
          TX packets:131 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:39344 (38.4 KiB)  TX bytes:33539 (32.7 KiB)
          Interrupt:17

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:413 errors:0 dropped:0 overruns:0 frame:0
          TX packets:413 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:36739 (35.8 KiB)  TX bytes:36739 (35.8 KiB)

tap0      Link encap:Ethernet  HWaddr ca:c4:a2:0e:6f:78
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:13:02:47:5d:76
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wmaster0  Link encap:UNSPEC  HWaddr 00-13-02-47-5D-76-00-00-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
In PC"A" con "route", ottengo:

Codice: Seleziona tutto

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
localnet        *               255.255.255.0   U     0      0        0 br0
loopback        *               255.0.0.0       U     0      0        0 lo
default         192.168.1.254   0.0.0.0         UG    0      0        0 br0
In VirtualBox:
imposto le "Proprietà di Rete" con "Bridge di Rete" e come interfaccia di rete seleziono "tap0".


Nel "Guest VirtualBox" - VectorLinux:
imposto eth1 con:

Codice: Seleziona tutto

ifconfig eth1 192.168.1.156
	route add default gw 192.168.1.178
note:
da questa macchina riesco a navigare In Internet ed a pingare PC"A" (192.168.1.178) ed il Modem/Router (192.168.1.254)

output di "iptables -L" su PC"A":

Codice: Seleziona tutto

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
output di "iptables -L -t nat" su PC"A"

Codice: Seleziona tutto

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
In PC"B":
imposto wlan0 con:

Codice: Seleziona tutto

	iwconfig wlan0 essid "MyEssid" mode ad-hoc
	ifconfig wlan0 192.168.1.103
	route add default gw 192.168.1.178 wlan0
note:
Il PC"A" (192.168.1.178) ed il PC"B" si pingano correttamente!
Se invece, pingo il Modem/Router 192.168.1.254 NON ho risposta.
Se invece, pingo il "Guest VirtualBox" (192.168.1.156) NON ho risposta.

PC"B" non esce su Internet. Per riuscirci, devo predisporre un ip_forwarding sul PC"A":

su PC"A":

Codice: Seleziona tutto

echo 1 > /proc/sys/net/ipv4/ip_forward
	modprobe iptable_nat

aggiungo le segg. regole nella configurazione di iptables:

Codice: Seleziona tutto

iptables -A FORWARD -i br0 -s 192.168.1.0/24 -j ACCEPT
 
	iptables -A FORWARD -i br0 -p udp -j ACCEPT 					# Accetto il traffico UDP dall'esterno
	iptables -A FORWARD -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT 	# Accetto il traffico TCP sia ESTABLISHED,RELATED. 
 
	iptables -A FORWARD -j LOG --log-prefix="**FORWARD Dropped**:"
	iptables -A FORWARD -j DROP

	iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o br0 -j MASQUERADE
	iptables -t nat -A POSTROUTING -j ACCEPT
A questo punto riesco a navigare con PC"B" ma:
La "Guest VirtualBox" NON vede PC"B" (ping: DESTINATON HOST UNREACHABLE) e viceversa.
PC"B" NON vede direttamente il Modem/Router (ping: DESTINATON HOST UNREACHABLE). :?

Grazie e Ciao!

Avatar utente
slux
Linux 3.x
Linux 3.x
Messaggi: 789
Iscritto il: dom 20 mar 2005, 0:00
Nome Cognome: Andrea Amerini
Slackware: 14.1 x86
Kernel: 3.12.0-smp
Desktop: xfce 4.10
Località: Prato
Contatta:

Re: Bridge di rete

Messaggio da slux »

Scusa la mia osservazione di ignorante uomo di strada,ma 2 interfacce (eth0 e wlan0 ) sulla stessa classe di rete???E' corretto???

Avatar utente
Zapotech
Packager
Packager
Messaggi: 155
Iscritto il: gio 7 set 2006, 22:58
Slackware: -current
Kernel: 2.6.32.5-smp
Desktop: kde 4.3.4
Località: Roma

Re: Bridge di rete

Messaggio da Zapotech »

Ciao slux! :D

Se impostassi per ciascuna interfaccia, diversi intervalli di indirizzi (e senza creare "br0") .....no problem:

(Tralasciando, per semplicità, il "Guest di VirtuaBox") Suppongo:
- in PC "A" assegno l'indirizzo 192.168.1.10 a eth0 (connessa al Modem/Router)
- in PC "A" assegno l'indirizzo 192.168.0.10 a wlan0 (.......quindi diversi intervalli di indirizzi)
...con la conseguenza che, su PC "B", assegnerò alla wlan0 l'indirizzo (ad es.) 192.168.0.11

...impostando opportunamente l'ip_forwarding su PC "A" riesco ad avere entrambe le macchine su Internet,
ma da PC "B" non potrei accedere agli indirizzi di tipo "192.168.1.0/24" !

Quello che vorrei fare e ...spero :D ....si possa fare con la creazione di un bridge virtuale (...se ho ben capitola documentazione letta.... :shock: ) è sì ottenere tutti indirizzi dello stesso tipo (192.168.1.0/24), ma anche far vedere le macchine ..."all' estremità dei lati rispetto al bridge" (....dall'esempio del post precedente la "Guest di VirtualBox" e PC "B")

Che possa dipendere dal fatto che "br0" è costruito su una scheda di rete wired e su una scheda di rete wireless? Sarebbe diverso se si lavorasse solo con schede di rete wired? :? :-k

Ciao e Grazie! :)

Avatar utente
slux
Linux 3.x
Linux 3.x
Messaggi: 789
Iscritto il: dom 20 mar 2005, 0:00
Nome Cognome: Andrea Amerini
Slackware: 14.1 x86
Kernel: 3.12.0-smp
Desktop: xfce 4.10
Località: Prato
Contatta:

Re: Bridge di rete

Messaggio da slux »

Mi spiace ,ma non ci capisco un gran chè di bridging.
Ma con il masquerading (NAT per intendersi) su PCA, devi riuscire a contattare anche la classe 192.168.1.0 su eth0 di PCA da PCB.
In fin dei conti PCA è un firewall che esegue NAT(default gateway) e PCB è un client della Lan interna.
Il bridge su wlan0 di PCA dovrebbe avere la stessa classe di rete di PCB come anche wlan0 PCA ovviamente.
Ripeto, non sono esperto di iptables,però mi sembra una situazione abbastanza normale.
Magari il bridge introduce della complessità che non vedo...non saprei.Ma perchè non usi VirtualBox precompilata da Sun?Il bridging funziona benissimo.Non è open lo so.Ma in fin dei conti, ne vale davvero la pena ?

Avatar utente
Zapotech
Packager
Packager
Messaggi: 155
Iscritto il: gio 7 set 2006, 22:58
Slackware: -current
Kernel: 2.6.32.5-smp
Desktop: kde 4.3.4
Località: Roma

Re: Bridge di rete

Messaggio da Zapotech »

Ciao!
slux ha scritto:Ma con il masquerading (NAT per intendersi) su PCA, devi riuscire a contattare anche la classe 192.168.1.0 su eth0 di PCA da PCB. In fin dei conti PCA è un firewall che esegue NAT(default gateway) e PCB è un client della Lan interna.
Se assegno:
PC "A" eth0: 192.168.1.10
PC "A" wlan0: 192.168.0.10
PC "B" wlan0: 192.168.0.11
Il risultato che ottengo è che:
-PC "A" e PC "B" si vedono
-PC "B" riesce ad uscire su Internet
-PC "B" non vede direttamente (ad es. non riesce a pingare) il Modem/Router connesso all'eth0 di PC "A" ed indirizzo di tipo 192.168.1.0/24.

Dovrei specificare qc di specifico per il NAT, che non ho riportato nel primo post? (es. iptables,....)
slux ha scritto:Il bridge su wlan0 di PCA dovrebbe avere la stessa classe di rete di PCB come anche wlan0 PCA ovviamente.
Sì, infatti. Creando "br0" riesco ad assegnare a tutte le interfacce indirizzi dello stesso tipo (192.168.1.0/24).
Il prob. è che gli estremi (rispetto al bridge) non si vedono! :banghead:
slux ha scritto:Ma perchè non usi VirtualBox precompilata da Sun?Il bridging funziona benissimo.Non è open lo so.Ma in fin dei conti, ne vale davvero la pena ?
...Credo proprio che proverò anche questa versione, .....anche se sotto certi aspetti gli interrogativi sugli ......"estremi del bridge di rete" permangono! ;)

Ciao e Grazie ancora! :D

Avatar utente
slux
Linux 3.x
Linux 3.x
Messaggi: 789
Iscritto il: dom 20 mar 2005, 0:00
Nome Cognome: Andrea Amerini
Slackware: 14.1 x86
Kernel: 3.12.0-smp
Desktop: xfce 4.10
Località: Prato
Contatta:

Re: Bridge di rete

Messaggio da slux »

PC "B" non vede direttamente (ad es. non riesce a pingare) il Modem/Router connesso all'eth0 di PC "A" ed indirizzo di tipo 192.168.1.0/24.
Questo è molto strano :-k .Secondo me il Nat non sta girando bene i pacchetti.Se fai un traceroute verso l'ip del router dal PCB che cosa ottieni?
Inoltre i pacchetti di tipo ICMP (ping) li gestisci bene con IPTABLES?
Infine :lol: il bridge br0 non dovrebbe essere solo tra tun0 e wlan0 ?
PCA fa Nat,quindi già gira anche i pacchetti del guest senza bisogno di metter in bridge eth0.
E ricordati di diversificare le classi di rete tra eth0 e br0 prima di riprovare.Fammi sapere.

Avatar utente
Zapotech
Packager
Packager
Messaggi: 155
Iscritto il: gio 7 set 2006, 22:58
Slackware: -current
Kernel: 2.6.32.5-smp
Desktop: kde 4.3.4
Località: Roma

Re: Bridge di rete

Messaggio da Zapotech »

...Nel frattempo, mi sono preso una pausa ed ho scaricato "VirtualBox" versione PUEL.
Avevi ragione, slux! :thumbright:

Ho fatto una prova ..."al volo" con due portatili:
premessa: Router Wireless: 192.168.0.1

- PC"A" wlan0 "192.168.0.101"
- "Guest VirtualBox" con rete settata a Bridge su wlan0 (dal Pannello "Impostazioni" -> "Rete")
.......una volta avviato il Guest, setto la eth0 (del Guest) a "192.168.0.10" e Gateway "192.168.0.1"
- PC"B" wlan0 "192.168.0.103"

Le 4 macchine (3 + Router) si vedono e pingano reciprocamente :occasion5:
Avviato "samba" sulle 3 macchine, tutto ok: son tutte visibili all'interno del dominio!
...e, cosa che non succedeva con la versione "OpenSource" del VirtualBox (....ma magari sbagliavo qc io ....non saprei!), la
"Guest" ..."uscendo" da PC "A", pinga direttamente il Router Wireless!

In questo caso le macchine ...."agli estremi del bridge" (Router e "Guest VirtualBox")si vedono benissimo!

Con calma (ad ore decenti.... :D) proverò quanto mi hai suggerito nell'ultimo post!

Ciao, Grazie e a presto!

PS: In PC"A", per impostare il Bridge con VirtualBox, non ho dovuto creare alcuna interfaccia virtuale di tipo "tapX", nè
un bridge di rete "br0".

Avatar utente
slux
Linux 3.x
Linux 3.x
Messaggi: 789
Iscritto il: dom 20 mar 2005, 0:00
Nome Cognome: Andrea Amerini
Slackware: 14.1 x86
Kernel: 3.12.0-smp
Desktop: xfce 4.10
Località: Prato
Contatta:

Re: Bridge di rete

Messaggio da slux »

Zapotech ha scritto:...Nel frattempo, mi sono preso una pausa ed ho scaricato "VirtualBox" versione PUEL.
Avevi ragione, slux! :thumbright:
Sono contento di averti aiutato :D
PS: In PC"A", per impostare il Bridge con VirtualBox, non ho dovuto creare alcuna interfaccia virtuale di tipo "tapX", nè
un bridge di rete "br0"
E' proprio questo il vantaggio della versione non Open.
Troppi sbattimenti con questi bridge secondo me....
Ciao e alla prossima :)

Rispondi