Configurazione LAN to LAN fra due Linux, usando le chiavi asimmetriche
Per la gestione delle chiavi, riferirsi alla sezione precedente, perche` e` identica.
Per la configurazione dei due endpoint, queste sono due configurazioni di esempio. Uno dei due endpoint sara` sempre un "server" e l'altro un "client" per quanto riguarda l'autenticazione, ma non e` importante quale dei due lo sia.
Configurazione "server". In questa configurazione non sono compresi i comandi per il keepalive che invece ha senso includere. Vedere prima per informazioni.
# per usare un device tun dinamico, usa # "dev tun". qui ne uso uno statico. dev tun1 # Indirizzo IP pubblico del remoto remote xx.xx.xx.xx # Interfaccia locale a cui mi bindo (pubblica) local xx.xx.xx.xx # Definizione indirizzi IP privati del tunnel. # Questi saranno dati alle interfaccie "interne" (tunX) dei due endpoint. # ifconfig <locale> <remoto> ifconfig 10.0.0.254 172.16.0.253 # Definisco uno o piu` routing verso la lan remota (una o piu` righe) # Formato: route <netbase> <netmask> route 172.16.0.0 255.255.255.0 # questa parta e` il server TLS tls-server # il file con dentro il numero primo per l'algoritmo Diffie Helman # (serve solo per il server tls). dh dh2048.pem # il file con la chiave pubblica # della CA che ha firmato i certificati per tutti gli endpoint. ca ca.crt # il file con la chiave pubblica del mio endpoint cert server.crt # il file con la chiave privata del mio endpoint key server.key # il file con la shared key per l'autenticazione dei pacchetti # di handshake # The tls-auth directive adds an additional HMAC signature to # all SSL/TLS handshake packets for integrity verification. # Any UDP packet not bearing the correct HMAC signature can # be dropped without further processing tls-auth tls-auth.key 0 # la porta che uso per i dati crittati verso/da il remoto. # se uso "port" intendo la stessa per tutti e due, # altrimenti uso "lport" e "rport" per locale e remoto. # ogni tunnel deve avere una porta diversa. port 9001 # dopo aver avviato il tunnel, posso usare questi uid e gid # per non restare root, oppure anche no. A scelta user nobody group nogroup # in caso di reload, tieni in memoria i dati che non potresti piu` rileggere a causa del privilegio insufficiente persist-key persist-tun # log level (da 0 per il minimo a 9 per il massimo) verb 3
Configurazione lato client. Fondamentalmente uguale al server se si escludono sette piccoli particolari. Anche qui vale il discorso di includere le funzioni di keepalive.
# per usare un device tun dinamico, usa # "dev tun". qui ne uso uno statico. dev tun1 # Indirizzo IP pubblico del remoto remote xx.xx.xx.xx # Interfaccia locale a cui mi bindo (pubblica) local xx.xx.xx.xx # Definizione indirizzi IP privati del tunnel. # Questi saranno dati alle interfaccie "interne" (tunX) dei due endpoint. # ifconfig <locale> <remoto> ifconfig 172.16.0.253 10.0.0.254 # Definisco uno o piu` routing verso la lan remota (una o piu` righe) # Formato: route <netbase> <netmask> route 10.0.0.0 255.255.255.0 # questa parta e` il client TLS tls-client # il file con la chiave pubblica # della CA che ha firmato i certificati per tutti gli endpoint. ca ca.crt # il file con la chiave pubblica del mio endpoint cert client.crt # il file con la chiave privata del mio endpoint key client.key # il file con la shared key per l'autenticazione dei pacchetti # di handshake # The tls-auth directive adds an additional HMAC signature to # all SSL/TLS handshake packets for integrity verification. # Any UDP packet not bearing the correct HMAC signature can # be dropped without further processing tls-auth tls-auth.key 1 # la porta che uso per i dati crittati verso/da il remoto. # se uso "port" intendo la stessa per tutti e due, # altrimenti uso "lport" e "rport" per locale e remoto. # ogni tunnel deve avere una porta diversa. port 9001 # dopo aver avviato il tunnel, posso usare questi uid e gid # per non restare root, oppure anche no. A scelta user nobody group nogroup # in caso di reload, tieni in memoria i dati che non potresti piu` rileggere a causa del privilegio insufficiente persist-key persist-tun # log level (da 0 per il minimo a 9 per il massimo) verb 3