Apro questo topic perché ho visto diverse persone scontrarsi con problemi di vpn dovuti all'utilizzo di applicazioni un po' particolari (anche tipo VOIP).
La VPN ethernet bridge (tap mode) è una modalità di vpn disponibile in OpenVPN che crea un unico dominio di broadcast e quindi potrebbe risolvere a priori tutta una serie di problemi di routing e firewalling.
Di fatto, una volta connessi si ottiene un IP della stessa subnet della lan. Unico neo è che la modalità tap non è supportata dai client disponibili su device mobili, quindi è da usare da PC oppure tra router e router.
Sono particolarmente affezionato a questa modalità perché secondo me è comodissima. Probabilmente non adatta a contesti complessi ma collegarsi da fuori e avere un IP di casa è veramente comodo. Per i nostalgici:
https://www.ilpuntotecnico.com/forum/index.php/topic,11039.0.htmlFatta la premessa, rilancio al topic su OpenVPN perché la configurazione è praticamente identica.
https://www.ilpuntotecnico.com/forum/index.php/topic,77856.0.htmlQuindi potete seguire quella guida fino alla creazione delle chiavi.
Dopodiché si procede alla configurazione del tap su OpenVPN.
Eseguire i seguenti comandi uci per impostare la configurazione di openvpn (personalizzate chiaramente ciò che ritenete opportuno):
uci set openvpn.vpnserver='openvpn'
uci set openvpn.vpnserver.enabled='1'
uci set openvpn.vpnserver.dev='tap'
uci set openvpn.vpnserver.proto='udp'
uci set openvpn.vpnserver.port='1194'
uci set openvpn.vpnserver.tls_server='1'
uci set openvpn.vpnserver.mode='server'
uci set openvpn.vpnserver.compress='lzo'
uci set openvpn.vpnserver.keepalive='10 120'
uci set openvpn.vpnserver.persist_key='1'
uci set openvpn.vpnserver.persist_tun='1'
uci set openvpn.vpnserver.ca='/etc/openvpn/keys/ca.crt'
uci set openvpn.vpnserver.cert='/etc/openvpn/keys/my-server.crt'
uci set openvpn.vpnserver.key='/etc/openvpn/keys/my-server.key'
uci set openvpn.vpnserver.dh='/etc/openvpn/keys/dh2048.pem'
uci set openvpn.vpnserver.tls_auth='/etc/openvpn/keys/tls-auth.key 0'
uci set openvpn.vpnserver.log='/var/log/openvpn.log'
uci set openvpn.vpnserver.status='/var/log/openvpn-status.log'
uci set openvpn.vpnserver.verb=3
uci add_list openvpn.vpnserver.push='route-gateway dhcp'
uci commit openvpn
Come potete vedere dalla configurazione, le righe differenti sono veramente poche, importante è la "dev tap".
Eseguire openvpn:
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
Creare sul proprio client OpenVPN il file di configurazione come segue:
client
dev tap
proto udp
remote my-server-name 1194
remote-cert-tls server
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert my-client.crt
key my-client.key
tls-auth tls-aut.key
comp-lzo
verb 3
key-direction 1
Nella stessa cartella copiare dal server i file ca.crt, my-client.crt, my-client.key e tls-auth.key
Se preferite avere la configurazione ovpn con le chiavi incorporate per gestire un file solo, allo stesso indirizzo indicato nell'altro post è disponibile un file shell script che lo genera.
Eseguire i seguenti comandi uci per impostare l'interfaccia di rete e le regole di firewalling:
uci set network.vpn0=interface
uci set network.vpn0.ifname=tap0
uci set network.vpn0.proto=none
uci set network.vpn0.auto=1
uci set network.lan.ifname="$(uci get network.lan.ifname) tap0"
uci set firewall.Allow_OpenVPN_Inbound=rule
uci set firewall.Allow_OpenVPN_Inbound.target=ACCEPT
uci set firewall.Allow_OpenVPN_Inbound.src=*
uci set firewall.Allow_OpenVPN_Inbound.proto=udp
uci set firewall.Allow_OpenVPN_Inbound.dest_port=1194
uci commit network
/etc/init.d/network reload
uci commit firewall
/etc/init.d/firewall reload
A questo punto non resta che testare la connessione per verificare che funzioni.
Con questa configurazione il client prenderà un indirizzo IP dato dal server DHCP presente nella rete a cui ci si collega.