Pagina 1 di 1

[RISOLTO] Condividere ADSL su 2 PC via bluetooth

Inviato: gio 13 gen 2011, 19:21
da michele.p
Holà,

come da titolo vorrei condividere l'ADSL tra il fisso e il portatile attraverso bluetooth, ma c'è qualcosa che sbaglio (sicuramente, altrimenti riuscirei a connettermi :D ).
In sostanza l'idea è di collegarmi ad Internet dal portatile (Mandriva 2010.2) sfruttando bluetooth "passando" dal PC fisso (Slackware 13.1): in sostanza "entro" con il portatile dall'interfaccia bluetooth (bnep0-pan0 sul quale ho fatto un bridging) poi faccio un forwarding sull'interfaccia eth0. Detto così è intuitivo e facile, in pratica c'è qualche intoppo. :p Dico subito che la scheda di rete è connessa ad un modem (192.168.100.1) Telecom Alice DSL-302T
Quello che segue è l'ouput di ifconfig dopo la configurazione:

Codice: Seleziona tutto

bash-4.1# ifconfig
bnep0     Link encap:Ethernet  HWaddr 00:09:dd:50:82:1a  
          inet6 addr: fe80::209:ddff:fe50:821a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8928 (8.7 KiB)  TX bytes:1633 (1.5 KiB)

eth0      Link encap:Ethernet  HWaddr 00:a0:d2:1b:73:86  
          inet6 addr: fe80::2a0:d2ff:fe1b:7386/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44861 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51023 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28804977 (27.4 MiB)  TX bytes:30937108 (29.5 MiB)
          Interrupt:17 Base address:0x1c00 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3688 (3.6 KiB)  TX bytes:3688 (3.6 KiB)

pan0      Link encap:Ethernet  HWaddr 00:09:dd:50:82:1a  
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::e401:88ff:fe1f:d414/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4932 (4.8 KiB)  TX bytes:1042 (1.0 KiB)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:82.51.154.186  P-t-P:192.168.100.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:44697 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50854 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:27811668 (26.5 MiB)  TX bytes:29806989 (28.4 MiB)

bash-4.1# 
In sostanza il fisso ha indirizzo (pan0-bnep0) 10.0.0.1 e il portatile 10.0.0.2: un ping dal fisso al portatile e viceversa da esito positivo (in sostanza il fisso vede il portatile e viceversa). A questo punto ho attivato il forwarding:

Codice: Seleziona tutto

echo 1 > /proc/sys/net/ipv4/ip_forward
e ho attivato il packet filtering su tutte le interfacce, sinteticamente,

Codice: Seleziona tutto

echo > 1 /proc/sys/net/ipv4/conf/*/rp_filter
Prima di impostare le regole con iptables avevo:

Codice: Seleziona tutto

bash-4.1# iptables -L 
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         
Quindi ho impostato le regole iptables come da comandi che seguono:
bash-4.1# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
bash-4.1# iptables -A FORWARD -i pan0 -j ACCEPT
bash-4.1# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
quindi iptables -L fornisce ora:

Codice: Seleziona tutto

bash-4.1# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Domanda: perché il portatile vede la rete (in sostanza si collega al gateway cioè il PC fisso con indirizzo 10.0.0.1) però non si collega ad Internet? ...dove ho toppato con iptables? :D ...è giusto fare il forwarding su eth0 o dovrei farlo (non credo però) su ppp0?

...spero di aver dato tutte le informazioni del caso... :roll:

Re: Condividere ADSL su 2 PC via bluetooth

Inviato: ven 14 gen 2011, 11:41
da michele.p
Se servono aggiungo altre due informazioni. Dal PC fiso (Slackware 13.1 ..quindi quello che funge da gateway per il bluetooth e che fa poi il forwarding su eth0):

route -n

Codice: Seleziona tutto

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.1   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 pan0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
brctl show

Codice: Seleziona tutto

bridge name     bridge id               STP enabled     interfaces
pan0            8000.0009dd50821a       no              bnep0
Bye 8)

Re: Condividere ADSL su 2 PC via bluetooth

Inviato: mar 8 feb 2011, 20:20
da albatross
vediamo se ho capito bene...
1. hai un pc fisso con Slack che tramite modem usb si collega ad internet
2. Slack ha un'interfaccia di rete bluetooth pan0 (10.0.0.1)
3. hai un portatile con Mandriva che ha un'interfaccia di rete bluetooth (10.0.0.2)
4. il portatile raggiunge il pc fisso tramite la rete bluetooth

L'interfaccia di rete del modem Alice è la ppp0 e non la eth0 (perché il modem utilizza una connessione punto punto) il vantaggio di questa soluzione è che il pc che si collega ad internet ha direttamente l'indirizzo IP pubblico associato all'interfaccia presente sulla macchina non essendoci di mezzo il NAT tra rete LAN interna e WAN esterna, così non hai problemi con le porte di emule o, essendo più seri, se ti vuoi tirare su un web server accessibile da internet)
da quello che vedo dall'ultimo post il default gateway è impostato verso la ppp0 quindi in modo corretto.

secondo me l'errore sta in questa riga
bash-4.1# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
con questo comando il routing avviene verso l'interfaccia eth0

prova con
bash-4.1# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

fammi sapere se risolvi...

Re: Condividere ADSL su 2 PC via bluetooth

Inviato: mar 8 feb 2011, 21:56
da michele.p
Esatto è così: ho risolto praticamente il giorno dopo aver inserito il post, solo che dimenticai in seguito di aggiornarlo. :-/

Ad ogni modo questo è lo script iptables.sh che ho creato per il forwarding:

Codice: Seleziona tutto

#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 1 >> $f
done
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i bnep0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
in più, avendo un solo device bluetooth, ho eliminato anche il bridging (avere la pan0 non mi servirebbe a nulla) e la connessione avviene direttamente con l'interfaccia bnep0. :D ...velocità? ...tra i 150 e i 180kbps a distanza di circa tre metri. :-)

Thanks & Bye 8)

Re: Condividere ADSL su 2 PC via bluetooth

Inviato: mar 8 feb 2011, 21:59
da albatross
Non c'è che dire.... complimenti per l'ingegno!! :thumbright:

Re: [RISOLTO] Condividere ADSL su 2 PC via bluetooth

Inviato: mar 8 feb 2011, 22:10
da michele.p
Procedura:

1) Sul PC che si vuole faccia da master:

Codice: Seleziona tutto

pand --listen --master --role NAP
2) Sul client:

Codice: Seleziona tutto

pand --connect --role PANU
3) Dal PC master:

Codice: Seleziona tutto

pand --connect B_ADDR_client
4) Dal PC client:

Codice: Seleziona tutto

pand --connect B_ADDR_master
Doce B_ADDR_client e B_ADDR_master sono gli address bluetooth che si ottengono con il comando "hcitool scan"

5) Impostare l'interfaccia sul master:

Codice: Seleziona tutto

ifconfig bnep0 10.0.0.1 netmask 255.255.255.0
6) ...e sul client:

Codice: Seleziona tutto

ifconfig bnep0 10.0.0.2 netmask 255.255.255.0
7) Impostare il gateway per il client:

Codice: Seleziona tutto

route add default gw 10.0.0.1
8 ) Lanciare lo script per il forwarding riportato sopra

Bye 8)