Buongiorno

Sono in attesa di ricevere un kit Raspberry Pi 4 Model B che vorrei usare come gateway vpn.
Ho un amico che ha configurato un server vpn WireGuard sulla sua Raspberry e ci permette di collegarci via app WireGuard come client.

Guardando in rete ho trovato tutorial per creare un server vpn ma non un client.
So che non esiste l'app di WireGuard per Raspberry quindi mi chiedevo come fare a creare una connessione, come client e usarla come gateway per alcuni dispositivi della mia rete che non supportano vpn, la Raspberry sarà collegata al mio router via ethernet, con IP fisso all'interno della rete.

Ora, sono nuovo a tutto questo ma mastico un pò di Linux, perciò vi chiedo:

  • Che OS consigliate? Pensavo di installare DietPi per avere un OS il più leggero possibile senza rinunciare alla GUI ma potrei benissimo, una volta configurato tutto, switchare ad un OS headless tipo Raspberry Pi OS lite.

  • Come configuro la VPN per partire al boot? La Raspberry resterà accesa 24/7 salvo imprevisti.

  • Come imposto le regole di routing sulla Raspberry? Al momento svolgerà solo questo compito ma pensavo che in futuro potrei creare un mini server per condividere file nella mia rete e vorrei consentire solo ai dispositivi che usano la Raspberry come gateway di passare per la vpn.

Spero di non aver omesso niente 😅
Grazie!

    Vuoi imparare o fare subito?

    • guniens ha risposto a questo messaggio

      Marco25 Ciao!
      Il tempo che ho per imparare è limitato causa lavoro ed altri impegni ma questo genere di cose mi è sempre interessato quindi ti direi che se non ci si mette troppo imparo volentieri 😉

      • Marco25 ha risposto a questo messaggio

        guniens Vuoi quindi collegare il Raspberry Pi a un server VPN che già possiedi?

        • guniens ha risposto a questo messaggio

          Marco25 Esattamente.
          Il server VPN, creato dal mio amico con un'altra Raspberry è attivo e funzionante, mi collego dal cellulare con l'app di WireGuard.
          Non so come collegarmi dalla mia Raspberry, sempre come client.

          • Marco25 ha risposto a questo messaggio

            guniens Collegarti dal Raspberry è semplice. Supponendo una distribuzione Debian, installi WireGuard con sudo apt install wireguard-tools, quindi copi la configurazione client nel file /etc/wireguard/wg.conf, quindi attivi e abiliti il servizio con sudo systemctl enable —now wg0.service. now è preceduto da due trattini

            • guniens ha risposto a questo messaggio

              Marco25 Supponendo una distribuzione Debian

              Si, pensavo o DietPi o Raspberry Pi OS. Ero indeciso tra headless e GUI e pensavo che DietPi fosse un buon compromesso mantenendo comunque la GUI. Cosa consigli?

              Marco25 quindi copi la configurazione client

              Questa sarebbe la conf che uso sul mio cellulare? La esporto dall'app di WireGuard o devo chiederla al mio amico che ha creato la VPN? Mi aveva girato un QR-Code da scansionare con il cellulare.

              Marco25 sudo systemctl enable —now wg0.service

              Così attivo il servizio di WireGuard. Per attivarlo on boot come faccio?

              • Marco25 ha risposto a questo messaggio

                guniens Cosa consigli?

                Ho provato solo occasionalmente DietPi ma ne ho sentito parlare bene. Io comunque utilizzo Raspberry solo via CLI.

                guniens Questa sarebbe la conf che uso sul mio cellulare?

                Sì ma non puoi avere la stessa configurazione in uso nello stesso momento su più dispositivi, quindi fattene inviare un'altra.

                guniens Così attivo il servizio di WireGuard. Per attivarlo on boot come faccio?

                È un comando combinato che abilita il servizio al boot e lo attiva subito.

                • guniens ha risposto a questo messaggio

                  Marco25 Ho provato solo occasionalmente DietPi ma ne ho sentito parlare bene. Io comunque utilizzo Raspberry solo via CLI.

                  Capito!

                  Marco25 Sì ma non puoi avere la stessa configurazione in uso nello stesso momento su più dispositivi, quindi fattene inviare un'altra.

                  Capito!

                  Marco25 È un comando combinato che abilita il servizio al boot e lo attiva subito.

                  Capito!

                  Capito quasi tutto.
                  Non mi torna il comando che mi hai dato per installare wireguard, guardando sul sito non c'è un comando per dietpi/raspberry pi os o simili e non capisco se l'applicativo da installare è wireguard o wireguard-tools.

                  guniens Come imposto le regole di routing sulla Raspberry? Al momento svolgerà solo questo compito ma pensavo che in futuro potrei creare un mini server per condividere file nella mia rete e vorrei consentire solo ai dispositivi che usano la Raspberry come gateway di passare per la vpn.

                  Sapresti aiutarmi anche per questo punto?

                  • Marco25 ha risposto a questo messaggio

                    guniens Non mi torna il comando che mi hai dato per installare wireguard

                    DietPi su Raspberry e Raspberry Pi OS sono entrambi basati su Debian quindi può essere usato APT per installare i pacchetti, DietPi include anche un sistema semplificato con simil GUI https://dietpi.com/docs/software/#dietpi-software-options. Se utilizzi APT, wireguard è un metapacchetto che installa il modulo del kernel e wireguard-tools. Ormai da anni i kernel recenti includono già il modulo del kernel quindi è sufficiente installare wireguard-tools.

                    guniens Come imposto le regole di routing sulla Raspberry?

                    Devi impostarle sul dispositivo nella rete in modo da utilizzare come default gateway il raspberry pi e non il router.

                    guniens potrei creare un mini server per condividere file nella mia rete

                    Questa è una richiesta totalmente diversa.

                    vorrei consentire solo ai dispositivi che usano la Raspberry come gateway di passare per la vpn

                    Sul Raspberry abiliti l'inoltro dei pacchetti (IP forwarding) e imposti il firewall (nftables) per inoltrare solamente i pacchetti da e verso specifici indirizzi nella LAN. Qui sorge il problema che nella LAN è abbastanza semplice assegnarsi un IP particolare e quindi bypassare i vincoli.

                    • guniens ha risposto a questo messaggio

                      Marco25 Devi impostarle sul dispositivo nella rete in modo da utilizzare come default gateway il raspberry pi e non il router.

                      Si questo mi era chiaro ma leggendo le varie guide, c'era da impostare le regole di forwarding in entrata e uscita sulle interfacce eth0 e wg0 con iptables. Mi riferivo a questo, non mi sembra troppo complicato ma ti chiedo aiuto lo stesso 😅

                      Marco25

                      Questa è una richiesta totalmente diversa.

                      Sul Raspberry abiliti l'inoltro dei pacchetti (IP forwarding) e imposti il firewall (nftables) per inoltrare solamente i pacchetti da e verso specifici indirizzi nella LAN. Qui sorge il problema che nella LAN è abbastanza semplice assegnarsi un IP particolare e quindi bypassare i vincoli.

                      Mi riferivo proprio a questo, l'idea era di utilizzare la Raspberry inizialmente per la VPN e basta ed eventualmente aggiungere la condivisione dei file nella rete, in questo caso vorrei evitare che il traffico passasse per la VPN.

                      • Marco25 ha risposto a questo messaggio

                        guniens Ti direi di provarci e chiedere qui in corso d'opera. Per quanto riguarda il firewall, solo per farlo funzionare al più hai bisogno di una regola di NAT e se vuoi consentire solo alcuni client allora aggiungi una regola di filtro, che potrebbe essere la seguente in un firewall nftables:

                        #!/usr/bin/nft -f
                        
                        flush ruleset
                        
                        table inet filter {
                        	chain forward {
                        		type filter hook forward priority filter
                        		policy drop
                        
                        		ct state vmap { invalid : drop, established : accept, related : accept }
                        
                        		ip saddr { 192.168.1.5, 192.168.1.34 } iifname eth0 oifname wg0 accept
                        	}
                        }

                        Dove 192.168.1.5 sono 192.168.1.34 gli IP della LAN da autorizzare (ma tieni a mente quanto sopra circa l'efficacia).

                        • guniens ha risposto a questo messaggio

                          Marco25 Hai ragione, meglio chiederti aiuto in corso d'opera eventualmente.
                          Aspetto che arrivi la Raspberry, installo tutto e provo la VPN poi penserò alle regole di routing e firewall.

                          Marco25 Dove 192.168.1.5 sono 192.168.1.34 gli IP della LAN da autorizzare (ma tieni a mente quanto sopra circa l'efficacia).

                          Potrebbe aiutare impostare IP statici per i dispositivi che useranno la Raspberry come gateway a livello di router in questo caso?
                          La Raspberry non sarebbe comunque esposta ad internet per connessioni esterne alla mia rete.

                          rami Ciao! Puoi spiegare meglio?
                          Comunque pensavo di usare la Raspberry anche per altro in futuro e credo che installare OpenWrt non lo permetterebbe ma correggimi se sbaglio 🙂

                          • rami ha risposto a questo messaggio

                            guniens installare OpenWrt non lo permetterebbe ma correggimi se sbaglio 🙂

                            Hai ragione, di fatto il raspberry con OpenWrt diventa un router e bsta, quindi non fa al caso tuo. Io in passato l'avevo usato e trovandolo molto comodo, però in effetti toglie la libertà di farci altro.

                              rami Grazie lo stesso!

                              6 giorni dopo

                              Ciao @Marco25
                              Ho la Raspberry pronta e configurata (DietPi headless), Wireguard installato.

                              Questo è il file di conf estratto dal QR che mi ha girato il mio amico:

                              [Interface]
                              PrivateKey = ***
                              Address = 10.59.244.2/24
                              DNS = DNS1, DNS2

                              [Peer]
                              PublicKey = ***
                              PresharedKey = ***
                              Endpoint = IPPUBBLICO:PORTA
                              AllowedIPs = 0.0.0.0/0, ::0/0

                              é corretto che il QR sia lo stesso per tutti? Ha mandato questo QR nel nostro gruppo.
                              Immagino che usiamo tutti questo e tutto funziona. Sbaglio qualcosa?

                              Ho provato a copiare tutto nel file di conf della mia Raspberry (wg0) ma la Raspberry non raggiunge la rete, riesco però a collegarmi in SSH.

                              Grazie in anticipo!

                              • Marco25 ha risposto a questo messaggio

                                guniens é corretto che il QR sia lo stesso per tutti?

                                No, deve inviare un QR code diverso per ogni persona, anzi un QR code diverso per ogni dispositivo di ogni persona. Come scritto sopra, non è possibile utilizzare la stessa configurazione simultaneamente su più dispositivi.

                                • guniens ha risposto a questo messaggio

                                  Marco25 Immaginavo
                                  Ho provato a dirglielo ma crede che il file di conf sia per la VPN e non per singolo device, quindi avevo ragione io.

                                  Deve generare un file di conf/QR per ogni device ed aggiungerlo alla sua conf (server) giusto?

                                  • Marco25 ha risposto a questo messaggio

                                    Informativa privacy - Informativa cookie - Termini e condizioni - Regolamento - Disclaimer - 🏳️‍🌈
                                    P.I. IT16712091004 - info@fibraclick.it

                                    ♻️ Il server di questo sito è alimentato al 100% con energia rinnovabile