Usare Ubuntu come router VPN
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Usare Ubuntu come router VPN
Buongiorno a tutti e grazie a chi vorrà rispondermi,
Vorrei capire se è possibile utilizzare un PC con ubuntu, che uso come server, per fargli fare il lavoro che farebbe un router con OpenWrt.
Per spiegare che cosa vorrei ottenere, forse un'immagine vale più di tante parole: In pratica vorrei ottenere una LAN principale (in azzurro) ed una LAN_VPN in rosso ottenendo che tutto quello che si collega a valle dello switch3 vada via VPN.
Riguardo i servizi che attualmente girano sul server (PC UBUNTU) , per esempio la domotica, vorrei capire se posso decidere se farli connettere ad internet via VPN oppure no.
Vorrei capire se è possibile utilizzare un PC con ubuntu, che uso come server, per fargli fare il lavoro che farebbe un router con OpenWrt.
Per spiegare che cosa vorrei ottenere, forse un'immagine vale più di tante parole: In pratica vorrei ottenere una LAN principale (in azzurro) ed una LAN_VPN in rosso ottenendo che tutto quello che si collega a valle dello switch3 vada via VPN.
Riguardo i servizi che attualmente girano sul server (PC UBUNTU) , per esempio la domotica, vorrei capire se posso decidere se farli connettere ad internet via VPN oppure no.
- thece
- Tenace Tecnocrate
- Messaggi: 12816
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Usare Ubuntu come router VPN

Ovviamente si può fare. Basta giocare un pò con le tabelle di routing e IPTables.
Dove è installato il server VPN? Presumo sul PC con Ubuntu
Se nello schema indicavi anche le subnet era meglio.
Un qualcosa di simile lo puoi vedere in
[HOWTO] OpenVPN - Easy RSA 3 - Instal. & Conf.
oppure basta che cerchi le discussioni su OpenVPN in cui ho partecipato io.
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Re: Usare Ubuntu come router VPN
Grazie @thece,
sono abbastanza digiuno riguardo le reti e quindi potrei dire delle cose con poco senso.
L'idea è di collegarsi ad una VPN esistente al di fuori della mia lan, che potrebbe essere la VPN aziendale o un servizio VPN per questione di privacy.
Ipotizzando:
LAN principale è 192.168.0.0 / 24 Ubuntu ci si collega con eth1
In pratica dovrei:
1) Installare OpenVPN client su UBUNTU
2) Usare Ubuntu come se fosse un router facendogli creare la rete (172.16.0.0 / 24) su eth2
- Abilitare il forwarding IP su Ubuntu
- configuare ipTables per NAT e tutto il resto
- abilitare il server DHCP
3) Instradare il traffico sulla VPN
- inserire l'indirizzo di Ubuntu come gateway di tutto quello che voglio girare sulla VPN oppure collegare attraverso eth2
Se fin qui tutto è corretto, mi rimane da capire come fare a fare passare dalla VPN o meno tutti i servizi che girano su Ubuntu (in realtà, ad oggi, vorrei che nessuno passasse dalla VPN)
sono abbastanza digiuno riguardo le reti e quindi potrei dire delle cose con poco senso.
L'idea è di collegarsi ad una VPN esistente al di fuori della mia lan, che potrebbe essere la VPN aziendale o un servizio VPN per questione di privacy.
Ipotizzando:
LAN principale è 192.168.0.0 / 24 Ubuntu ci si collega con eth1
In pratica dovrei:
1) Installare OpenVPN client su UBUNTU
2) Usare Ubuntu come se fosse un router facendogli creare la rete (172.16.0.0 / 24) su eth2
- Abilitare il forwarding IP su Ubuntu
- configuare ipTables per NAT e tutto il resto
- abilitare il server DHCP
3) Instradare il traffico sulla VPN
- inserire l'indirizzo di Ubuntu come gateway di tutto quello che voglio girare sulla VPN oppure collegare attraverso eth2
Se fin qui tutto è corretto, mi rimane da capire come fare a fare passare dalla VPN o meno tutti i servizi che girano su Ubuntu (in realtà, ad oggi, vorrei che nessuno passasse dalla VPN)
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Re: Usare Ubuntu come router VPN
Ancora no, mi sto leggendo le varie guide.
Per instradare selettivamente i servizi verso la VPN ho trovato vari sistemi, ma credo che forse opterò per creare un utente ad hoc per tutto quello che dovrà passare dalla VPN.
- thece
- Tenace Tecnocrate
- Messaggi: 12816
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Usare Ubuntu come router VPN
Intanto potresti mettere in piedi la LAN a valle del PC Ubuntu, quindi installare e configurare il server DHCP per servire (solo) questa LAN, e verificare che da questa rete la connettività funzioni come previsto.
Questo passaggio è propedeutico per tutto il resto.
Questo passaggio è propedeutico per tutto il resto.
Non ho capito, mi fai un esempio concreto?
- Miner34
- Prode Principiante
- Messaggi: 62
- Iscrizione: sabato 5 novembre 2022, 15:09
- Desktop: Gnome su Xorg
- Distribuzione: Ubuntu 22.04.2 LTS
Re: Usare Ubuntu come router VPN
Per fare questo lavoro io ti consiglierei un Raspberry Pi invece di un normale PC, ma per provare va bene comunque.
Comunque, buona fortuna.
Comunque, buona fortuna.
Mai arrendersi.
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Re: Usare Ubuntu come router VPN
Ho Homeassitant con i sui servizi e Nextcloud in docker ed un bot in python che non vorrei far passare dalla VPN.thece ha scritto: ↑domenica 10 settembre 2023, 12:38Intanto potresti mettere in piedi la LAN a valle del PC Ubuntu, quindi installare e configurare il server DHCP per servire (solo) questa LAN, e verificare che da questa rete la connettività funzioni come previsto.
Questo passaggio è propedeutico per tutto il resto.
Non ho capito, mi fai un esempio concreto?
Un container per il backup, semnpre in docker, che vorrei far passare dalla VPN.
Questa è la parte che trovo più complicata, anche perche per home assistant ed i suoi servizi devo usare l'opzione network_mode host.
Ultima modifica di MaxPaxIT il lunedì 11 settembre 2023, 11:26, modificato 1 volta in totale.
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Re: Usare Ubuntu come router VPN
Si, ma dovrei comperarne uno per fargli fare solo questo, ma a questo punto forse un micropc con pfsense, ce ne sono con 4 porte 2.5 gbyte.
- thece
- Tenace Tecnocrate
- Messaggi: 12816
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Usare Ubuntu come router VPN
Proposta di soluzione
Obiettivi:
- per tutti gli host appartenenti alla LAN di subnet 192.168.0.0/24 tutte le connessioni in uscita dirette verso Internet devono passare attraverso il gateway 192.168.0.1.
- per tutti gli host appartenenti alla LAN di subnet 192.168.10.0/24 tutte le connessioni in uscita dirette verso Internet devono passare attraverso la VPN
- tutti gli host appartenenti alla LAN di subnet 192.168.10.0/24 devono poter comunicare con gli host appartenenti alla LAN di subnet 192.168.0.0/24 (connessione iniziata dalla LAN 192.168.10.0/24)
Nota:
per fare in modo che tutti gli host appartenenti alla LAN di subnet 192.168.0.0/24 possano comunicare con gli host appartenenti alla LAN di subnet 192.168.10.0/24 (connessione iniziata dalla LAN 192.168.0.0/24) dovrebbe essere sufficiente aggiungere nella tabella di routing del gateway 192.168.0.1 una rotta che instradi le connessioni dirette alla LAN 192.168.10.0/24 attraverso l'host 192.168.0.23.
Non l'ho provato.
Il mio "router VPN" è un Raspberry Pi con sistema operativo Raspberry Pi OS basato su Debian 11.
Assegno gli indirizzi IP statici
/etc/network/interfaces
Abilito l'IPv4 Forwarding
/etc/sysctl.conf
Installo e configuro il server DHCP
/etc/default/isc-dhcp-server
/etc/dhcp/dhcpd.conf
Abilito l'IP Masquerading
(non ci sono altre regole, le default policy sono tutte impostate su ACCEPT)
Questa è la tabella di routing dopo l'attivazione del Client VPN
Queste sono le regole di policy routing dopo l'attivazione del Client VPN
Il Client VPN è configurato per NON effettuare la redirezione del default gateway. In pratica: tutte le connessioni in uscita dirette verso Internet NON passano dalla VPN.
Aggiungo una tabella di routing
quindi ...
Aggiungo 2 regole di policy routing
quindi ...
Le regole di policy routing vengono processate in ordine di priorità a partire da 0
@MaxPaxIT questa proposta di soluzione è abbastanza vicina al tuo desiderata. Occorrerebbe raffinare un pò di più l'instradamento delle connessioni in uscita verso Internet.
Obiettivi:
- per tutti gli host appartenenti alla LAN di subnet 192.168.0.0/24 tutte le connessioni in uscita dirette verso Internet devono passare attraverso il gateway 192.168.0.1.
- per tutti gli host appartenenti alla LAN di subnet 192.168.10.0/24 tutte le connessioni in uscita dirette verso Internet devono passare attraverso la VPN
- tutti gli host appartenenti alla LAN di subnet 192.168.10.0/24 devono poter comunicare con gli host appartenenti alla LAN di subnet 192.168.0.0/24 (connessione iniziata dalla LAN 192.168.10.0/24)
Nota:
per fare in modo che tutti gli host appartenenti alla LAN di subnet 192.168.0.0/24 possano comunicare con gli host appartenenti alla LAN di subnet 192.168.10.0/24 (connessione iniziata dalla LAN 192.168.0.0/24) dovrebbe essere sufficiente aggiungere nella tabella di routing del gateway 192.168.0.1 una rotta che instradi le connessioni dirette alla LAN 192.168.10.0/24 attraverso l'host 192.168.0.23.
Non l'ho provato.
Il mio "router VPN" è un Raspberry Pi con sistema operativo Raspberry Pi OS basato su Debian 11.
Assegno gli indirizzi IP statici
/etc/network/interfaces
Codice: Seleziona tutto
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
auto eth0
iface eth0 inet static
address 192.168.0.23
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1 208.67.222.222 208.67.220.220
# Si, e' una scheda di rete Ethernet/USB
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.10.23
netmask 255.255.255.0
/etc/sysctl.conf
Codice: Seleziona tutto
...
net.ipv4.ip_forward=1
...
/etc/default/isc-dhcp-server
Codice: Seleziona tutto
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth1"
# INTERFACESv6=""
Codice: Seleziona tutto
ddns-update-style none;
log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0
{
range 192.168.10.200 192.168.10.254;
option routers 192.168.10.23;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option domain-name-servers 192.168.0.1, 208.67.222.222, 208.67.220.220;
option netbios-name-servers 192.168.0.1;
default-lease-time 900;
max-lease-time 7200;
}
Codice: Seleziona tutto
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Codice: Seleziona tutto
***********************************************************************
************************* IPv4 IPTables Rules *************************
***********************************************************************
********** Table filter **********
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
********** Table nat **********
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 384 25813 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
2 319 19642 MASQUERADE all -- * tun0 0.0.0.0/0 0.0.0.0/0
********** Table mangle **********
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
********** Table raw **********
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
********** Table security **********
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Codice: Seleziona tutto
ip route list [table main]
default via 192.168.0.1 dev eth0
10.96.0.0/16 dev tun0 proto kernel scope link src 10.96.0.21
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.23
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.23
Codice: Seleziona tutto
ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Aggiungo una tabella di routing
Codice: Seleziona tutto
sudo ip route add default via 10.96.0.21 dev tun0 table 100
Codice: Seleziona tutto
ip route list table 100
default via 10.96.0.21 dev tun0
Codice: Seleziona tutto
sudo ip rule add priority 10000 iif eth1 to 192.168.0.0/24 lookup main
sudo ip rule add priority 10001 iif eth1 lookup 100
Codice: Seleziona tutto
ip rule list
0: from all lookup local
10000: from all to 192.168.0.0/24 iif eth1 lookup main
10001: from all iif eth1 lookup 100
32766: from all lookup main
32767: from all lookup default
@MaxPaxIT questa proposta di soluzione è abbastanza vicina al tuo desiderata. Occorrerebbe raffinare un pò di più l'instradamento delle connessioni in uscita verso Internet.
- OMBRA_Linux
- Imperturbabile Insigne
- Messaggi: 2646
- Iscrizione: mercoledì 18 febbraio 2015, 14:24
- Desktop: HP / Lenovo / Samsung
- Distribuzione: Android / Linux / Windows10-11
- Sesso: Maschile
- Località: Napoli
Re: Usare Ubuntu come router VPN
Puoi configurare la VPN su OpenWRT tenendolo separato dal Router Principale.
Oltretutto puoi collegarlo con Cavo Wan-Lan.
In rete è pieno di Guide.
Oltretutto puoi collegarlo con Cavo Wan-Lan.
In rete è pieno di Guide.
Se per vivere devi strisciare, alzati e muori.
-
- Prode Principiante
- Messaggi: 6
- Iscrizione: giovedì 7 settembre 2023, 9:26
- Distribuzione: Ubuntu 20.04.6 LTS
- Sesso: Maschile
Re: Usare Ubuntu come router VPN
Grazie mille.
Farò sicuramente un test con la tua soluzione.
Nel frattempo ho cercato di leggermi la documentazione riguardante le reti e come vengono gestite da Ubuntu.
Finora ho fatto un solo due test pratici per capire come gestire i container docker:
1) Client VPN in docker: posso facilemnte instradare il traffico dei containers che desidero attraverso la VPN, ma ho trovato più difficoltoso instradare il traffico delle applicazioni o servizi attraverso la VPN perchè credo di aver capito che dovrei utilizzare un proxy (tipo privoxy). Comunque essendo un test preliminare non ho approfondito.
2) Client VPN lanciato nel sistema: tutto il traffico del computer passa dalla VPN compresi tutti i container docker. Da quello che ho capito la selezione di che cosa passa dalla VPN e che cosa non passa la si può fare solo in base all'utente. Questa soluzione la scarterei in partenza.
Una soluzione che mi è venuta in mente "studiando" le guide è quella di utilizzare un diverso namespace di rete per lanciare il client VPN e poi usare delle interfacce virtuali per collegare il nuovo namespace alle applicazioni o interfacce fisiche. In pratica:
- Eth_0 è collegata al modem
- Eth_1 è quella che dovrè collegare tutti i device che devono passare dalla VPN
- creo Veth_0 in peer con Veth_1
- collego Veth_0 ad Eth_1
- Sposto Veth_1 nel namespace NS_1
- imposto il routing ed installo il server DHCP (come gateway ci metto l'indirizzo di Veth_0)
- creo Veth_2 in peer con Veth_3
- collego Veth_2 ad Eth_0
- Sposto Veth_3 nel namespace NS_1
... da qui in poi non sono certo che sia corretto perchè ancora è tutto teorico perchè ancora non ho fatto nessun test
-lancio la VPN nel namespace NS_1
-collego l'interfaccia della VPN, immagino tun_0 alla Veth _3 (sempre in NS_1)
Pero, prima di procedere voglio testare la tua soluzione perchè la mia al momento è solo pura teoria, e forse anche un po vacillante, soprtutto perchè ancora non mi sono sufficientemente documentato su come "dire" ai vari servizi/applicazioni usa questa connessione oppure usa quell'altra.
Oppure,
potrei installare openWRT sul mio secondo router (Cudy WR2100 ... ho già scaricato il firmware ufficiale dal sito del produttore).
Visto che comunque sia, dato che dovrò cambiare la posizione del modem/router (del fornitore internet), avrò bisogno di un nuovo swithc/AP magari prenderne uno con un processore piu performante anzichè "allargare" la copertura wifi con mesh.OMBRA_Linux ha scritto: ↑giovedì 14 settembre 2023, 11:25Puoi configurare la VPN su OpenWRT tenendolo separato dal Router Principale.
- tokijin
- Moderatore Globale
- Messaggi: 4594
- Iscrizione: mercoledì 3 giugno 2009, 23:10
- Desktop: plasma 5.27.4
- Distribuzione: Kubuntu 23.04
- Località: Abruzzo
Re: Usare Ubuntu come router VPN
Cito questo messaggio particolare ma ovviamente vale per chiunque:OMBRA_Linux ha scritto: ↑giovedì 14 settembre 2023, 11:25Puoi configurare la VPN su OpenWRT tenendolo separato dal Router Principale.
Oltretutto puoi collegarlo con Cavo Wan-Lan.
In rete è pieno di Guide.
leggiamo bene sempre il primo messaggio e cerchiamo di fornire la soluzione al problema descritto.
Questo link è sempre valido: viewtopic.php?f=8&t=633601
Sei abbruzzese se dopo che ti sei strafogato un chilogrammo di pasta, hai il coraggio di dire alla cuoca "cacc ch'è cott" - Se entra un piccione in casa..chiudi le finestre!
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
- OMBRA_Linux
- Imperturbabile Insigne
- Messaggi: 2646
- Iscrizione: mercoledì 18 febbraio 2015, 14:24
- Desktop: HP / Lenovo / Samsung
- Distribuzione: Android / Linux / Windows10-11
- Sesso: Maschile
- Località: Napoli
Re: Usare Ubuntu come router VPN
tokijin ha scritto: ↑martedì 10 ottobre 2023, 10:25Cito questo messaggio particolare ma ovviamente vale per chiunque:OMBRA_Linux ha scritto: ↑giovedì 14 settembre 2023, 11:25Puoi configurare la VPN su OpenWRT tenendolo separato dal Router Principale.
Oltretutto puoi collegarlo con Cavo Wan-Lan.
In rete è pieno di Guide.
leggiamo bene sempre il primo messaggio e cerchiamo di fornire la soluzione al problema descritto.
Questo link è sempre valido: viewtopic.php?f=8&t=633601
Contro Cito:
Beh visto che hai la soluzione perchè non la posti, cosi che chi avrà lo stesso problema legga e trova il ( Risolto ) al suo problema.
Magari potrei trovarmici io nella stessa situazione e saprei cosa fare.
Se per vivere devi strisciare, alzati e muori.
- tokijin
- Moderatore Globale
- Messaggi: 4594
- Iscrizione: mercoledì 3 giugno 2009, 23:10
- Desktop: plasma 5.27.4
- Distribuzione: Kubuntu 23.04
- Località: Abruzzo
Re: Usare Ubuntu come router VPN
Non ho la soluzione e di conseguenza non posso condividerla.
A proposito di link sempre validi c'è anche questo: app.php/rules#regola-4s
Ora finiamo di sporcare la discussione con questo tipo di messaggi; se serve scrivi, a me o allo staff, in privato.
Ciao
A proposito di link sempre validi c'è anche questo: app.php/rules#regola-4s
Ora finiamo di sporcare la discussione con questo tipo di messaggi; se serve scrivi, a me o allo staff, in privato.
Ciao
Sei abbruzzese se dopo che ti sei strafogato un chilogrammo di pasta, hai il coraggio di dire alla cuoca "cacc ch'è cott" - Se entra un piccione in casa..chiudi le finestre!
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti