martedì, Dicembre 3, 2024

Connessione di una linea ADSL con PPPoE in FreeBSD e creazione di una piccola LAN

Questo documento proviene da , sito da tempo dismesso. La sua documentazione è qui pubblicata in modo tale che non vada persa e che possa quindi continuare a essere utile come lo era un tempo su FreeBDI.org.

Nella vostra città e/o provincia è finalmente arrivata la connessione ADSL, voi avete fatto il vostro abbonamento e il tecnico (forse Telecom?) è venuto a testare linea e modem (o router) ma, come al solito, di sistemi Unix, BSD, Linux etc. non ce ne capisce niente. Quindi probabilmente vi ha testato la linea sul solito Windows di turno e se ne è andato felice e contento di non aver dovuto mettere le mani su un sistema così criptico e complesso quale una *BSD. Beh, nessuna meraviglia. In Italia e non solo c’è da aspettarselo eccome!

I sistemi Unix son ancora riservati ad una alquanto stretta nicchia di addetti ai lavori e appassionati.
Quindi procediamo a collegarci il nostro bel modem nuovo alla FreeBSD…da soli. ;-)

Questo articolo vi spieghera’ come collegare un modem (ma anche un router) ADSL di tipo Ethernet.

Ricordate che, comunque, soprattutto per una macchina Unix è sempre preferibile avere un modem con interfaccia Ethernet anzichè USB in quanto molto più versatile, facile da collegare, va su qualsiasi sistema operativo e qualsiasi Unix anche vecchio tramite appunto PPPoE o PPPtP, etc.

In questo articolo vi spiegherò il PPPoE, quello attualmente più usato per questo tipo di apparati. Tralascio (voglio sperare) come collegare i cavi e cavetti alla macchina e alla linea in quanto credo che ci possiate riuscire da soli. Sappiate comunque che se avete più di 2 macchine e/o comunque siete dotati di HUB oppure meglio ancora SWITCH di rete, ci vogliono cavi Ethernet di tipo normale, ossia NON INCROCIATI. I cavi incrociati o crossed, infatti servono SOLO per collegare 2 SOLE macchine senza hub o switch ma, quindi, direttamente da scheda a scheda.

SITUAZIONE: La vostra macchina è dotata di una o due schede di rete Ethernet PCI (ma non credo sia un obbligo, possono essere anche delle vecchie ISA… con meno prestazioni) 10/100 (ma va bene anche appunto una scheda a 10mbit/s), un modem ADSL collegato ad una scheda di rete (ad es. una Realtek “rl0”) e, magari, (ma non necessario se non avete una rete privata interna) una seconda scheda di rete collegata appunto alla vostra rete interna (ad es. una DecNet “dc0”).

FreeBSD, al contrario di Linux, dà un nome specifico ad ogni scheda di rete che avete, a seconda del chip che la compone, mentre Linux le chiama tutte ethX in ordine (eth0 la prima, eth1 la seconda, ecc.). Qui, se avete ad es. 2 Realtek identiche con chip (il “classico” più economico che si trova in commercio) “Rlt 8129/8139”, verrano chiamate: rl0 la prima e rl1 la seconda (man (4) rl), mentre se avete (come nel nostro esempio seguente per chiarezza) una Realtek e una Decnet verranno chiamate rl0 e dc0.

1) Configurare la (“le” per chi ne ha 2 o più) schede di rete e le varie impostazioni di rete annesse e connesse in /etc/rc.conf, configurando l’IP privato, netmask ed eventuali altri parametri.

Per l’esempio presentato qui sopra, per farla breve, bisognerà aggiungere a /etc/rc.conf:

SE AVETE 2 SCHEDE:

    -------------------------------------------------- 
    network_interfaces="auto"
    ifconfig_rl0="inet 10.0.0.1 netmask 255.255.255.0 " 
    #questa scheda va al modem potrebbe anche essere stata SENZA l'IP privato


    ifconfig_dc0="inet 192.168.0.1 netmask 255.255.255.0" 
    #questa DEVE avere invece un IP privato e DEVE essere di un altra rete rispetto la prima scheda
    ifconfig_lo0="inet 127.0.0.1"
    gif_interfaces="YES"
    gif_interfaces="gif0 gif1"
    cloned_interfaCES="GIF0 GIF1"
    hostname="free.my.domain"
    #facoltativo, solo se avete intenzione di usare ipv6
    ipv6_enable="YES"

    # questa SOLO sula macchina GW, che esce in internet
    gateway_enable="YES"
    #se ci fossero + reti da gestire, ma si puo' abilitare anche con un server (voi) + un client
    router_enable="YES"
    #questa sez. è per far partire la connessione ppp all'avvio
    ppp_enable="YES"
    ppp_mode="ddial"
    #ppp_nat="YES"
    ppp_profile="adsl" # or your provider
    -----------------------------------------------------------
    SE AVETE SOLO UNA SCHEDA (ad es.Realtek)   
    ----------------------------------------------------------- 
    network_interfaces="auto"
    ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
    ifconfig_lo0="inet 127.0.0.1"
    #facoltativo, solo se avete intenzione di usare ipv6
    ipv6_enable="YES"
    gif_interfaces="YES"
    gif_interfaces="gif0 gif1"
    cloned_interfaces="gif0 gif1"
    hostname="free.my.domain"
    #questa sez. è per far partire la connessione ppp all'avvio
    ppp_enable="YES"
    ppp_mode="ddial"
    #ppp_nat="YES"
    ppp_profile="adsl" # or your provider
    ------------------------------------------------------------- 

N.B: Cancellate eventuali precedenti settaggi non corretti o ripetitivi fatti da sysinstall o altri.
N.B: Ho volutamente preso come esempio le schede Realtek perchè, oltre che essere quelle più vendute sul mercato (e quindi le più economiche), hanno una particolarità: fanno un po’ schifo! Quindi bisogna farle funzionare a 10mbit/s (una velocità più che sufficiente per Internet…anzi velocissima, direi irraggiungibile quasi da ADSL per ora), soprattutto se è collegata al modem, ed ancora a maggior ragione se questo modem è come quello che uso io, ossia un Alcatel Speed Touch Home ethernet. Questo connubio di 3 cose: FreeBSD + Alcatel + Realtek per funzionare DEVE essere settato così, pena la continua caduta di linea e crolli di PPP.

Con questo settaggio le cose invece vanno ottimamente, in pratica si “taglia” il funzionamento a 100 mbps della scheda stessa.
ATTENZIONE: queste Realtek non funzionano bene a 10/100 nemmeno come semplici interfacce per collegare 2 PC in una rete interna, soprattutto con cavi crossed più lunghi di 8-10 metri. Impostare quindi, ancora una volta, a “media 10baseT/UTP”. Con altri chip di altre schede tutto sembra funzionare a meraviglia (per la cronaca).

2) Editare il file /etc/ppp/ppp.conf e farlo diventare così:

Attenzione: dopo le prime parole introduttive delle sezioni “default” (dovra’ sempre esserci) e “adsl”, DOVETE NECESSARIAMENTE tenere staccato dal margine del file tutto il resto delle stringhe, pena il NON funzionamento. Indentare!

   
        default:
          ident user-ppp VERSION (built COMPILATIONDATE)
          set device PPPoE:rl0
          set log Phase  tun command
          set speed sync
          set redial 15  28800
          set reconnect  15  28800
          set timeout 0
          set mru 1492
          set mtu 1492
          set ctsrts off
          enable dns
          enable lqr
          set dial
          set login
        # nat enable yes   #facoltativo, dipende da vs.vostro firewall+natd
        adsl:  #questo DEVE essere = a "ppp_profile" in rc.conf
          set ifaddr  10.0.0.1/0  10.0.0.138/0  255.255.255.0 0.0.0.0
          #oppure anche funzionanate ugualmente una cosa del tipo:
          #set ifaddr  10.0.0.1/0  10.0.0.2/0  255.255.255.0 0.0.0.0
          add default HISADDR
          set authname vostro_id_del_provider_QUI
          set authkey  vostra_pass-del_provider_QUI

3) Editare l’ultimo file, cioè /etc/resolv.conf e, se avete settato come nell’esempio qui sopra, nel vostro /etc/ppp/ppp.conf la stringa “enable dns” (CONSIGLIATO), dovrete solo mettere:

       domain my.domain

VICEVERSA, se non avete messo quella stringa, vuol dire che vorrete settare a mano i DNS del vostro provider e NON farglieli cercare al pppd, quindi ad es. per i DNS dell’ADSL di telecom sarebbe:

        domain    my.domain
        nameserver 212.216.112.112
        nameserver 212.216.172.62

N.B: Il dominio “my.domain”, preso come esempio (potete usare benissimo questo!), NON deve essere possibilmente un dominio esistente in Internet come “ferrari.it” o “freebsd.org” e comunque fate ATTENZIONE che, se avete settato come host in /etc/rc.conf hostname=”free.my.domain”, il dominio in resolv.conf, dovrà essere appunto “my.domain” (cioè lo stesso identico), così come il settaggio degli hosts in /etc/hosts, ovverosia:

        -------------/etc/hosts---------------------------------------------
        ::1                     localhost.my.domain     localhost
        127.0.0.1               localhost.my.domain     localhost
        192.168.0.1             free.my.domain          free
        192.168.0.1             free.my.domain
        #se avete la seconda scheda ethernet con un PC connesso
        192.168.0.2             client1.my.domain       client1

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

4) A questo punto, o riavviate il sistema per fare prendere tutti i parametri della vostra rete (PREFERIBILE e CONSIGLIATO), oppure passiamo a mano con il comando “ifconfig” i settaggi delle nostre schede:

Se avete una sola scheda:

" #ifconfig rl0 192.168.0.1 media 10baseT/UTP up "
" #ifconfig gif0 create up "   ---> se volete abilitare in futuro ipv6 (facoltativo)

Se avete 2 schede (rl0 + dc0 ad esempio):

" #ifconfig rl0 media 10baseT/UTP up "
" #ifconfig dc0 192.168.0.1 "
" #ifconfig gif0 create up "   ---> se volete abilitare in futuro ipv6 (facoltativo)

5) Se abbiamo riavviatove tutto è stato fatto correttamente, il modem ? stato acceso prima di riaviare, il sistema dovrebbe gia’ essere connesso in rete tranquillamente.Lo vediamo facendo un ping ad una macchina in rete:

        
# ping freebsd.org
PING freebsd.org (216.136.204.21): 56 data bytes
64 bytes from 216.136.204.21: icmp_seq=0 ttl=50 time=231.748 ms
64 bytes from 216.136.204.21: icmp_seq=1 ttl=50 time=235.584 ms
64 bytes from 216.136.204.21: icmp_seq=2 ttl=50 time=233.874 ms
64 bytes from 216.136.204.21: icmp_seq=3 ttl=50 time=229.710 ms

--- freebsd.org ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 229.710/232.729/235.584/2.210 ms

Così è tutto OK, killiamo quindi con CTRL+C.

E osserviamo anche l’output di ifconfig -a, che ci servirà anche per vedere se le nostre interfacce di rete sono attive come volevamo e se la sezione di “tun0” mostra l’IP della nostra connessione a Telecom (o altro provider, in questo caso 62.211.123.321):

       # ifconfig -a
       dc0: flags=8843 mtu 1500
               inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
               inet6 fe80::280:adff:fe00:3c44%dc0 prefixlen 64 scopeid 0x1
               ether 00:80:ad:00:3c:44
               media: Ethernet autoselect (none)
               status: active
       rl0: flags=8843 mtu 1500
               inet6 fe80::240:f4ff:fe05:b774%rl0 prefixlen 64 scopeid 0x2
               ether 00:40:f4:05:b7:74
               media: Ethernet 10baseT/UTP
               status: active
       lp0: flags=8810 mtu 1500
       stf0: flags=0<> mtu 1280
       lo0: flags=8049 mtu 16384
               inet6 ::1 prefixlen 128
               inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
               inet 127.0.0.1 netmask 0xff000000
       ppp0: flags=8010 mtu 1500
       sl0: flags=c010 mtu 552
       faith0: flags=8002 mtu 1500
       gif0: flags=8051 mtu 1280
               tunnel inet 62.211.171.122 --> 213.26.195.213
               inet6 fe80::280:adff:fe00:3c44%gif0 prefixlen 64 scopeid 0x9
               inet6 3ffe:8171:51:ffff::2451 --> 3ffe:8171:51:ffff::2450 prefixlen 128
       tun0: flags=8151 mtu 1492
               inet6 fe80::280:adff:fe00:3c44%tun0 prefixlen 64 scopeid 0xa
               inet 62.211.123.213 --> 192.168.100.1 netmask 0xffffff00
               Opened by PID 63

Se invece avete optato per lanciare da voi la connessione dovrete usare il comando:

   " #ppp -ddial adsl "
   oppure nel modo interattivo gestendo il prompt di ppp con:

   " # ppp
   Working in interactive mode
   Using interface: tun
   ppp ON freeze>

A quel prompt quindi si da l’equivalente comando di cui sopra, cioè “ppp ON freez> dial” .

Per chi ha le 2 schede di rete e un altro PC connesso o una rete interna LAN:

A questo punto, con questo tipo di settaggio, non solo abbiamo configurato PPPoE, ma abbiamo anche messo in condizione la nostra rete di essere operativa, ossia di “PINGARE” (da comando ping) fra di loro le nostre macchine e quindi anche di navigare in Internet dalla macchina client eventualmente connessa (client1 nell’esempio in /etc/hosts) alla macchina server (free nel nostro esempio. ossia il gateway) e quindi all’esterno.

L’accorgimento che dovremo adottare, in ultimo, sulla (o sulle) macchine client è di settare anche in esse il gateway di default in /etc/rc.conf (se fossero macchine FreeBSD) con:

   defaultrouter=192.168.0.1 (ossia la macchina server)

e in /etc/hosts delle suddette macchine client devono comparire gli IP e gli alias come in /etc/hosts del server. Ad es.:

       -----------/etc/hosts del client----------------

       ::1                     localhost.my.domain     localhost
       127.0.0.1               localhost.my.domain     localhost
       192.168.0.2             client1.my.domain       client1
       192.168.0.2             client1.my.domain
       #questo ? il server/gateway
       192.168.0.1             free.my.domain           free
       #questi son eventuali altri clients connessi tramite hub o altro
       192.168.0.3             client2.my.domain        client2
       192.168.0.4             client3.my.domain        client3
       -------------------------------------------------

Andate a vedere anche il documento riguardante l’implementazione di un firewall con NATd per integrare l’argomento.

In un futuro sicuramente non lontano, l’argomento sulle reti/gateway/router ecc. verrà ampliato e trattato nuovamente, per ora questo mi sembra più che sufficiente. ;-)


RIFERIMENTI

man (8) ppp man (8) pppd man (5) rc.conf man (5) resolv.conf man (8) ifconfig man (5) hosts

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie