В рамках небольшого проекта потребовалось настроить сетевую связанность между несколькими офисами. Самое простое и быстрое решение это OpenVPN сервер и несколько клиентов, так и поступим и в рамках этого проекта освежим в памяти как это настраивается и какие есть нюансы.
Базовая настройка OpenVPN сервера и клиента
Включаем маршрутизацию IPv4 на уровне ядра Linux
Текущее состояние режима маршрутизации.
# cat /proc/sys/net/ipv4/ip_forward
- 0 — маршрутизация отключена.
- 1 — маршрутизация включена.
Чтобы временно включить маршрутизацию (до перезагрузки):
# sysctl -w net.ipv4.ip_forward=1
Проверка:
# sysctl net.ipv4.ip_forward
# sysctl net.ipv6.conf.all.forwarding
Постоянное включение маршрутизации в файле /etc/sysctl.conf добавляем или раскоментируем строки.
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Применяем настройки.
# sysctl -p
Установка необходимых пакетов
# apt-get install easy-rsa
# apt-get install openvpn
Генерация RSA-ключей OpenVPN сервера и клиента
Настраиваем конфигурацию пакета easy-rsa
На хосте который будет выступать сервером пакет для генерации сертификатов скопируем из /usr/share/easy-rsa/ в /opt/easy-rsa/.
# mkdir /opt/easy-rsa
# cp -r /usr/share/easy-rsa/ /opt/
Копируем файл vars.example в vars.
# cp ./vars.example ./vars
Настраиваем параметры которые будут подставляться при генерации сертификатов:
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "NSK"
set_var EASYRSA_REQ_CITY "Novosibirsk"
set_var EASYRSA_REQ_ORG "Rain"
set_var EASYRSA_REQ_EMAIL "chernousov@interlan.xyz"
set_var EASYRSA_REQ_OU "IT"
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_CRL_DAYS 3650
Генерируем сертификаты и ключи сервера
# ./easyrsa init-pki
# ./easyrsa build-ca nopass
# ./easyrsa gen-dh
# ./easyrsa gen-req srv-prod-rain-02 nopass
# ./easyrsa sign-req server srv-prod-rain-02
# openvpn --genkey --secret pki/ta.key
Генерируем сертификаты и ключи клиентов
# ./easyrsa gen-req srv-prod-rain-01 nopass
# ./easyrsa sign-req client srv-prod-rain-01
или
# ./easyrsa build-client-full srv-prod-rain-01 nopass
Базовая конфигурация сервера
Базовая конфигурация сервера OpenVPN.
port 1194
proto udp
dev tap-ovpn
ca /opt/easy-rsa/pki/ca.crt
cert /opt/easy-rsa/pki/issued/srv-prod-rain-02.crt
key /opt/easy-rsa/pki/private/srv-prod-rain-02.key
dh /opt/easy-rsa/pki/dh.pem
server-bridge 10.134.80.1 255.255.255.0 10.134.80.2 10.134.80.254
ifconfig-pool-persist ipp.txt
client-to-client
tun-mtu 1400
keepalive 10 120
tls-auth /opt/easy-rsa/pki/ta.key
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
Выполняем тестовый запуск.
# openvpn --config ./rain-server.conf
Конфигурация клиента
client
dev tap-ovpn
proto udp
remote 45.155.204.127 1194
resolv-retry infinite
tun-mtu 1400
remote-cert-tls server
cipher AES-256-GCM
verb 3
persist-key
persist-tun
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
</key>
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
Настройка автозапуска сервера и клиента OpenVPN
Автозапуск клиента
# systemctl start openvpn-client@client-rain
# systemctl enable openvpn-client@client-rain
# systemctl status openvpn-client@client-rain
Автозапуск сервера
# systemctl start openvpn-server@rain-server
# systemctl enable openvpn-server@rain-server
# systemctl status openvpn-server@rain-server




