Stellen Sie Ihr eigenes OpenVPN bereit

Die Anleitung beschreibt die Installation und Konfiguration der Server- und Client-Teile von OpenVPN. Die Lösung wurde entwickelt, um Remote-Clients mit dem Unternehmensnetzwerk zu verbinden. Nach dem Herstellen der Verbindung behält der Client standardmäßig sein eigenes Gateway bei, und die Internetverbindung wird nicht blockiert. Die Lösung hat sich bei der Konfiguration des Client-Teils als einfach erwiesen. Sie wurde unter Windows-XP, Windows-7, Andriod 3.x, Archlinux und Ububnu getestet (und wird derzeit verwendet). Es gibt Informationen über die erfolgreiche Verbindung und das iPad.


OpenVPN Server (FreeBSD) installieren.


Installieren Sie das Paket von den Ports. Optionen können standardmäßig belassen werden. Deaktivieren Sie vor allem nicht 'easy-rsa', da dies zum Konfigurieren und Generieren von Zertifikaten erforderlich ist:

# cd /usr/ports/security/openvpn
# make configure-recursiv install clean

Oder:

# make configure-recursiv install clean -С /usr/ports/security/openvpn

Erstellen Sie Verzeichnisse für Configs:

 # mkdir /usr/local/etc/openvpn/
 # mkdir /usr/local/etc/openvpn/ccd

Kopieren Sie das easy-rsa-Verzeichnis in das OpenVPN-Konfigurationsverzeichnis:

 # cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/

Gehe in das kopierte Verzeichnis:

 # cd /usr/local/etc/openvpn/easy-rsa/

Gehe zur sh Shell:

 # sh

Wir führen den Befehl aus, um unser eigenes Zertifikat zu generieren:

 # . ./vars
 # ./clean-all
 # ./build-ca

Füllen Sie die Daten für das Zertifikat gemäß den Fragen aus.

 # ./build-key-server vpn0.example.com

'Allgemeiner Name' sollte mit dem DNS-Namen Ihres VPN-Servers übereinstimmen, zum Beispiel: 'vpn0.example.com'. Wir beantworten die letzten Fragen mit 'Y'.

 # ./build-dh

Nun erstellen wir das Zertifikat für den Client mit dem Namen 'client'. Hier werden auch die letzten Fragen mit 'Y' beantwortet

 # ./build-key client

Verlassen der Shell:

 # exit

Erstellen Sie einen Schlüssel für die TLS-Authentifizierung:

 # /usr/local/sbin/openvpn --genkey --secret /usr/local/etc/openvpn/easy-rsa/keys/ta.key

Erstellen Sie die Datei server.conf (unten unter dem Spoiler). Vergessen Sie nicht, die Adresse des internen DNS-Servers anzugeben, die den Namen Ihrer lokalen Hosts bekannt ist.

/usr/local/etc/openvpn/server.conf
 # cat /usr/local/etc/openvpn/server.conf
 local vpn0.example.com
 port 1194
 proto udp
 dev tun
 ca /usr/local/etc/openvpn/easy-rsa/keys/ca.crt
 cert /usr/local/etc/openvpn/easy-rsa/keys/vpn0.example.com.crt
 key /usr/local/etc/openvpn/easy-rsa/keys/vpn0.example.com.key
 dh /usr/local/etc/openvpn/easy-rsa/keys/dh1024.pem
 tls-server
 tls-auth /usr/local/etc/openvpn/easy-rsa/keys/ta.key 0
 server 172.17.0.0 255.255.255.0
 ifconfig-pool-persist ipp.txt
 client-config-dir ccd
 push "route 10.10.210.72 255.255.255.248"
 push "route 172.27.102.0 255.255.255.0"
 push "route 172.27.103.0 255.255.255.0"
 push "route 172.27.105.0 255.255.255.0"
 push "dhcp-option DNS 192.168.100.1"
 keepalive 10 120
 comp-lzo
 user nobody
 group nobody
 persist-key
 persist-tun
 status openvpn-status.log
 verb 3


Für jeden Client muss auf dem Server eine Benutzerkonfigurationsdatei erstellt werden, in der die dem Client zugewiesene IP-Adresse und das Gateway angegeben werden. Zum Beispiel für einen Client namens 'client':

 # cat /usr/local/etc/openvpn/ccd/client
 ifconfig-push 172.17.0.2 172.17.0.1

Um den OpenVPN-Daemon beim Laden des Betriebssystems zu starten, fügen Sie die folgenden Zeilen zu '/etc/rc.conf' hinzu:

 openvpn_enable="YES"
 openvpn_if="tun"
 openvpn_configfile="/usr/local/etc/openvpn/server.conf"
 openvpn_dir="/usr/local/etc/openvpn"


Servicestart:

 # /usr/local/etc/rc.d/openvpn start
 Starting openvpn.
 add net 172.17.0.0: gateway 172.17.0.2

Wenn die Aufgabe darin besteht, Benutzer über OpenVPN-Internet zu versorgen, ist NAT erforderlich. Sie können die Unterstützung durch herunterladbare Module aktivieren. Fügen Sie dazu die folgenden Zeilen zur Datei '/boot/loader.conf' hinzu:

