Für diesen Beitrag richte ich eine neue Testumgebung als Proxmox-Container mit einem Standardtemplat von Debian 12 mit minimaler Softwareausstattung unter der IP-Adresse 192.168.0.250/24, mit 2 GB Festplattenplatz und 512 MByte RAM ein. Das System wird mit den drei Befehlen
apt-get update && apt-get -y dist-upgrade dpkg-reconfigure tzdata dpkg-reconfigure locales
noch auf den neusten Patchstand gebracht und die Zeitzone und das Tastaturlayout eingestellt. Ansonsten habe ich die Installation zu diesem Zeitpunkt nicht verändert.
Ein VPN war früher schwierig zu installieren weil die ganze Kommunikation über Schlüssel verschlüsselt ist und auch die Authentifizierung über Schlüssel erfolgt. Dazu kommt noch, dass es eine ziemlich komplexe Netzwerktopologie mit Routing und Subnetzen beinhaltet. Glücklicherweise hat ein Entwickler mit dem Namen Nyr ein Shellscript entwickelt und auf Github zur Verfügung gestellt was die Softwareinstallation und die Netzwerkeinstellungen sehr komfortabel und einfach macht. Das Script unterstützt allerdings nur das Roadwarrior-Szenario was meint, das jemand von außerhalb auf das lokale Netzwerk zugreifen kann wenn er einen entsprechenden Schlüssel für das Netzwerk besitzt. Berücksichtigt wird keine andere Möglichkeit von VPN wie Netzwerke miteinander verbinden, besondere Authentifizierung wie RADIUS oder LDAP oder ähnliches. Für die meisten Anwendungen – gerade im privaten oder KMU Umfeld sollte die Möglichkeiten jedoch mehr als ausreichen.
Das Script kann mit dem Befehl:
wget https://git.io/vpn -O openvpn-install.sh
auf den Server herunter geladen werden und durch chmod ausführbar gemacht:
chmod +x openvpn-install.sh
Nun müssen wir noch das tun-Interface einrichten was für einen Betrieb als VPN-Server notwendig ist. Dies geschieht bei einer Installation auf wirklicher Hardware durch die Befehlsfolge:
mkdir /dev/net mknod /dev/net/tun c 10 200 chmod 0666 /dev/net/tun
Sollte sich jedoch der OpenVPN-Server in einem Container befinden so wird der Befehl mknod mit „mknod: /dev/net/tun: Operation not permitted“ abgebrochen. In diesem Fall muss unter /etc/pve/lxc/<Container-Nummer>.conf die Zeilen:
lxc.cgroup2.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net dev/net none bind,create=dir
eingefügt werden und man erhält nach einem Neustart des Containers das tun-Interface.
Nun kann das vormalig herunter geladene Script ausgeführt werden und es erfolgen nun Fragen zu den Einstellungen von OpenVPN:
./openvpn-install.sh Welcome to this OpenVPN road warrior installer! This server is behind NAT. What is the public IPv4 address or hostname? Public IPv4 address / hostname [111.222.333.444]: home.dyndns.org Which protocol should OpenVPN use? 1) UDP (recommended) 2) TCP Protocol [1]: 1 What port should OpenVPN listen to? Port [1194]: 1194 Select a DNS server for the clients: 1) Current system resolvers 2) Google 3) 1.1.1.1 4) OpenDNS 5) Quad9 6) AdGuard DNS server [1]: 5 Enter a name for the first client: Name [client]: Client1 OpenVPN installation is ready to begin. Press any key to continue... Nun werden die notwendige Pakete herunter geladen The client configuration is available in: /root/Client1.ovpn New clients can be added by running this script again.
Die Einstellung die gemacht werden sind hier rot markiert und es wurde eine Datei mit der Endung .ovpn angelegt die die Einstellungen für die Übergabe an den OpenVPN-Client enthalten. Für den obigen Fall hat die Datei den folgenden Inhalt:
client dev tun proto udp remote home.dyndns.org 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server auth SHA512 ignore-unknown-option block-outside-dns verb 3 <ca> -----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUA09u1uh7MTipyafa0qWWTtmAME8wDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjQwMTA2MTczMzE3WhcNMzQw MTAzMTczMzE3WjAWMRQwEgYDVQQDDAtFYXN5LVJTQSBDQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALN/J4TvIQN0OCsaHaj0nQAG8LRLo+4iBSvEzVF6 BHvWCpbsuHUrV20qhtFC4VRtW3h4FM9+qce8XVf9trgVhQwFVwIqxokDxyR/EB02 SMN4k57LzkX0j89yDsbSklv1GzcyaE7KsbPjIcPdKqe96+sqcmqGhzwsEw6YJKyY tpk1Ie7P9zFxT/nRsmYNYBCf/doXQ7iKIls6h4lzd/TKykKtG2uxus8BHH+yVHek h7h9x0iXyzZ93yIOUSJ0oPMREX8XoRiFlpTHd5U5ivQKHYBOzdP5YueqzPQnNVzI x/BR4zsPevlqdZqUH4HkWkXPbHd7nnU5GqpytvF3bzUcvI0CAwEAAaOBkDCBjTAM BgNVHRMEBTADAQH/MB0GA1UdDgQWBBTlkArwGlSEXgxdE+uzQr4KKyvzxjBRBgNV HSMESjBIgBTlkArwGlSEXgxdE+uzQr4KKyvzxqEapBgwFjEUMBIGA1UEAwwLRWFz eS1SU0EgQ0GCFANPbtboezE4qcmn2tKllk7ZgDBPMAsGA1UdDwQEAwIBBjANBgkq hkiG9w0BAQsFAAOCAQEAqfzH9JTxNZsTgvHg2WHChv3/yLWQPvORcB2JLV9Ymk6u iZvBlU+znaQjyfo6r4Z55hl/Iwd+6NpgkPPwmVXzoDgb7StoxvSNPboAO4V1n7y3 mtdludH7hL4Ox+Bt2NCV8JyYXtgeLXvQEewB7mEqUwGLkA6bXqx+29jT+NAr9pCc cyhEj6Og5wwUyIWadwUdgDKppe2XKTzySkz5+/KfXS7DMpRE2z1/bxM1PxI2iny+ u6pg2BGN2xXHog4xgcmQVt5j7+Xj5lGIPTYSxEzq3MEnHFWcn1/vowOgk6mBEatm FA//26JxaEjhM6bNDhirGi8gs+UFw4VQqPqu52vzQA== -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- MIIDVTCCAj2gAwIBAgIQUtfim2KWoVqiveMmwVnQQzANBgkqhkiG9w0BAQsFADAW MRQwEgYDVQQDDAtFYXN5LVJTQSBDQTAeFw0yNDAxMDYxNzMzMThaFw0zNDAxMDMx NzMzMThaMBIxEDAOBgNVBAMMB0NsaWVudDEwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDU+ZZ5DhfSb0aDdt41GLPdzuPw+8GhASGn03MXEYyX1QNZFyos iACPU7jYyG42BfTe7Dm7N0h4I16796ao5yJUH8jNJsdhMFYWrE9UAjMg5ISBIbxS /NEAioqU1y7+n/Ltf3kDl80NbMQx/tAAo0BPb3cGJ5JzyoOU+HR7Lab1OLd4bCqE R/sHEXIpjv2LoE5ULOjz/wLzmct+sXBllnqjab5yTAl8cghCRIcgAPF0P44RYc7U mwxbKCdqg0IaNLIUGnl/W5l6cscLuKW+Jqv2fI+CiIQYM9uPoKZkiotTe1/vizgx tKeWj94DJC61QRCpWiCWttArOvWe+c9zzgYTAgMBAAGjgaIwgZ8wCQYDVR0TBAIw ADAdBgNVHQ4EFgQUb9Fqs4EIJTzjvS2dhmNoYw9frUAwUQYDVR0jBEowSIAU5ZAK 8BpUhF4MXRPrs0K+Cisr88ahGqQYMBYxFDASBgNVBAMMC0Vhc3ktUlNBIENBghQD T27W6HsxOKnJp9rSpZZO2YAwTzATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8E BAMCB4AwDQYJKoZIhvcNAQELBQADggEBACENjjL+88bM2ATrX3h+HM23z8hGDE3P bfCI+h4KGIJVtPIXohB5PKjmQbhEMLyWrN10E4EPgVyav05UR8Mm5UpTx1tcbbtD L5hCotoTCpGJKlBrbtyqWl2HxTwN7ytrayGYxajZW30Hwpeuf2WfwGuo6JcK4L3f 47yXXjymciQktQCuycmNLjsDZN+boxs5W22WGJ4mZRG13RSYc7PZgBzz9LBfeESb fe55F3lEVxVgxS73azgiK2wnT6RfouUnon3hRkYoGlR1L707D0KZRJlmKen+lVsH cBqkG+WRjSR8YlTsyPmsch8swUsVJVvNH7l54nmUWgUgfyq2C64a6gs= -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDU+ZZ5DhfSb0aD dt41GLPdzuPw+8GhASGn03MXEYyX1QNZFyosiACPU7jYyG42BfTe7Dm7N0h4I167 96ao5yJUH8jNJsdhMFYWrE9UAjMg5ISBIbxS/NEAioqU1y7+n/Ltf3kDl80NbMQx /tAAo0BPb3cGJ5JzyoOU+HR7Lab1OLd4bCqER/sHEXIpjv2LoE5ULOjz/wLzmct+ sXBllnqjab5yTAl8cghCRIcgAPF0P44RYc7UmwxbKCdqg0IaNLIUGnl/W5l6cscL uKW+Jqv2fI+CiIQYM9uPoKZkiotTe1/vizgxtKeWj94DJC61QRCpWiCWttArOvWe +c9zzgYTAgMBAAECggEBANTmdB+rkPDSQCEncNaPTS8MpRy/7z5uDSDh5glHh844 KNKkr4o4oqakwQIkytfCeJloeAXJK+69HPS2iqoJ9G04INnETEfBtC2SLvMCB+53 wmX8PXCQPrZVyFcmDVqItqXoaibHVzp2YmLAIVqh16YQ/WDvqh2KcqM3A+onJuG2 8Al7dph7APB/UQUqnmAlRPd/pCsabaxdtm9bazTqusL1lJ/R4Z4QLsdG9esciJAt +RR8Vug6ARfkdIztUeIC9lxxJPaxp0pdEJldUSvqri0wnDNNzuIHUfpSvlt8vsa+ kZ45oJVq7RY0vhWCqzJBCvVB08D3qWggC17HtLJYQeECgYEA6n/52HhKPthl4IBP LMLTsbrjT1Pm9XzVmL73f9iw1UbqUr31Oq0auRVE9aaxASuSIZeh4mb5wj5j/RK6 cM4qsFvtj2BlYm9+MHb5Ys4L3DRhd9UmrWK+AV2gJHRwSPhr+6sqf98MZCCWycIn QNOYmQjS7+nKNEaB65L54xWyiTkCgYEA6IBkgMgQTFuPK7QBGdpQeNFx0Wok0cjX 3aNXpYodeHrzshz9S64gp6Mj+2hYB03xVw1zMnEUrLVXupTMMMbpuJJ8K4a+hEWT RUFULTMAtWv451lQmwp+9Pio27mWeMQ/FgDbrBSPatI5LXjm+0njL3YGwKCAIDJO QV/uD1sQRasCgYEAwP9G8ARAhuyvHFA92YcXl+VKg9V39n8hhK9XH5+GGmJdJHA2 zm392mpI8SyZ7W6gvIkBsUYzNM0Imha533Gu7KscH66kgplkcBrbMZiHZlquBWQm ivkDjDg0PwyeBVB//wdm2QsINbgkojTq/Y2ov/rlMJNn2hJVhz7V7zHCWPECgYEA iCpZsgp5cR7WVLQRSQDQzFFtpUXS1oIX2phFRpAC/oKToqbTubT7LvKeqijMFUsS ovcfllUf1J5ICOAITjDQxOYVjrBVd8X/oDnIgMg0DAx2M5fdW0/kVrgivLyOYaAd ildqT/eint8L2ZPLQzRct3kaL0pQf4q2xhbWp2uftg0CgYB5Bdvo+aZ6FRxp/JDz VbTg4cpOP1IRlCbHj7nV4PyNwAxcTSqTuJZqdk5d9KEcMSOejA57VLh3oEcOJLeX GQslM142EUV2pzW08MHs75n4bnS7Y7welWNzFedg9ossLVQWLihyKGYBbkuR2ejw R8egfydHQQDAIt/e818vXuxN8g== -----END PRIVATE KEY----- </key> <tls-crypt> -----BEGIN OpenVPN Static key V1----- 412501c23dae644384bbcb6735ce7df7 f489baff7777bdac28cb5133f23b44c1 55cb6ad5729f6e423550982f063d4dfe a544f1d011619e771a529b4aad59f727 61771bc83c70ed70e6003f7eed02cd76 7e054afcbaa905c8e32e51efd6aca943 aa9f0421078c3e73283286f701f93135 7f45c7553b3005aafe824baaad43c7ca f7bd2450ff5290f14c766bcfd7f7fc9a 16e722c136c0a10475a12bdfa0383fed a61294d43447396ff89ed7556a551436 8268dc7f90f9e946f4488d11ebaa4122 e0aac6f12e12bedb07b3aa77ef12f550 4088f1d254b5994d822e42baeb8f180f 594808236f0e7cbad8a4ff1186e379ce 76284971925d6b2e3b3e30d94a7612c8 -----END OpenVPN Static key V1----- </tls-crypt>
Diese Datei stellt nun den Zugang zu dem Netzwerk her und ist sicher auf zu bewahren. Wenn ich diesen Beitrag online stelle dann ist der TestVPN-Server daher wieder gelöscht und der Zugang damit unmöglich.
Wenn man weiteren Clients den Zugang ermöglichen möchte dann ruft man einfach erneut das Script auf und vergibt einen anderen Namen für den neuen Client und erhält eine weitere Datei mit anderem Zugangsschlüssel die man übergeben kann.
Im letzten Teil dieser Serie wird nun beschrieben wie man sich unter Android und KDE mit dem Server verbindet. Andere Möglichkeiten wie Apple-Betriebssysteme, Windows oder andere Window-Manger habe ich mangels entsprechender Hardware bzw. Softwareausstattung nicht.
1 Gedanke zu „OpenVPN lokal einrichten – die Serversoftware einrichten (III)“
Kommentare sind geschlossen.