Post

Raspberry Pi 4 come Router

Quest’oggi cercheremo di creare il proprio router da viaggio/casalingo.

Perchè usare il Raspberry Pi 4 come Router Casalingo?

Ho avuto la necessità di portarmi un router per lavorare in smartworking e portare avanti dei progetti e mi sono trovato con la necessità di avere un buon router ma con piccole dimensioni che fosse facilmente trasportabile, un router da viaggio.

Ci sono tante cose che odio dei router “commerciali”:

  1. Sicurezza – il più delle volte i sistemi stessi sono ricchi di vulnerabilità e fixati molto lentamente, UPnP abilitato di default e non sono in grado di separare la rete LAN dalla Guest il più delle volte.
  2. Configurazione Hardware – Preferisco gestire un AP (Access Point) “scemo” dietro ad un firewall/router, che avere la soluzione all-in-one, che non riesce a fare le cose il più delle volte in modo giusto. Senza neanche considerare come vengono configurate la Cpu e la ram su queste scatole.
  3. Software non proprio completi – WireGuard? OpenVPN? accesso a delle regole firewall? MultiWAN? No, mai visto niente del genere. Al massimo ti mettono la possibilità di cambiare il DNS server e modificare il pool di ip del server DHCP.

Scommetto che riusciresti ad aggiungere altri punti, ma arriviamo al succo.

Ah, l’RPi4 può andare vicino al gigabit di velocità. Senza nessun problema proprio.

Desktop View

Cosa voler ottenere

Questo è quello che volevo ottenere: 2 VLAN – la Guest e LAN (le reti locali saranno connesse sulla porta ethernet onboard del raspberry e poi collegate verso uno switch), 1 connesione Gigabit DHCP verso l’ISP con l’ausilio di un adattatore USB2Eth esterno e l’ultimo pezzo del puzzle – access point esterno (Archer C60v1, flashed con il firmware OpenWRT), il WiFi sul Pi non è così buono – è una 1×1 antenna con bassa portata, che puoi usare per conetterla ad altri access point e usare la rete WiFi come failover per connettersi a internet, ma è meglio avere un AP autonomo per il wi-fi. (Oppure potete aggiungere un ulteriore antenna con un adattatore USB2 al Pi, avete la libertà di poter fare/aggiungere)

Desktop View

Installazione OpenWRT

Andate sul sito di OpenWRT e scaricate l’ultima versione del firmware per il vostro Pi4.

Firmware OpenWRT

Una volta scaricato, aprite Raspberry Pi Imager o balenaEtcher e flash l’immagine sulla vostra SD-card (assicuratevi che sia vuota come sempre) per come fare ho scritto qualcosa al riguardo in questa pagina. sfortunatamente il filesystem non si espanderà automaticamente. (uso GParted su Linux Mint per farlo)

Desktop View

Desktop View

Desktop View

Inserite la SD-card nel Pi4 e iniziamo a configurare OpenWRT

OpenWRT configurazioni iniziali

All’accensione il RPi4 riceverà il seguente indirizzo ip 192.168.1.1, scegli il tuo device per connetterti sulla network interface card del tuo Pi, e assegna un indirizzo statico es. 192.168.1.0/24, 192.168.1.10 con la netmask di 255.255.255.0. ssh nel Pi: ssh root@192.168.1.1 con password lasciata vuota.

Ironia della sorte, per questa configurazione, abbiamo la necessità di avere un altro router funzionante, connesso ad internet. Questo perchè necessitiamo di installare Luci (WebUI per OpenWRT) e i nostri drivers per l’adattatore USB2Eth esterno. Dato che le immagini presenti di openwrt non hanno presente Luci di default. Ricordatevi di cambiare password all’accesso:

1
passwd

Andiamo ad editare il nostro network configuration file in modo da connetere il nostro pi alla nostra rete network esistente:

/etc/config/network

Esempio LAN interface:

1
2
3
4
5
6
7
8
    config interface 'lan'
    option type 'bridge'
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '192.168.1.99'
    option netmask '255.255.255.0'
    option gateway '192.168.1.254'
    option dns '1.1.1.1' #in alternativa 8.8.8.8

per rendere effetive le nostre configurazioni:

1
service network restart

Attaccate il vostro pi al vostro router di casa e dopo che il sistema è stato riavviato o il servizio di rete riavviato ssh sul vostro OpenWRT Pi4 e verificate con dei ping 8.8.8.8 e google.com per verificare che il vostro DNS e instradamento di rete funzioni correttamente.

Se passate i seguenti test di connettività installiamo i seguenti pacchetti per rendere più pratico il nostro router:

Update i pacchetti dal repository:

1
opkg update

Installate i software base consigliati:

1
opkg install htop nano tmux iftop

Installate LuCI webUI, per un managment piu pratico:

1
opkg install luci-ssl-nginx

Abilitate e fate partire nginx:

1
2
service nginx enable
service nginx start

Abilitare USB-to-Ethernet adapter:

Nel mio caso ho rtl8153, ma i driver 1852 funzioneranno:

1
opkg install kmod-usb-net-rtl8152

Se il vostro USB2Eth è differente, usate il seguente comando per trovare e installare i driver appropiati:

1
opkg list kmod-usb-net*

Collegate il vostro USB2Eth adapter e verificate le network interfaces list con il seguente comando:

1
ip a

per confermare che il vostro device sia presente, in caso di esito negativo, riavviate. Nel mio caso è uscito subito fuori con il nome eth1.

Esempio command output ip a:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP group default qlen 1000
        link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
      3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether 00:00:00:00:00:00 ff:ff:ff:ff:ff:ff
      5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
         inet 192.168.1.1/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
         inet6 fe80::dea6:32ff:feac:78c9/64 scope link
       valid_lft forever preferred_lft forever
      6: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff

Ora il nostro sistema è pronto, configurate le vostre interfacce e i pacchetti richiesti.

Conclusione

L’esperimento di usare il RPi4 come router è andato alla grande e non è escluso che potrei continuare e lasciare definitiva questa soluzione anche in casa. Anche per provare qualcosa di differente da pfSense/OPNSense: OpenWRT con RPi4 e le ultime patches ho ottenuto un aggeggino con 4 GB di RAM e almeno 30 GB di storage. Capace anche di soppiantare aggeggi SOHO (Small Office/Home Office network) più commerciali.

Questo post è sotto licenza CC BY 4.0 a nome dell'autore.

DISCLAIMER: Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge N°62 del 07/03/2001. Leggi di più

© Cybertome. Alcuni diritti riservati.

Servizio offerto da Jekyll con tema Chirpy