ipfw_nat_load="YES"
libalias_load="YES"

Beispiel IP NAT IPFW Konfiguration:

${ipfw} nat 1 config if re0 reset same_ports
${ipfw} add nat 1 ip from 172.17.0.0/24 to any via $INT_if
${ipfw} add nat 1 ip from any to $EXT_ip
${ipfw} add allow all from any to any

Alles, was der OpenVPN-Server installiert, konfiguriert und ausgeführt wird. Jetzt können Sie mit Kunden umgehen.

OpenVPN-Client-Zertifikat erstellen


Die Beschreibung gilt für einen Server auf dem FreeBSD-Betriebssystem, auf dem der OpenVPN-Dienst wie oben beschrieben installiert und konfiguriert ist.

Das Zertifikat wird von der Systemkonsole des Servers mit Superuser-Rechten aus dem easy-rsa-Verzeichnis generiert:

cd / usr / local / etc / openvpn / easy-rsa /
 $ cd /usr/local/etc/openvpn/easy-rsa/
 $ sudo /bin/sh
 # . ./vars
 NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/etc/openvpn/easy-rsa/keys
 # ./build-key ЛОГИН_ПОЛЬЗОВАТЕЛЯ
 Generating a 1024 bit RSA private key
 ......++++++
 ....++++++
 writing new private key to 'ЛОГИН_ПОЛЬЗОВАТЕЛЯ.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter source) [US]:RU
 State or Province Name (full name) [CA]:ZC
 Locality Name (eg, city) [SanFrancisco]:Zabubensk
 Organization Name (eg, company) [Fort-Funston]:JSC Zabuba
 Organizational Unit Name (eg, section) [changeme]:ITD
 Common Name (eg, your name or your server's hostname) [ЛОГИН_ПОЛЬЗОВАТЕЛЯ]:
 !----------------------------------------------------------------------!
 ! ВНИМАНИЕ ! использовать только латинские буквы. Кирилица не работает !
 !----------------------------------------------------------------------!
 Name [changeme]:ИМЯ ФАМИЛИЯ
 Email Address [mail@host.domain]:ЛОГИН_ПОЛЬЗОВАТЕЛЯ@zabubensk.example.com
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:
 Using configuration from /usr/local/etc/openvpn/easy-rsa/openssl-0.9.8.cnf
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'RU'
 stateOrProvinceName   :PRINTABLE:'ZC'
 localityName          :PRINTABLE:'Zabubensk'
 organizationName      :PRINTABLE:'JSC Zabuba'
 organizationalUnitName:PRINTABLE:'ITD'
 commonName            :PRINTABLE:'ЛОГИН_ПОЛЬЗОВАТЕЛЯ'
 name                  :PRINTABLE:'ИМЯ ФАМИЛИЯ'
 emailAddress          :IA5STRING:'ЛОГИН_ПОЛЬЗОВАТЕЛЯ@zabubensk.example.com'
 Certificate is to be certified until Nov 12 06:24:49 2023 GMT (3650 days)
 Sign the certificate? [y/n]:y
 1 out of 1 certificate requests certified, commit? [y/n]y
 Write out database with 1 new entries
 Data Base Updated
 #
 # exit


Infolgedessen werden Clientzertifikatdateien für die Verbindung generiert. Als nächstes müssen Sie die Datei `/ usr / local / etc / openvpn / ccd / USER LOGIN` mit einer Zeile des Formulars erstellen:

 $ sudo ee /usr/local/etc/openvpn/ccd/ЛОГИН_ПОЛЬЗОВАТЕЛЯ
 ifconfig-push 172.17.0.118 172.17.0.117

Jedes Adresspaar in ifconfig-push entspricht den virtuellen IP-Adressen der Endpunkte (Client und Server) - jedem Client wird zum Zeitpunkt der Verbindung ein eigenes Subnetz zugewiesen. Sie können hier zusätzliche Routen hinzufügen, wenn Clients eine Verbindung zu verschiedenen Subnetzen (Niederlassungen, technische Spezialisten) herstellen.

 $ sudo ee /usr/local/etc/openvpn/ccd/ЛОГИН_ПОЛЬЗОВАТЕЛЯ
ifconfig-push 172.17.0.118 172.17.0.117
push "route 10.12.1.0 255.255.255.0"
push "route 10.12.2.0 255.255.255.0"
push "route 192.168.10.0 255.255.255.0"

Um die Kompatibilität mit Windows-Clients und dem TAP-Win32-Treiber zu gewährleisten, müssen diese Adressen aus aufeinander folgenden Subnetzen mit der / 30-Maske entnommen werden. Beispielsweise sollte für den Bereich "172.17.0.1-172.17.0.254" das letzte Oktett der IP-Adresse jedes Client-Server-Paares aus dem Satz zugewiesen werden:

  [  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
  [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
  [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
  [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
  [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
  [101,102] [105,106] [109,110] [113,114] [117,118]
  [121,122] [125,126] [129,130] [133,134] [137,138]
  [141,142] [145,146] [149,150] [153,154] [157,158]
  [161,162] [165,166] [169,170] [173,174] [177,178]
  [181,182] [185,186] [189,190] [193,194] [197,198]
  [201,202] [205,206] [209,210] [213,214] [217,218]
  [221,222] [225,226] [229,230] [233,234] [237,238]
  [241,242] [245,246] [249,250] [253,254]

Der Einfachheit halber habe ich eine Textdatei "/usr/local/etc/openvpn/not_use_ip.txt" erstellt, in der die freien Adresspaare aufgelistet sind, die beim Verteilen an Clients gelöscht werden. Bitte beachten Sie, dass in der Konfigurationsdatei die erste die dem Client (Senior) zugewiesene IP-Adresse und die zweite die Serveradresse (eine weniger) ist.

Nach dem Hinzufügen des Clients empfiehlt es sich, den OpenVPN-Dienst neu zu starten:

 $ sudo /usr/local/etc/rc.d/openvpn restart
 Stopping openvpn.
 Waiting for PIDS: 62293.
 Starting openvpn.
 add net 172.17.0.0: gateway 172.17.0.2

Der Client muss fünf Dateien übertragen (ca.crt, vpn0.crt, vpn0.key, ta.key, vpn0.example.com.ovpn):

  • /usr/local/share/doc/openvpn/easy-rsa/keys/ca.crt
  • /usr/local/share/doc/openvpn/easy-rsa/keys/USER_LOGIN.crt → vpn0.crt
  • /usr/local/share/doc/openvpn/easy-rsa/keys/USER_LOGIN.key → vpn0.key
  • /usr/local/etc/openvpn/easy-rsa/keys/ta.key
  • /usr/local/etc/openvpn/vpn0.example.com.ovpn

Die aufgelisteten Dateien werden in einen separaten (temporären) Ordner mit dem Namen "config" kopiert, Dateien mit der Form "USER LOGIN". * Der Ordner wird in "vpn0" umbenannt. * Der Ordner wird in das Archiv gepackt und dem Benutzer per E-Mail mit einem Link zu den Anweisungen zum Einrichten der OpenVPN-Client-Verbindung gesendet (siehe unten).

Anleitung zum Einrichten einer Client-Verbindung OpenVPN

(Für Benutzer ohne technische Ausbildung)

Um OpenVPN-Verbindungen zu installieren und zu konfigurieren, müssen Sie zuerst die Bittiefe Ihres Betriebssystems bestimmen. Bei 32-Bit-Systemen endet die OpenVPN-Client-Installationsdatei mit "-i686.exe". Wenn Sie 64-Bit-MS-Windows haben, benötigen Sie eine Datei, deren Name "-x86_64.exe" enthält. Darüber hinaus benötigen Sie für eine VPN-Verbindung zum Netzwerk Client-Zertifikate und eine Konfigurationsdatei, die Sie von Ihrem Systemadministrator erhalten.

Laden Sie für MS-Windows das entsprechende OpenVPN-Client-Programm herunter und installieren Sie es (für Android und iOS gibt es Pakete in Ihren eigenen Market / Store-Repositories). Wechseln Sie in das OpenVPN-Programmverzeichnis (C: Programme \ OpenVPN) und kopieren Sie den Ordner in dieses Verzeichnisconfigmit allen Inhalten vom Systemadministrator erhalten. Dieser Ordner enthält Ihre Client-Zertifikate und Einstellungen für die Verbindung zum VPN-Server.



Die Namen der Dateien im Konfigurationsordner können geringfügig von Ihnen abweichen. Führen Sie den OpenVPN-Client im Namen des Administrators aus oder ändern Sie die Eigenschaften der Verknüpfung auf dem Desktop (aktivieren Sie das Kontrollkästchen "Als Administrator ausführen").





Die Verbindung zum lokalen Netzwerk des Unternehmens über das Internet erfolgt über das Kontextmenü oder durch Doppelklick auf das OpenVPN-Symbol im Systembereich der Taskleiste. Sie können nur außerhalb des Unternehmensnetzwerks eine Verbindung herstellen. Der OpenVPN-Server akzeptiert keine Verbindungen innerhalb des Netzwerks.



Nach erfolgreichem Abschluss des Verbindungsvorgangs wird das OpenVPN-Symbol in der Taskleiste grün und ein Popup mit der dem VPN-Client zugewiesenen IP-Adresse angezeigt. Die Adresse ist an das Zertifikat „angehängt“, daher funktioniert sie aufgrund eines Adressenkonflikts nicht gleichzeitig an zwei oder mehr Arbeitsplätzen mit demselben Zertifikat.

Nach dem Herstellen der Verbindung können Sie auf alle Dienste (RDP, FTP , HTTP ...) sowohl über die IP-Adresse als auch über den Domänennamen im vom Systemadministrator zugelassenen LAN-Segment zugreifen , mit Ausnahme der Möglichkeit, aus Sicherheitsgründen blockierte Netzlaufwerke zu verbinden.

Dokumentation und Verteilung:


Jetzt auch beliebt: