# Опасность: Эта строка должна быть добавлена только при использовании протокола UDP.
fragment 1200 # Запись должна совпадать 1:1 с записью в файле конфигурации клиента client.conf.
# Обратите внимание: Слишком высокие значения фрагментов делают соединение нестабильным.
# Если значение слишком велико, соединение устанавливается. Однако данные не могут быть переданы.
# Типичным симптомом является то, что соединение можно использовать только в течение нескольких секунд, или как только вы хотите передать данные, соединение как бы разрывается.
# И это несмотря на то, что соединение все еще установлено. У меня был хороший опыт с предустановленным значением 1200.
# Я рекомендую использовать протокол TCP, поскольку в нем меньше потерь пакетов, хотя накладные расходы на пакеты при использовании TCP несколько выше.
#################################################
# Sample OpenVPN 2.0 config file for #
# multi-client server. #
# #
# This file is for the server side #
# of a many-clients <-> one-server #
# OpenVPN configuration. #
# #
# OpenVPN also supports #
# single-machine <-> single-machine #
# configurations (See the Examples page #
# on the web site for more info). #
# #
# This config should work on Windows #
# or Linux/BSD systems. Remember on #
# Windows to quote pathnames and use #
# double backslashes, e.g.: #
# "C:\\Program Files\\OpenVPN\\config\\foo.key" #
# #
# Comments are preceded with '#' or ';' #
#################################################
# Which local IP address should OpenVPN
# listen on? (optional)
;local a.b.c.d
# Which TCP/UDP port should OpenVPN listen on?
# If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one. You will need to
# open up this port on your firewall.
port 1194 # Порт должен совпадать 1:1 со спецификацией в client.conf..
# Опционально:
# port 443 - HTTPS (протокол передачи гипертекста через SSL/TLS с TCP) или любой другой свободный порт от 0 до 65535.
# TCP or UDP server?
;proto tcp
proto udp # Протокол должен совпадать 1:1 со спецификацией в client.conf.
# Опционально: proto tcp/udp4/tcp4
# udp4/tcp4 означает, что соответствующий протокол используется только через IPv4.
# Важно: Обратите внимание на дополнительные инструкции в конце этого файла примера (disable explicit-exit-notify 1 в конце).
# "dev tun" will create a routed IP tunnel,
# "dev tap" will create an ethernet tunnel.
# Use "dev tap0" if you are ethernet bridging
# and have precreated a tap0 virtual interface
# and bridged it with your ethernet interface.
# If you want to control access policies
# over the VPN, you must create firewall
# rules for the the TUN/TAP interface.
# On non-Windows systems, you can give
# an explicit unit number, such as tun0.
# On Windows, use "dev-node" for this.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel if you
# have more than one. On XP SP2 or higher,
# you may need to selectively disable the
# Windows firewall for the TAP adapter.
# Non-Windows systems usually don't need this.
;dev-node MyTap
# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key). Each client
# and the server must have their own cert and
# key file. The server and all clients will
# use the same ca file.
#
# See the "easy-rsa" directory for a series
# of scripts for generating RSA certificates
# and private keys. Remember to use
# a unique Common Name for the server
# and each of the client certificates.
#
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
# Diffie hellman parameters.
# Generate your own with:
#
openssl dhparam -out dh2048.pem 2048
dh dh2048.pem # изменение в 'dh dh.pem'
# Network topology
# Should be subnet (addressing via IP)
# unless Windows clients v2.0.9 and lower have to
# be supported (then net30, i.e. a /30 per client)
# Defaults to net30 (not recommended)
;topology subnet
# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0
# Maintain a record of client <-> virtual IP address
# associations in this file. If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist /var/log/openvpn/ipp.txt
# Configure server mode for ethernet bridging.
# You must first use your OS's bridging capability
# to bridge the TAP interface with the ethernet
# NIC interface. Then you must manually set the
# IP/netmask on the bridge interface, here we
# assume 10.8.0.4/255.255.255.0. Finally we
# must set aside an IP range in this subnet
# (start=10.8.0.50 end=10.8.0.100) to allocate
# to connecting clients. Leave this line commented
# out unless you are ethernet bridging.
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
# Configure server mode for ethernet bridging
# using a DHCP-proxy, where clients talk
# to the OpenVPN server-side DHCP server
# to receive their IP address allocation
# and DNS server addresses. You must first use
# your OS's bridging capability to bridge the TAP
# interface with the ethernet NIC interface.
# Note: this mode only works on clients (such as
# Windows), where the client-side TAP adapter is
# bound to a DHCP client.
;server-bridge
# Push routes to the client to allow it
# to reach other private subnets behind
# the server. Remember that these
# private subnets will also need
# to know to route the OpenVPN client
# address pool (10.8.0.0/255.255.255.0)
# back to the OpenVPN server.
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0" # Здесь необходимо ввести сетевую область VPN-сервера (подсеть и маску подсети).
# Если вы хотите получить доступ к внутренней сети за VPN-сервером
# можно push "route x.x.x.0 255.255.255.0" или "push "redirect-gateway def1 ..." (скоро появится параметр) использовать.
#
# Вы должны выбрать только один вариант здесь. Теперь, где различия?
#
# С помощью 'push "route..." можно получить доступ к сети за сервером.
# Прямой доступ (через IP-адрес) к другим ПК в сети VPN-сервера возможен без каких-либо проблем.
# Однако вся дальнейшая передача данных направляется через стандартный шлюз от клиента.
# Поэтому обычный интернет-трафик на клиенте не направляется через VPN-туннель, когда выбрана опция "push "route ...".
#
# С помощью 'push "redirect-gateway def1 ..."' вся передача данных направляется через стандартный шлюз от клиента.
# Это рекомендуется, например, для обхода блокировки видеоплатформ/служб потокового вещания, заблокированных интернет-сервисов, новостных служб из мира и интернет-регулирования государственной цензуры.
# ПК и сетевая техника за сервером могут быть доступны через шлюз (по IP-адресу).
# Весь интернет-трафик клиента направляется через VPN-туннель.
# To assign specific IP addresses to specific
# clients or if a connecting client has a private
# subnet behind it that should also have VPN access,
# use the subdirectory "ccd" for client-specific
# configuration files (see man page for more info).
# EXAMPLE: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.
# First, uncomment out these lines:
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
# Then create a file ccd/Thelonious with this line:
# iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN. This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.
# EXAMPLE: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# Then add this line to ccd/Thelonious:
# ifconfig-push 10.9.0.1 10.9.0.2
# Suppose that you want to enable different
# firewall access policies for different groups
# of clients. There are two methods:
# (1) Run multiple OpenVPN daemons, one for each
# group, and firewall the TUN/TAP interface
# for each group/daemon appropriately.
# (2) (Advanced) Create a script to dynamically
# modify the firewall in response to access
# from different clients. See man
# page for more info on learn-address script.
;learn-address ./script
# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
;push "redirect-gateway def1 bypass-dhcp"
# Направляйте весь сетевой трафик из веб-браузера, поиск DNS и т.д. через сеть VPN (необязательно).
#
Активация рекомендуется, если вы хотите получить доступ к заблокированным услугам.
# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses. CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
# Включает разрешение имен DNS, '208.67.222.222' und '208.67.220.220' IP-адреса OpenDNS Server.
# Здесь вы также можете указать свои или другие публичные DNS-серверы, вот несколько примеров:
# ----------------+-----------------------------------------------------------------------------
# 1.1.1.1 | Cloudflare und APNIC
# 1.0.0.1 | Cloudflare und APNIC 1.1.1.1
# 8.8.4.4 | google-public-dns-b.google.com developers.google.com/speed/public-dns/
# 8.8.8.8 | google-public-dns-a.google.com
# 9.9.9.9 | malware blocklist, DNSSEC validation (рекомендуется) Global Cyber Alliance (GCA) и другие партнеры quad9.net
# 9.9.9.10 | send EDNS client subnet (no features)
# 9.9.9.11 | malware blocklist, send EDNS client subnet & DNSSEC validation (CDN-Friendly)
# 9.9.9.12 | malware blocklist, nxdomain only & DNSSEC validation (IoT-Friendly)
# 141.1.1.1 | cns1.cw.net Cable & Wireless (ehemals ECRC)
# 194.150.168.168 | dns.as250.net; Berlin/Frankfurt vom ccc.de; alternative opennic.org/
# 213.73.91.35 | dnscache.berlin.ccc.de
# 208.67.222.123 | OpenDNS Family Shield (block adult content)
# 208.67.220.123 | OpenDNS Family Shield (block adult content)
# Дополнительные примечания:
# Разрешение имен FQDN работает только в маршрутизируемых сетях, если специально установленный DNS-сервер может отвечать на запросы FQDN.
# Обычной широковещательной рассылки NetBIOS для этого недостаточно.
# Поэтому здесь вы можете указать не только простой DSL-маршрутизатор или стандартный шлюз.
# Запросы FQDN - это не запросы имени хоста, а полностью квалифицированные запросы
# Запросы доменных имен (Full Qualified Domain Name) например pc01.meinedomain.local или www.ctaas.de.
# Разрешение имени хоста (простого имени ПК) через него невозможно.
# Поэтому я не использую эту запись большую часть времени (нет необходимости). Однако это может быть необходимо для обхода блокировок.
# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
;client-to-client
# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names. This is recommended
# only for testing purposes. For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE "COMMON NAME",
# UNCOMMENT THIS LINE OUT.
;duplicate-cn
# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120
# For extra security beyond that provided
# by SSL/TLS, create an "HMAC firewall"
# to help block DoS attacks and UDP port flooding.
#
# Generate with:
# openvpn --genkey --secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be '0'
# on the server and '1' on the clients.
tls-auth ta.key 0 # This file is secret
# Select a cryptographic cipher.
# This config item must be copied to
# the client config file as well.
# Note that v2.4 client/server will automatically
# negotiate AES-256-GCM in TLS mode.
# See also the ncp-cipher option in the manpage
cipher AES-256-CBC # Спецификация должна совпадать 1:1 со спецификацией в client.conf.
# Enable compression on the VPN link and push the
# option to the client (v2.4+ only, for earlier
# versions see below)
;compress lz4-v2 # Опционально: Сжатие данных перед передачей (новая версия).
;push "compress lz4-v2" # Важно: По соображениям безопасности, вам не следует активировать сжатие.
# For compression compatible with older clients use comp-lzo
# If you enable it here, you must also
# enable it in the client config file.
;comp-lzo
# The maximum number of concurrently connected
# clients we want to allow.
;max-clients 100
# It's a good idea to reduce the OpenVPN
# daemon's privileges after initialization.
#
# You can uncomment this out on
# non-Windows systems.
;user nobody
;group nogroup # Удалите 2 знака комментария (;) здесь.
# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun
# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status /var/log/openvpn/openvpn-status.log
# By default, log messages will go to the syslog (or
# on Windows, if running as a service, they will go to
# the "\Program Files\OpenVPN\log" directory).
# Use log or log-append to override this default.
# "log" will truncate the log file on OpenVPN startup,
# while "log-append" will append to it. Use one
# or the other (but not both).
;log /var/log/openvpn/openvpn.log
;log-append /var/log/openvpn/openvpn.log
# Set the appropriate level of log
# file verbosity.
#
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 3
# Silence repeating messages. At most 20
# sequential messages of the same message
# category will be output to the log.
;mute 20
# Notify the client that when the server restarts so it
# can automatically reconnect.
explicit-exit-notify 1
# Важно: Если вы используете TCP (вместо UDP) в качестве протокола,
# тогда вы должны установить это значение в 0 или закомментировать запись (;) или полностью удалить ее.
# OpenVPN использует TLS для защиты канала управления, по которому происходит обмен ключами, используемыми для защиты фактического VPN-трафика.
# Задание списка всех допустимых стандартов tls-шифров:
tls-ciphersuites TLS_AES_256_GCM_SHA384 # TLS1.3 Стандарт - Очень безопасное значение примера, Stand: 2021. Подсказка: OpenVPN Ubuntu Server 20.04 использует это автоматически.
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384 # TLS1.2 Стандарт - Очень безопасное значение примера, Stand: 2021.
# Если необходимо включить несколько стандартов, то они указываются один за другим через двоеточие.
# Команда: "openvpn --show-tls" показывает все поддерживаемые шифры TLS, поддерживаемые библиотекой Crypto (как для TLS1.2, так и для TLS1.3).
# Список сортируется от самого высокого предпочтения (самого безопасного) до самого низкого.
# Важно: Пожалуйста, действуйте осторожно. Неправильная информация может значительно снизить безопасность или даже полностью предотвратить подключение.
# OpenVPN обычно самостоятельно согласовывает наилучшее возможное (наивысшее) шифрование.
# Поэтому я не указывал конкретный стандарт tls-шифра в оптимизированных конфигурационных файлах, опубликованных здесь (не использовать эти параметры - моя рекомендация).
# Обратите внимание, что такие стандарты могут измениться в любой момент в связи с дальнейшим развитием событий.
# Если вы используете фиксированную информацию здесь, вам следует время от времени проверять ее (самое позднее - при обновлении сервера/программного обеспечения) и при необходимости корректировать.
...
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
...
...
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
# Замените здесь DROP на ACCEPT.
...
13: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::7488:52fa:144d:463/64 scope link stable-privacy
valid_lft forever preferred_lft forever
IP-адрес от провайдера< /span> Найдите (доступ в Интернет).
curl https://ctaas.de/curl_ip.php
# Подсказка: Постоянная доступность этой услуги не гарантируется.
В стандартном выводе (в терминале) здесь выводится IP-адрес, присвоенный в данный момент провайдером (это для дозвона сервера важно).
Краткое объяснение:
Скрипт на https://ctaas.de/curl_ip.php содержит только следующее короткий PHP-скрипт:
<?php echo ''.$_SERVER['REMOTE_ADDR']; ?>
Обратите внимание: постоянная доступность этой службы не гарантируется.
Пожалуйста, разместите эту услугу (скрипт) самостоятельно, если эта услуга вам нужна чаще.
Только что определенный IP-адрес следует использовать только в том случае, если поставщик назначил вам фиксированный (статический) IP-адрес.
Итак, если IP-адрес всегда один и тот же каждый раз, когда вы звоните (каждый день).
Если провайдер назначает новый (динамический) IP-адрес каждый раз, когда вы коммутируемого доступа в Интернет,
тогда вам нужно использовать службу DynDNS, такую как, например, noip.com, чтобы подключиться к серверам обеспечения.
32.
Скопируйте файл примера:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client/client.conf
33.
Отредактируйте client.conf:
nano ~/client/client.conf
# в терминале/без GUI
nohup pluma ~/client/client.conf &
# в рабочем столе/с GUI
Отредактируйте файл client.conf следующим образом (обратите внимание на синие комментарии или оптимизированные версии):
# Опасность: Эту строку нужно добавлять только при использовании протокола UDP.
fragment 1200 # Запись должна соответствовать 1:1 записи в файле конфигурации сервера server.conf.
# Следующие две записи должны быть активированы только для клиентов Linux:
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################
# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
;proto tcp
proto udp # Протокол должен полностью соответствовать спецификации в server.conf.
# Опционально: proto tcp/udp4/tcp4
# udp4/tcp4 означает, что соответствующий протокол используется только через IPv4.
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server-1 1194 # Вместо my-server-1 вы вводите
;remote my-server-2 1194 # собственный статический IP-адрес (x.x.x.x) или собственный идентификатор DynDNS (xyz.noip.com).
# 1194 — это спецификация порта, она должна совпадать 1:1 со спецификацией в server.conf.
# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite # Устанавливает количество повторений
# если разрешение удаленного хоста не удается (infinite = бесконечно).
# Most clients don't need to bind to
# a specific local port number.
nobind
# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nogroup # Эти две записи можно активировать только для клиентов Linux.
# Try to preserve some state across restarts.
persist-key
persist-tun
# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca ca.crt
cert client.crt
key client.key # Ссылки на файлы сертификатов приведены здесь (при необходимости скорректируйте пути).
# Удалите все ведущие символы комментария (хэш-знак #).
# Verify server certificate by checking that the
# certicate has the correct key usage set.
# This is an important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the keyUsage set to
# digitalSignature, keyEncipherment
# and the extendedKeyUsage to
# serverAuth
# EasyRSA can do this for you.
remote-cert-tls server
# If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
# Note that v2.4 client/server will automatically
# negotiate AES-256-GCM in TLS mode.
# See also the ncp-cipher option in the manpage
cipher AES-256-CBC # Спецификация должна совпадать 1:1 со спецификацией в файле server.conf.
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
#comp-lzo # Устаревший вариант (больше не рекомендуется).
;compress lz4-v2 # Опционально: Сжатие данных перед передачей (новая версия, при необходимости добавить запись).
# Важно: По соображениям безопасности вам следует используйте параметр Не включать сжатие.
# Set log file verbosity.
verb 3
# Silence repeating messages
;mute 20
Дополнительно Подсказка: Это исходный файл client.conf. Файл дополнен некоторыми комментариями.
Обратите внимание: здесь внесены только необходимые изменения для рабочего VPN-подключения.
Примените настройки из следующих оптимизированных конфигураций для повышения безопасности.
Оптимизирован client.conf с протоколом UDP (для копирования & вставки):
## Обобщенная
версия UDP client.conf с краткими комментариями со всеми важными параметрами и настройками для большей безопасности. ##
fragment 1200 # Фрагментация пакетов для UDP. Обязательно добавьте его в UDP.
auth-nocache # Не кэшируйте пароль сертификата в оперативной памяти.
auth SHA512 # По соображениям безопасности
аутентификация HMAC была увеличена с SHA1 (по умолчанию) до SHA512.
verify-x509-name
server name # Предотвращает атаки типа «человек посередине». Здесь вы должны использовать общее имя (CN) для сертификата сервера.
# Подсказка: В этом руководстве CN сервера — это просто "
server".
client # конфигурация клиента.
dev tun # Routing im OSI Layer 3/Маршрутизация на третьем уровне OSI.
proto udp4 # UDP через IPv4.
remote
x.x.x.x 1194 # Введите общедоступный IP-адрес (x.x.x.x) или идентификатор DynDNS для VPN-сервера и используемый порт.
resolv-retry infinite # Повторяйте установление соединения бесконечно в случае возникновения ошибок. Альтернативно, спецификация в секундах (длительность попыток).
nobind
;user nobody # Ограничение прав на сервере -> повысить безопасность. Эти записи следует активировать только для клиентов Linux.
;group nogroup
persist-key
persist-tun
ca ca.crt # Информация о пути для сертификатов/ключей.
cert client.crt
key client.key
remote-cert-tls server # Предотвращает атаки типа «человек посередине».
tls-crypt ta.key # Добавляйте подписи HMAC к пакетам -> повышайте безопасность. Заменяет параметр 'tls-auth ta.key 1'.
# Отсутствующий 1 так правильно. Также в tls-crypt больше нет необходимости указывать 'key-direction 1'.
# Важно: Здесь можно использовать только один вариант, т.е. либо tls-crypt (рекомендуется), либо tls-auth (устаревший).
cipher AES-256-GCM # Verschlüsselung festlegen. Weitere über: "openvpn --show-ciphers".
;compress lz4-v2 # Опционально: Komprimierung der Daten vor der Übertragung. Aus
Sicherheitsgründen sollte man die Komprimierung nicht aktivieren.
verb 3 # Detailgrad des Logfiles festlegen von 0-9, 2-4 empfohlen, 5-9 nur für Debug.
Optimierte client.conf mit dem TCP-Protokoll (für Copy & Paste empfohlen) 👍:
## Zusammengefasste
client.conf TCP-Version mit kurzen Kommentaren mit allen wichtigen Parametern und Anpassungen für mehr Sicherheit. ##
auth-nocache # Das Zertifikatspasswort nicht im RAM zwischenspeichern.
auth SHA512 # Die
HMAC-Authentication wurde aus Sicherheitsgründen von SHA1 (Standard) auf SHA512 erhöht.
verify-x509-name
server name # Verhindert man-in-the-middle-Attacken. Hier muss man den Common-Name (CN) für das Serverzertifikat einsetzen.
# Подсказка: In diesem Tutorial lautet der Server-CN einfach nur "
server".
client # Client Konfiguration.
dev tun # Routing im OSI Layer 3.
proto tcp4 # TCP über IPv4.
remote
x.x.x.x 1194 # Hier die öffentliche IP-Adresse (x.x.x.x) oder die DynDNS-Kennung zum VPN-Server sowie den verwendeten Port eingeben.
resolv-retry infinite # Den Verbindungsaufbau bei Fehlern unendlich oft wiederholen. Alternativ die Angabe in Sekunden (Zeitdauer der Versuche).
nobind
;user nobody # Einschränken der Rechte auf dem Server -> die Sicherheit erhöhen. Diese Einträge sollte man nur für Linux Clients aktivieren.
;group nogroup
persist-key
persist-tun
ca ca.crt # Pfadangaben zu den Zertifikaten/Schlüsseln.
cert client.crt
key client.key
remote-cert-tls server # Verhindert man-in-the-middle Attacken.
tls-crypt ta.key # HMAC-Signaturen den Paketen hinzufügen -> die Sicherheit erhöhen. Ersetzt den Parameter 'tls-auth ta.key 1'.
# Die fehlende 1 ist so richtig. Auch die Angabe der 'key-direction 1' ist bei tls-crypt nicht mehr nötig.
# Важно: Man darf hier nur eine Variante verwenden, also entweder tls-crypt (empfohlen) oder tls-auth (veraltet).
cipher AES-256-GCM # Verschlüsselung festlegen. Weitere über: "openvpn --show-ciphers".
;compress lz4-v2 # Опционально: Komprimierung der Daten vor der Übertragung. Aus
Sicherheitsgründen sollte man die Komprimierung nicht aktivieren.
verb 3 # Detailgrad des Logfiles festlegen von 0-9, 2-4 empfohlen, 5-9 nur für Debug.
Client Skript zum Erstellen der .ovpn Datei:
34.
Konfigurationsdateien zusammenfassen:
Die verschiedenen einzelnen Dateien kann man zu einer Datei zusammenfassen.
Man erstellt dafür am einfachsten folgendes Script:
nano ~/client/make_client_ovpn.sh
# в терминале/без GUI
pluma ~/client/make_client_ovpn.sh
# в рабочем столе/с GUI
Hier folgendes einfügen (Copy & Paste wird empfohlen):
#!/bin/bash
# $1 ist der zuerst übergebene Parameter (der Client-Name).
# Dieses Script erzeugt die *.ovpn Datei für den angegebenen Client.
KEY_DIR=~/client/keys
OUT_DIR=~/client/files
cat ~/client/client.conf > ${OUT_DIR}/$1.ovpn | echo -e "
<ca> \n$(cat ${KEY_DIR}/ca.crt)\n</ca>
<cert> \n$(cat ${KEY_DIR}/$1.crt)\n</cert>
<key> \n$(cat ${KEY_DIR}/$1.key)\n</key>
<tls-crypt>\n$(cat ${KEY_DIR}/ta.key)\n</tls-crypt>" >> ${OUT_DIR}/$1.ovpn
Wichtige Дополнительные примечания:
1. Verwendet beim ta.key entweder 'tls-crypt' ab OpenVPN 2.4 (wie hier im Script schon angegeben) oder 'tls-auth' für alte Versionen.
2. Übernehmt das Sript exakt so wie hier angegeben.
Важно: Vor dem Zertifikat bzw. Schlüssel am Beginn dürfen keine weiteren Leerzeichen stehen.
Alle Schlüssel müssen exakt so vorhanden sein:
client.conf # Bzw. immer der jeweilige Inhalt der Datei.
<ca> # Richtig: Ohne führendes Leerzeichen wird der Schlüssel erkannt.
ca.crt # Richtig: Ohne führendes Leerzeichen am Beginn der ersten Zeile.
</ca>
<cert>
clientXX.crt
</cert>
<key>
clientXX.key
</key>
<tls-crypt>
ta.key
</tls-crypt>
Beachtet hier folgendes:
Schlüssel werden ggf. gar nicht gefunden, wenn man die Schlüssel wie hier dargestellt nebeneinander einfügt
oder wenn eine Zertifikats- bzw. Schlüsseldatei mit einem Leerzeichen am ersten Zeilenanfang beginnt:
client.conf # Bzw. immer der jeweilige Inhalt der Datei.
# Im Kopf sind beliebige Leerzeilen und Kommentarzeilen erlaubt.
<ca> # Richtig: Ohne führende Leerzeichen = der Schlüssel wird erkannt.
-----BEGIN CERTIFICATE----- # Richtig: Ohne führendes Leerzeichen am Beginn der ersten Zeile.
....
ca.crt
</ca>
<cert>
clientXX.crt
</cert> <key> # Fehler 1: Schlüssel dürfen nicht zusammengefasst nebeneinanderstehen.
-----BEGIN PRIVATE KEY----- # Fehler 2: Am Beginn der ersten Zeile ist ein zusätzliches Leerzeichen.
....
clientXX.key # Der clientXX.key wird daher nicht gefunden.
</key>
# Beliebig viele Leerzeilen zwischen den Schlüsseln sind problemlos möglich.
<tls-crypt>
ta.key
</tls-crypt>
Fehler 1:
Sind in der .ovpn Datei Zertifikats- bzw. Schlüssel-Tags auf einer Zeile nebeneinander zusammengefasst, dann erscheint ggf. folgender Fehler beim Verbindungsaufbau:
Thu Mar 19 14:56:34 2020 OpenVPN GUI>OpenVPN terminated with exit code 1. See the log file for details
Im Logfile steht dann folgende Fehlermeldung:
...
Options error: Unrecognized option or missing or extra parameter(s) in client02.ovpn:33: Certificate: (2.4.8)
Use --help for more information.
Die Verbindung bricht hier direkt wieder ab, da die OpenVPN Software die Schlüssel bzw. Parameter in der Konfigurationsdatei nicht finden kann.
Fehler 2:
Sind in der .ovpn Datei vor dem eigentlichen Zertifikat bzw. Schlüssel am Beginn vom Inhalt/Content in der ersten Zeile zusätzliche Leerzeichen, dann erscheint ggf. folgender Fehler beim Verbindungsaufbau:
...
Thu Mar 19 12:43:44 2020 SIGUSR1[soft,private-key-password-failure] received, process restarting
Thu Mar 19 12:43:44 2020 MANAGEMENT: >STATE:1584618224,RECONNECTING,private-key-password-failure,,,,,
Thu Mar 19 12:43:44 2020 Restart pause, 5 second(s)
Thu Mar 19 12:43:49 2020 SIGUSR1[soft,private-key-password-failure] received, process restarting
Thu Mar 19 12:43:49 2020 MANAGEMENT: >STATE:1584618229,RECONNECTING,private-key-password-failure,,,,,
Thu Mar 19 12:43:49 2020 Restart pause, 5 second(s)
...
Der Fehler wiederholt sich fortlaufend. Ein Verbindungsaufbau ist so auch nicht möglich.
35.
Die Client-Konfigurationsdatei (.ovpn) erzeugen:
chmod 700 ~/client/make_client_ovpn.sh
# Das Script ausführbar Kennzeichen (nur einmalig nötig).
~/client/make_client_ovpn.sh client02
# Erzeugt für den User client02 (entsprechend anpassen) die client02.ovpn-Datei.
ls -l ~/client/files/
# Prüfen ob die .ovpn Datei für den Client erzeugt wurde.
Die erzeugte .ovpn-Datei liegt im
Ordner '~/client/files'.
Clients benötigen für den Verbindungsaufbau nun nur noch diese einzelne .ovpn Datei und ggf. das dazugehörige Passwort.
Die Server Konfiguration ist hiermit abgeschlossen.
Verbindungen protokollieren (optional/empfohlen):
36.
Um die VPN-Verbindungen zu protokollieren muss man in der server.conf ein noch ein paar Einträge hinzufügen.
Man öffnet daher die server.conf Datei nochmal mit einem Editor:
nano /etc/openvpn/server.conf
# в терминале/без GUI
nohup pluma /etc/openvpn/server.conf
# в рабочем столе/с GUI
Hier fügt man der server.conf Datei die folgenden Einträge (am einfachsten direkt am Anfang) hinzu:
script-security 2 # Das Ausführen von Scripten zulassen (wird fürs Logging benötigt).
client-connect /adm/logon.sh # Das angegebene Script wird beim Client-connect auf dem Server gestartet. Erfassung von: verbundenen Clients, Datum, IP usw.
client-disconnect /adm/logout.sh # Das Script wird beim Client-disconnect auf dem Server gestartet. Erfassung von: getrennten Clients, Datum, IP, Dauer, Traffic usw.
Подсказка: Bitte beachtet dabei, dass der OpenVPN Server jetzt erst wieder startet, wenn man die hier angegebenen Scripte entsprechend angelegt hat.
Folgt also zuerst weiter der Anleitung bevor Ihr den Server neu startet.
37.
Verzeichnis für die Logging-Scripte und für das User-Log erstellen:
mkdir -pv /adm
38.
Das logon-Script (client-connect) erstellen:
nano /adm/logon.sh
# в терминале/без GUI
pluma /adm/logon.sh
# в рабочем столе/с GUI
Hier folgendes einfügen:
#!/bin/sh
echo logon , $common_name,
$(date "+%Y-%m-%d, %H:%M"), $trusted_ip >> /adm/userlog.csv.txt
exit 0
39.
Das logout-Script (client-disconnect) erstellen:
nano /adm/logout.sh
# в терминале/без GUI
pluma /adm/logout.sh
# в рабочем столе/с GUI
Hier folgendes einfügen:
#!/bin/sh
echo logout, $common_name,
$(date "+%Y-%m-%d, %H:%M"), $trusted_ip, $time_duration, $bytes_sent, $bytes_received >> /adm/userlog.csv.txt
exit 0
Parametererklärungen:
- %common_name% = ist der Zertifikats-Common-Name (CN) z. B. client02 mit dem sich der OpenVPN-Client-User verbindet (OpenVPN-Umgebungsvariable). Somit ist eine eindeutige Userzuordnung möglich.
- $(date "+%Y-%m-%d, %H:%M") = ermittelt das Datum und die Uhrzeit für die Protokollierung (System-Umgebungsvariablen).
- %trusted_ip% = ist die öffentliche remote-IP-Adresse, über die der Client mit dem Internet verbunden ist (OpenVPN-Umgebungsvariable).
- %time_duration% = gibt die Zeitdauer in Sekunden an, wie lange der Client verbunden war (OpenVPN-Umgebungsvariable).
- %bytes_sent% = ist die Datenmenge in Bytes, die der Client aus dem Servernetzwerk geladen hat. Beschreibt also die Daten die der VPN-Server zum Client gesendet hat.
Ein zu hoher Wert und eine sonst völlig unbekannte IP-Adresse könnte auf einen Missbrauch durch einen dritten hindeuten. Also auf jemanden, der größere Datenmengen herunterlädt (OpenVPN-Umgebungsvariable).
- %bytes_received% = ist die Datenmenge in Bytes die der Client in das Servernetzwerk gesendet hat, also die Daten die der VPN-Server empfangen hat (OpenVPN-Umgebungsvariable).
- echo = Befehl speichert den Inhalt der oben erklärten OpenVPN- und System-Umgebungsvariablen dann in der userlog.csv.txt Datei ab.
Ich empfehle, zwischen den Werten Kommas als Trennzeichen zu verwenden, denn dann kann man diese Datei dann z. B. leicht in Microsoft Excel oder LibreOffice Calc einlesen und dort zur Analyse weiterverarbeiten.
Die Dateiendung .txt wurde für die Logdatei gewählt, da die Datei so direkt im Webbrowser einsehbar ist.
40.
Als nächstes muss man die Scripte noch ausführbar machen:
chmod +x /adm/logon.sh
chmod +x /adm/logout.sh
Wenn man in der server.conf die verstärkte Sicherheit eingestellt hat, also die Einträge 'user nobody' und 'group nobody' aktiviert hat, dann muss man nun noch das Schreiben des Logfiles ermöglichen.
Tut man dies nicht, so wird keine userlog.csv.txt Datei angelegt und im Logfile erscheint der Fehler '... cannot create /adm/userlog.csv: Permission denied'.
41.
Ein leeres Logfile für die Protokollierung anlegen und die Dateiberechtigungen anpassen:
touch /adm/userlog.csv.txt
# Eine neue leere Datei anlegen.
chmod 666 /adm/userlog.csv.txt
# Die Dateiberechtigungen setzen.
Важно: Wenn man die Datei mal löschen sollte. Dann muss man diese wieder mit diesen Berechtigungen neu anlegen.
42.
Um die Einstellungen für die Protokollierung zu übernehmen muss man den OpenVPN Server nochmals neu starten:
systemctl restart openvpn@server
Hier noch kurz ein Beispiel-Logfile:
logon , client02, 2020-02-04, 13:15, 185.66.194.29
logout, client02, 2020-02-04, 13:16, 185.66.194.29, 29, 5134, 77031
...
Das Logging ist hier abgeschlossen.
Protokolle im Netzwerk freigeben mit lighttpd (optional):
43.
Wenn man nun das Logfile täglich einsehen möchte, dann empfiehlt sich die Installation eines schlanken Webservers.
Aus der vielzahl der verfügbaren Web-Server hat sich lighttpd als bester Kandidat herausgestellt.
lighttpd [1] [2]
ist derzeit einer der Top Webserver.
lighttpd wird aktuell aktiv weiter Entwickelt. Die Software ist also aktuell und sicher.
Weiterhin ist der Webserver wie es der Name schon sagt 'light' (leicht). Das bedeutet, der Ressourcenverbrauch ist relativ gering.
Auch die Konfiguration ist deutlich leichter und schlanker zu bewerkstelligen als z. B. bei einem Apache Tomcat Webserver.
Somit spricht also alles für den lighttpd (meine Empfehlung).
Den Webserver installieren:
sudo apt-get install lighttpd
44.
Die Webserver Konfiguration anpassen:
nano /etc/lighttpd/lighttpd.conf
# в терминале/без GUI
pluma /etc/lighttpd/lighttpd.conf
# в рабочем столе/с GUI
Hier bei dem markierten Eintrag den Pfad und Dateinamen zum Logfile anpassen:
...
server.modules = (
"mod_indexfile",
"mod_access",
"mod_alias",
"mod_redirect",
)
server.document-root = "/adm/userlog.csv.txt"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
...
45.
Um die Änderungen zu übernehmen muss man den Webserver neu starten.
Weiterhin muss man um den Zugriff im Netzwerk zu ermöglichen noch die Firewall freigeben:
systemctl restart lighttpd
# Den Webserver neu starten.
ufw allow 80/tcp
# Den Webserver in der Firewall freigeben.
Das Logfile sollte nun im Webbrowser über http://127.0.0.1 (localhost) am Server direkt bzw. über http://x.x.x.x
(hier die lokale Server IP-Adresse anpassen) von überall im LAN einsehbar sein.
Hier kann man nun jederzeit die verschiedensten Einwahldaten, die Dauer sowie das übertragene Datenvolumen einsehen.
Zertifikate sperren:
46.
Ein Client-Zertifikat bzw. Server-Zertifikat sperrt man durch den Aufruf:
cd ~/EasyRSA-3.0.8
./easyrsa revoke client02
Das sperren mit der Eingabe yes und ENTER bestätigen.
Важно:
Durch den Aufruf wird das Zertifikat von der Zertifizierungsstelle (CA) widerrufen.
Der OpenVPN Server selbst, prüft jedoch nicht ob Clients gesperrt wurden.
Clients haben somit immer noch Zugang zum VPN. Um dies zu korrigieren muss man eine Sperrliste (CRL) auf dem Rechner der Zertifizierungsstelle (CA) erstellen.
47.
Mit dem folgenden Aufruf erstellt man auf dem PC der Zertifizierungsstelle (CA) die benötigte
Certificate Revocation List (CRL):
./easyrsa gen-crl
Создано: ~/EasyRSA-3.0.8/pki/crl.pem
48.
Die crl.pem Datei in den Ordner /etc/openvpn/ kopieren:
cp ~/EasyRSA-3.06/pki/crl.pem /etc/openvpn/
49.
Nun muss man noch in der OpenVPN server.conf Datei auf die Certificate Revocation List (crl.pem) verweisen:
nano /etc/openvpn/server.conf
# в терминале/без GUI
pluma /etc/openvpn/server.conf
# в рабочем столе/с GUI
Hier muss man folgende Zeile hinzufügen:
crl-verify crl.pem # Diese Zeile bevorzugt am Ende (es ist egal wo) hinzufügen.
Важно: Diesen Eintrag darf man erst hinzufügen, wenn mindestens ein Zertifikat gesperrt wurde.
Aktiviert man den Eintrag schon vorher, dann kann man keine Verbindung aufbauen (OpenVPN startet dann nicht mehr).
50.
Zuletzt muss man OpenVPN neu starten um die gesperrten Zertifikate zu berücksichtigen:
systemctl restart openvpn@server
Die gesperrten Clients können sich dann nicht mehr verbinden.
Bereits verbundene Clients werden kurz getrennt.
Im Router die Portfreigabe einrichten:
Freigabe im Router einrichten:
Damit der Server auch über das Internet erreichbar ist, muss man im [DSL-Router-im-VPN-Server-Netzwerk]
den verwendeten Port [1194] mit dem verwendeten Protokoll [UDP oder TCP] (entsprechend anpassen)
auf die interne [IP-Adresse des OpenVPN-Servers] weiterleiten.
Man muss also eine Portweiterleitung/Port-Forwarding/Portfreigabe im Router einrichten.
Ich stelle hier zwei Varianten vor, einmal mit einer handelsüblichen Fritz!Box und einmal mit einem Business LANCOM Router.
51.
Den Port gibt man in der Fritz!Box 7590 wie folgt frei:
1. Klickt links im Menü auf [Internet] und [Freigaben].
2. Dann auf den Karteireiter [Portfreigaben] klicken und unten rechts auf [Gerät für Freigaben hinzufügen] klicken.
3. Wählt hier zunächst bei [Gerät] euren VPN-Server aus oder gebt die entsprechenden interne IP-Adresse des VPN-Servers manuell ein.
Klickt hier dann unten rechts auf [Neue Freigabe].
4. In dem sich neu öffnenden Fenster stellt man dann folgendes ein:
Anwendung [Andere Anwendung]
Bezeichnung [VPN]
Protokoll [UDP] = hier UDP oder TCP einstellen.
Port an Gerät [1194] bis Port [1194] = dies ist der Port auf dem der VPN-Server intern lauscht.
Port extern gewünscht [1194] = dies ist der Port über den der VPN-Server später extern erreichbar sein soll.
[✓] Freigabe aktivieren
5. Das Ganze dann einfach mit [OK] und [Übernehmen] speichern.
6. Wenn alles geklappt hat sollte die Portfreigabe jetzt mit einem grünen Punkt in der Übersicht erscheinen.
Sonstige weitere Routeranpassungen muss man nicht vornehmen.
Zur besseren Verdeutlichung habe ich die Schritte hier noch mal als Animation vorbereitet.
Beachtet auch den Mauszeiger dieser zeigt immer den nächsten Schritt an.

Hinweise: Dies ist eine Schritt-für-Schritt-Animation, die Bilder wechseln alle 10 Sekunden automatisch.
Die Animation wird derzeit nur auf Webbrowsern gezeigt die webp Unterstützen (nicht im Internet-Explorer).
52.
Das Portforwarding im LANCOM R884VA Router einrichten:

Подсказка: In der Testumgebung wurde hier das TCP- und UDP-Protokoll weitergeleitet. Im produktiven Betrieb reicht es wenn man nur das tatsächlich verwendete Protokoll weiterleitet.
Das Port-Forwarding richtet man über die folgenden Menüpunkte ein:
[Konfiguration], [IP-Router], [Maskierung] und [Port-Forwarding-Tabelle]
Hier unten auf [Hinzufügen] klicken und die entsprechenden Werte eingeben. Der Rest sollte dann klar sein.
Sonstige weitere Routeranpassungen muss man nicht vornehmen.
Die optimale MTU Größe ermitteln:
53.
Wenn man größere Daten übertragen möchte dann werden diese nicht am Stück übertragen, sondern in viele kleine Datenpakete (fragmente) verpackt.
Die MTU (maximum transmission unit) legt nun fest wie groß die jeweiligen TCP/IP-Datenpakete sind.
Die Datenpakete enthalten dabei nicht nur Daten, sondern eine Vielzahl von weiteren Informationen (Header-Daten) wie Beispielsweise: Quelle, Ziel, Status, Fragmentierung, Prüfsumme.
Daraus kann man ableiten, je größer der MTU-Wert ist, desto günstiger wird das Verhältnis von TCP/IP-Header zu Nutzdaten.
Eine größere MTU würde die Verbindung somit beschleunigen.
Doch Vorsicht!
Datenpakete die zu groß sind werden bei der Übertragung auf Routern (bzw. in der Firewall u. ä.) oft einfach verworfen. Dies trifft vor allem auf verbindungslose UDP-Datenpakete zu.
Zwar könnten Router zu große Datenpakete entsprechend umfragmentieren. Dies wird aber heutzutage häufig nicht mehr durchgeführt, da dies Leistung kostet. Zu große Pakete werden daher in der Regel einfach verworfen.
Das verwerfen von Paketen kann auch unterwegs auf dem Router beim Internetprovider passieren.
Важно: Zu hohe MTU/fragment Werte machen die Verbindung daher ggf. instabil.
Bei einem zu hohem MTU-Wert wird die Verbindung zwar meist aufgebaut. Man kann aber oft nicht vernünftig Daten übertragen.
Typische Symptome sind:
- Die Verbindung ist nur wenige Sekunden nutzbar.
Bzw. sobald man Daten übertragen will (sobald die Auslastung der Datenpakete steigt) bricht die Verbindung zusammen.
- Hängende Web-Anwendungen. Der Aufbau klappt nur nach mehrfachen reload der Webseiten.
- Extrem langsame Verbindungen.
- Ständig abgebrochene Downloads/Datenübertragungen.
Und all das obwohl die VPN-Verbindung in der Regel nach wie vor steht.
54.
Wie findet man nun den optimalen MTU-Wert heraus?
Wenn mehrere Verbindungen zur Verfügung stehen (verschiedene Standorte, Mobilfunk, Freifunk usw.) dann testet diese alle.
Beachtet in dem Zuge auch, Routen sind im Internet niemals statisch. Änderungen auch während der Laufzeit sind immer möglich.
Man sollte daher von dem ermittelten Maximalwert ggf. auch eine kleine Reserve für ungeplantes (andere Orte, andere MTU) abziehen.
Beim Ermitteln der optimalen MTU beginnt man zunächst mit einem größeren Wert (1500 bei Standard Ethernet),
diesen verkleinert man nun so lange bis die Pakete nicht mehr fragmentiert werden.
Beachtet dabei, dieser ermittelte Wert ist nur der netto Datenwert (Datenbytes).
Um die optimale MTU zu erhalten fügt man noch 28 Bytes (Header-Bytes) hinzu.
Die Berechnung des optimalen MTU-Wertes (für IPv4) erfolgt daher wie folgt:
nicht_fragmentierter_Ping_Wert + 28 = optimale MTU
55.
Test unter Windows:
ping -f -l 1252 1.1 # unter Windows
Parametererklärungen:
-f = Pakete nicht fragmentieren (gilt nur für IPv4).
-l 1252 = Bestimmt die Paketgröße. Diese kann man anpassen von 68 (Minimum) bis 1500 (Standard Ethernet).
Man beginnt bei 1500 und verkleinert den Wert so lange bis das Datenpaket nicht mehr fragmentiert wird.
Im Freifunk Netz von saar.freifunk.net ist 1252 (Stand 2020-01-14) die größte Paketgröße (Datenbytes ohne Header).
Wenn man die Verbindung auch Unterwegs (von verschiedenen Standorten aus) nutzen will, dann sollte man die Paketgröße nicht zu hoch einstellen.
Ich habe daher den MTU-Wert oben im Tutorial auf 1200 gesenkt (meine Empfehlung wenn man UDP verwendet/sehr stabiler Betrieb).
Werte bis 1280 sind sicher auch noch für die meisten Ok. Noch höhere Werte können die eben beschriebenen Probleme verursachen.
1.1 ist hier das Ping-Ziel. 1.1 ist dabei die Kurzform von 1.0.0.1.
Man kann hier auch eine andere beliebige Domainnamen wie z. B. www.ctaas.de verwenden.

Hinweise: Hier ein Beispiel ping unter einer typischen Windows 10 Installation.
Der erste ping mit einer Paketgröße von 1465 schlägt hier fehl. Das Datenpaket müsste hier fragmentiert werden. Was jedoch durch den Parameter -f verboten wurde. Die Datenübertragung schlägt also fehl.
Der zweite ping mit einer Paketgröße von 1464 klappt. Die optimale MTU-Größe wäre hier 1492 (1464 Datenbytes + 28 Header-Bytes).
Beachtet hier aber, dass unterwegs wie z. B. in Hotels, bei mobilen und freien Netzen wie z. B. Freifunk der größte nicht fragmentierte MTU-Wert viel kleiner sein kann.
Im Freifunk Netz von saar.freifunk.net ist der größtmögliche MTU Wert z. B. nur 1280 (1252 Datenbytes + 28 Header-Bytes).
Die MTU-Werte vom Windows System anzeigen:
netsh interface ipv4 show interfaces # unter Windows

Hinweise: Hier ein Beispiel unter Windows 10 mit installiertem VirtualBox Netzwerkadapter.
56.
Test unter Linux:
ping -c 4 -s 1464 -M do 1.1 # unter Linux
Parametererklärungen:
-c 4 = (count) Bestimmt die Anzahl der zu sendenden Pakete.
-s 1464 = (size) Legt die Größe der zu sendenden Pakete fest von 68 (Minimum) bis 1500 (Standard Ethernet).
-M do = (pmtudisc_option) Legt die "Path MTU Discovery" variante fest.
Hierbei bedeutet:
do = verbiete überall die Fragmentierung (auch lokal).
want = Führe "Path MTU Discovery" aus, fragmentiere lokal, wenn das Paket zu groß ist.
dont = DF nicht setzen.
1.1 ist hier wieder das Ping-Ziel. 1.1 ist dabei die Kurzform von 1.0.0.1.
Man kann hier auch eine andere beliebige Domainnamen wie z. B. www.ctaas.de verwenden.

Hinweise: Hier ein Beispiel ping unter Xubuntu 20.04 LTS.
Der erste ping mit einer Paketgröße von 1465 schlägt hier mit der Meldung: 'ping: lokaler Fehler Nachricht zu lang, ...' fehl.
Das Datenpaket müsste hier fragmentiert werden. Was jedoch durch den Parameter '-M do' verboten wurde. Die Datenübertragung schlägt also fehl.
Beachtet man die Meldung genau, dann fällt einem auf, dass am Ende bereits die maximale MTU ausgegeben wird, hier 'MTU=1492'
Der zweite ping mit einer Paketgröße von 1464 klappt. Die optimale MTU-Größe wäre hier 1492 (1464 Datenbytes + 28 Header-Bytes).
Die MTU-Werte vom Linux System anzeigen:
ip link # unter Linux - neue Systeme
ifconfig # unter Linux - ältere Systeme

Hinweise: Hier ein Beispiel unter Xubuntu 20.04 LTS mit gestartetem OpenVPN Server (tun0 Netzwerkadapter).
Fazit:
Mit dem hier im Tutorial voreingestellten Wert von 1200 (nur bei UDP) habe ich gute Erfahrungen gemacht.
Tendenziell empfehle ich die Verwendung des TCP-Protokolls, da hier weniger Paketverluste auftreten, auch wenn der Paketoverhead bei TCP etwas größer ist.
Denn die TCP-Pakete werden automatisch an die entsprechende Paketgröße angepasst. Die Geschwindigkeit passt sich somit bei unterschiedlichen Gegebenheiten viel besser an.
Weiterhin muss man bedenken, der Geschwindigkeitsunterschied zwischen UDP und TCP ist dank moderner Internet-Verbindungen heutzutage kaum noch feststellbar.
Früher bei langsamen ISDN oder Modem Verbindungen war dies vielleicht noch ausschlaggebend, heutzutage mit GLAN und MBit Verbindungen kann man dies vernachlässigen.
TCP-Verbindungen sind definitiv stabiler und daher meine Empfehlung.
Fehlermeldungen bei doppelter/mehrfacher Nutzung der Verbindung mit ein und demselben Zertifikat:
57.
Beachtet bitte das man für jeden User bzw. genauer für jedes Gerät was sich verbinden soll ein separates Zertifikat benötigt.
Hat ein User zwei oder mehre Geräte und möchte sich mit diesen gleichzeitig verbinden dann muss man für jedes Gerät ein separates Zertifikat erzeugen.
Beachtet man dies nicht, so kommt es zu folgendem Verhalten:
- Die Verbindung wird sauber aufgebaut und das Icon im Tray bei der Verwendung der Windows Clients wird auch kurz grün.
- Die Verbindung bricht aber innerhalb weniger ms/s wieder zusammen und das Tray Icon wird wieder gelb und es startet ein erneuter Verbindungsaufbau.
- Die Verbindung steht dann also nicht stabil. Sie bricht immer wiederkehrend zusammen und ein Arbeiten ist praktisch unmöglich.
- Die Verbindung baut sich in der Minute ca. 6-mal neu auf. Letzteres ist natürlich abhängig von der Geschwindigkeit der Verbindungen.
- Im Logfile stehen dann Fehler wie: [Connection reset, restarting [0]], [SIGUSR1[soft,connection-reset] received, process restarting] bzw. [RECONNECTING,connection-reset].
- Das Problem ist hier einfach das alle Geräte, die das gleiche Zertifikat verwenden, sich hier gegenseitig immer rauswerfen. Dadurch wird die Verbindung gegenseitig ständig getrennt.
Hier zur Verdeutlichung mal ein anonymisiertes Beispiel eines fehlerhaften Logfiles:
2022-11-28 09:03:25 OpenVPN 2.5.8 [git:release/2.5/0357ceb877687faa] Windows-MSVC [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Nov 11 2022
2022-11-28 09:03:25 Windows version 10.0 (Windows 10 or greater) 64bit
2022-11-28 09:03:25 library versions: OpenSSL 1.1.1s 1 Nov 2022, LZO 2.10
2022-11-28 09:03:25 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
2022-11-28 09:03:25 Need hold release from management interface, waiting...
2022-11-28 09:03:25 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
2022-11-28 09:03:25 MANAGEMENT: CMD 'state on'
2022-11-28 09:03:25 MANAGEMENT: CMD 'log on all'
2022-11-28 09:03:25 MANAGEMENT: CMD 'echo on all'
2022-11-28 09:03:25 MANAGEMENT: CMD 'bytecount 5'
2022-11-28 09:03:25 MANAGEMENT: CMD 'state'
2022-11-28 09:03:25 MANAGEMENT: CMD 'hold off'
2022-11-28 09:03:25 MANAGEMENT: CMD 'hold release'
2022-11-28 09:03:37 MANAGEMENT: CMD 'password [...]'
2022-11-28 09:03:37 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:37 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:37 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:37 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:37 TCP/UDP: Preserving recently used remote address: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:37 Socket Buffers: R=[65536->65536] S=[65536->65536]
2022-11-28 09:03:37 Attempting to establish TCP connection with [AF_INET]80.153.75.167:1194 [nonblock]
2022-11-28 09:03:37 MANAGEMENT: >STATE:1669622617,TCP_CONNECT,,,,,,
2022-11-28 09:03:37 TCP connection established with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:37 TCPv4_CLIENT link local: (not bound)
2022-11-28 09:03:37 TCPv4_CLIENT link remote: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:37 MANAGEMENT: >STATE:1669622617,WAIT,,,,,,
2022-11-28 09:03:37 MANAGEMENT: >STATE:1669622617,AUTH,,,,,,
2022-11-28 09:03:37 TLS: Initial packet from [AF_INET]80.153.75.167:1194, sid=5a4de6eb 07743b7f
2022-11-28 09:03:37 VERIFY OK: depth=1, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=Easy-RSA CA, emailAddress=mail@ctaas.de
2022-11-28 09:03:37 VERIFY KU OK
2022-11-28 09:03:37 Validating certificate extended key usage
2022-11-28 09:03:37 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2022-11-28 09:03:37 VERIFY EKU OK
2022-11-28 09:03:37 VERIFY X509NAME OK: C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:37 VERIFY OK: depth=0, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:38 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 8761 bit RSA, signature: RSA-SHA256
2022-11-28 09:03:38 [server] Peer Connection Initiated with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:38 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.20.10,dhcp-option DNS 9.9.9.9,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9,peer-id 0,cipher AES-256-GCM'
2022-11-28 09:03:38 OPTIONS IMPORT: timers and/or timeouts modified
2022-11-28 09:03:38 OPTIONS IMPORT: --ifconfig/up options modified
2022-11-28 09:03:38 OPTIONS IMPORT: route options modified
2022-11-28 09:03:38 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2022-11-28 09:03:38 OPTIONS IMPORT: peer-id set
2022-11-28 09:03:38 OPTIONS IMPORT: adjusting link_mtu to 1626
2022-11-28 09:03:38 OPTIONS IMPORT: data channel crypto options modified
2022-11-28 09:03:38 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:38 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:38 interactive service msg_channel=456
2022-11-28 09:03:38 open_tun
2022-11-28 09:03:38 tap-windows6 device [OpenVPN TAP-Windows6] opened
2022-11-28 09:03:38 TAP-Windows Driver Version 9.24
2022-11-28 09:03:38 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.10/255.255.255.252 on interface {8A581024-BC1C-4998-9866-EE30A9E63F21} [DHCP-serv: 10.8.0.9, lease-time: 31536000]
2022-11-28 09:03:38 Successful ARP Flush on interface [8] {8A581024-BC1C-4998-9866-EE30A9E63F21}
2022-11-28 09:03:38 MANAGEMENT: >STATE:1669622618,ASSIGN_IP,,10.8.0.10,,,,
2022-11-28 09:03:38 IPv4 MTU set to 1500 on interface 8 using service
2022-11-28 09:03:43 TEST ROUTES: 2/2 succeeded len=1 ret=1 a=0 u/d=up
2022-11-28 09:03:43 C:\Windows\system32\route.exe ADD 80.153.75.167 MASK 255.255.255.255 10.24.193.3
2022-11-28 09:03:43 Route addition via service succeeded
2022-11-28 09:03:43 C:\Windows\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.9
2022-11-28 09:03:43 Route addition via service succeeded
2022-11-28 09:03:43 C:\Windows\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.9
2022-11-28 09:03:43 Route addition via service succeeded
2022-11-28 09:03:43 MANAGEMENT: >STATE:1669622623,ADD_ROUTES,,,,,,
2022-11-28 09:03:43 C:\Windows\system32\route.exe ADD 10.8.0.1 MASK 255.255.255.255 10.8.0.9
2022-11-28 09:03:43 Route addition via service succeeded
2022-11-28 09:03:43 Initialization Sequence Completed
2022-11-28 09:03:43 MANAGEMENT: >STATE:1669622623,CONNECTED,SUCCESS,10.8.0.10,80.153.75.167,1194,10.24.207.56,52002
2022-11-28 09:03:43 Connection reset, restarting [0]
2022-11-28 09:03:43 SIGUSR1[soft,connection-reset] received, process restarting
2022-11-28 09:03:43 MANAGEMENT: >STATE:1669622623,RECONNECTING,connection-reset,,,,,
2022-11-28 09:03:43 Restart pause, 5 second(s)
2022-11-28 09:03:48 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:48 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:48 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:48 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:48 TCP/UDP: Preserving recently used remote address: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:48 Socket Buffers: R=[65536->65536] S=[65536->65536]
2022-11-28 09:03:48 Attempting to establish TCP connection with [AF_INET]80.153.75.167:1194 [nonblock]
2022-11-28 09:03:48 MANAGEMENT: >STATE:1669622628,TCP_CONNECT,,,,,,
2022-11-28 09:03:48 TCP connection established with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:48 TCPv4_CLIENT link local: (not bound)
2022-11-28 09:03:48 TCPv4_CLIENT link remote: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:48 MANAGEMENT: >STATE:1669622628,WAIT,,,,,,
2022-11-28 09:03:48 MANAGEMENT: >STATE:1669622628,AUTH,,,,,,
2022-11-28 09:03:48 TLS: Initial packet from [AF_INET]80.153.75.167:1194, sid=69f19f98 08355026
2022-11-28 09:03:48 VERIFY OK: depth=1, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=Easy-RSA CA, emailAddress=mail@ctaas.de
2022-11-28 09:03:48 VERIFY KU OK
2022-11-28 09:03:48 Validating certificate extended key usage
2022-11-28 09:03:48 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2022-11-28 09:03:48 VERIFY EKU OK
2022-11-28 09:03:48 VERIFY X509NAME OK: C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:48 VERIFY OK: depth=0, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:48 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 8761 bit RSA, signature: RSA-SHA256
2022-11-28 09:03:48 [server] Peer Connection Initiated with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:48 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.20.10,dhcp-option DNS 9.9.9.9,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9,peer-id 0,cipher AES-256-GCM'
2022-11-28 09:03:48 OPTIONS IMPORT: timers and/or timeouts modified
2022-11-28 09:03:48 OPTIONS IMPORT: --ifconfig/up options modified
2022-11-28 09:03:48 OPTIONS IMPORT: route options modified
2022-11-28 09:03:48 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2022-11-28 09:03:48 OPTIONS IMPORT: peer-id set
2022-11-28 09:03:48 OPTIONS IMPORT: adjusting link_mtu to 1626
2022-11-28 09:03:48 OPTIONS IMPORT: data channel crypto options modified
2022-11-28 09:03:48 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:48 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:48 Preserving previous TUN/TAP instance: OpenVPN TAP-Windows6
2022-11-28 09:03:48 Initialization Sequence Completed
2022-11-28 09:03:48 MANAGEMENT: >STATE:1669622628,CONNECTED,SUCCESS,10.8.0.10,80.153.75.167,1194,10.24.207.56,52013
2022-11-28 09:03:54 Connection reset, restarting [-1]
2022-11-28 09:03:54 SIGUSR1[soft,connection-reset] received, process restarting
2022-11-28 09:03:54 MANAGEMENT: >STATE:1669622634,RECONNECTING,connection-reset,,,,,
2022-11-28 09:03:54 Restart pause, 5 second(s)
2022-11-28 09:03:59 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:59 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:59 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:03:59 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:03:59 TCP/UDP: Preserving recently used remote address: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:59 Socket Buffers: R=[65536->65536] S=[65536->65536]
2022-11-28 09:03:59 Attempting to establish TCP connection with [AF_INET]80.153.75.167:1194 [nonblock]
2022-11-28 09:03:59 MANAGEMENT: >STATE:1669622639,TCP_CONNECT,,,,,,
2022-11-28 09:03:59 TCP connection established with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:59 TCPv4_CLIENT link local: (not bound)
2022-11-28 09:03:59 TCPv4_CLIENT link remote: [AF_INET]80.153.75.167:1194
2022-11-28 09:03:59 MANAGEMENT: >STATE:1669622639,WAIT,,,,,,
2022-11-28 09:03:59 MANAGEMENT: >STATE:1669622639,AUTH,,,,,,
2022-11-28 09:03:59 TLS: Initial packet from [AF_INET]80.153.75.167:1194, sid=2e2f4e80 77229c19
2022-11-28 09:03:59 VERIFY OK: depth=1, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=Easy-RSA CA, emailAddress=mail@ctaas.de
2022-11-28 09:03:59 VERIFY KU OK
2022-11-28 09:03:59 Validating certificate extended key usage
2022-11-28 09:03:59 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2022-11-28 09:03:59 VERIFY EKU OK
2022-11-28 09:03:59 VERIFY X509NAME OK: C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:59 VERIFY OK: depth=0, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:03:59 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 8761 bit RSA, signature: RSA-SHA256
2022-11-28 09:03:59 [server] Peer Connection Initiated with [AF_INET]80.153.75.167:1194
2022-11-28 09:03:59 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.20.10,dhcp-option DNS 9.9.9.9,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9,peer-id 0,cipher AES-256-GCM'
2022-11-28 09:03:59 OPTIONS IMPORT: timers and/or timeouts modified
2022-11-28 09:03:59 OPTIONS IMPORT: --ifconfig/up options modified
2022-11-28 09:03:59 OPTIONS IMPORT: route options modified
2022-11-28 09:03:59 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2022-11-28 09:03:59 OPTIONS IMPORT: peer-id set
2022-11-28 09:03:59 OPTIONS IMPORT: adjusting link_mtu to 1626
2022-11-28 09:03:59 OPTIONS IMPORT: data channel crypto options modified
2022-11-28 09:03:59 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:59 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:03:59 Preserving previous TUN/TAP instance: OpenVPN TAP-Windows6
2022-11-28 09:03:59 Initialization Sequence Completed
2022-11-28 09:03:59 MANAGEMENT: >STATE:1669622639,CONNECTED,SUCCESS,10.8.0.10,80.153.75.167,1194,10.24.207.56,64757
2022-11-28 09:04:05 Connection reset, restarting [0]
2022-11-28 09:04:05 SIGUSR1[soft,connection-reset] received, process restarting
2022-11-28 09:04:05 MANAGEMENT: >STATE:1669622645,RECONNECTING,connection-reset,,,,,
2022-11-28 09:04:05 Restart pause, 5 second(s)
2022-11-28 09:04:10 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:04:10 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:04:10 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2022-11-28 09:04:10 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2022-11-28 09:04:10 TCP/UDP: Preserving recently used remote address: [AF_INET]80.153.75.167:1194
2022-11-28 09:04:10 Socket Buffers: R=[65536->65536] S=[65536->65536]
2022-11-28 09:04:10 Attempting to establish TCP connection with [AF_INET]80.153.75.167:1194 [nonblock]
2022-11-28 09:04:10 MANAGEMENT: >STATE:1669622650,TCP_CONNECT,,,,,,
2022-11-28 09:04:10 TCP connection established with [AF_INET]80.153.75.167:1194
2022-11-28 09:04:10 TCPv4_CLIENT link local: (not bound)
2022-11-28 09:04:10 TCPv4_CLIENT link remote: [AF_INET]80.153.75.167:1194
2022-11-28 09:04:10 MANAGEMENT: >STATE:1669622650,WAIT,,,,,,
2022-11-28 09:04:10 MANAGEMENT: >STATE:1669622650,AUTH,,,,,,
2022-11-28 09:04:10 TLS: Initial packet from [AF_INET]80.153.75.167:1194, sid=5a0019ad 7902d7d0
2022-11-28 09:04:10 VERIFY OK: depth=1, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=Easy-RSA CA, emailAddress=mail@ctaas.de
2022-11-28 09:04:10 VERIFY KU OK
2022-11-28 09:04:10 Validating certificate extended key usage
2022-11-28 09:04:10 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
2022-11-28 09:04:10 VERIFY EKU OK
2022-11-28 09:04:10 VERIFY X509NAME OK: C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:04:10 VERIFY OK: depth=0, C=DE, ST=TH, L=Kahla, O=Computertechnik, OU=IT-VPN, CN=server, emailAddress=mail@ctaas.de
2022-11-28 09:04:11 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 8761 bit RSA, signature: RSA-SHA256
2022-11-28 09:04:11 [server] Peer Connection Initiated with [AF_INET]80.153.75.167:1194
2022-11-28 09:04:11 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 192.168.20.10,dhcp-option DNS 9.9.9.9,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9,peer-id 0,cipher AES-256-GCM'
2022-11-28 09:04:11 OPTIONS IMPORT: timers and/or timeouts modified
2022-11-28 09:04:11 OPTIONS IMPORT: --ifconfig/up options modified
2022-11-28 09:04:11 OPTIONS IMPORT: route options modified
2022-11-28 09:04:11 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
2022-11-28 09:04:11 OPTIONS IMPORT: peer-id set
2022-11-28 09:04:11 OPTIONS IMPORT: adjusting link_mtu to 1626
2022-11-28 09:04:11 OPTIONS IMPORT: data channel crypto options modified
2022-11-28 09:04:11 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:04:11 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
2022-11-28 09:04:11 Preserving previous TUN/TAP instance: OpenVPN TAP-Windows6
2022-11-28 09:04:11 Initialization Sequence Completed
2022-11-28 09:04:11 MANAGEMENT: >STATE:1669622651,CONNECTED,SUCCESS,10.8.0.10,80.153.75.167,1194,10.24.207.56,64777
...
Wie man hier im Logfile gut erkennen kann, wurde die Verbindung circa alle 10 Sekunden neu aufgebaut.
Zwischenzeitlich kann man die Verbindung nur wenige ms/s nutzen, da die Verbindung ja ständig wieder getrennt wird.
Das Logfile wurde gekürzt. Das Logfile würde so wie die letzten Abschnitte sind immer wiederholt weiter gehen.
Die Lösung für das Problem ist relativ einfach:
Verwendet für unterschiedliche Geräte die gleichzeitig eine Verbindung benötigen immer einfach ein individuelles Zertifikat.
Dann gibt es keine Probleme.
Abschließende Hinweise:
IP-Adressen, E-Mailadressen, Namen u. ä. wurden für die Dokumentation geändert, hacken ist also zwecklos.
Die Nutzung der Anleitung erfolgt auf eigene Gefahr, für jegliche Schäden wird keine Garantie/Haftung übernommen.
Die Dokumentation entstand aus verschiedenen Tests, sowie produktiven Installationen und stellt eine Zusammenfassung wichtiger und empfohlener Schritte dar.
Bevor sie eventuell Fragen stellen bitte ich sie die Dokumentation komplett zu lesen.
Hinweise auf Fehler, Anregungen, Danksagungen oder ähnliches sind immer willkommen.
Alte Tutorial Versionen finden Sie archiviert hier:
OpenVPN tun/NAT : routing : Layer 3 : Protokollierung - gegeigent für Ubuntu 14.04/14.10 (veraltete Archiv-Version)
OpenVPN tap/NAT : bridging : Layer 2 : Protokollierung - gegeigent für Ubuntu 14.04/14.10 (veraltete Archiv-Version)
Was ist noch geplant?
Demnächst ist noch eine aktuelle bridging Variante geplant, da die alte Version nicht mehr unter den neuen Ubuntu/Debian Versionen funktioniert.
Weiterhin möchte ich demnächst noch die IPv6-Unterstützung und Debian spezifische Eigenheiten ergänzen.
Die Tests hierzu dauern aber noch an.
Design:
© ctaas.de, A. Schröder - Kahla, Impressum