Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

00-tech-book

.pdf
Скачиваний:
42
Добавлен:
10.02.2016
Размер:
7.86 Mб
Скачать

Файл конфигурации подразумевает, что в каталог /etc/openvpn/ клиента были закачены файлы ca.crt, client1.crt и client1.key с сервера. Как их можно безопасно перенести объяснялось выше.

На этом все, настройка OpenVPN-клиента закончена. Запускаем OpenVPN.

# service openvpn start

Пингуем наш VPN-сервер:

# ping 10.10.10.1

PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.

64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=4.97 ms 64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=3.96 ms 64 bytes from 10.10.10.1: icmp_seq=3 ttl=64 time=2.03 ms

--- 10.10.10.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 2.036/3.658/4.978/1.222 ms

Пингуем других VPN-клиентов если они у вас уже есть (у меня есть):

# ping 10.10.10.10

PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.

64 bytes from 10.10.10.10: icmp_seq=1 ttl=64 time=0.680 ms 64 bytes from 10.10.10.10: icmp_seq=2 ttl=64 time=0.994 ms

--- 10.10.10.10 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.680/0.837/0.994/0.157 ms

Проверяем, что весь наш трафик ходит через VPN-сервер:

# tracert www.ru

traceroute to www.ru (194.87.0.50), 30 hops max, 40 byte packets

 

 

 

 

 

1

10.10.10.1 (10.10.10.1) 0.769 ms 1.486 ms 40.849 ms

 

 

 

 

 

2

192.168.146.2 (192.168.146.2) 40.821 ms 40.791 ms

40.760 ms

 

 

 

 

3

www.ru (194.87.0.50) 40.721 ms 40.689 ms 40.659 ms

 

10.10.10.1 – VPN-сервер

192.168.146.2 – мой шлюз во внешние сети www.ru – пункт назначения для наших пакетов.

Как видим весь трафик проходит через наш VPN-сервер.

Модуль 16. OpenVPN.

 

241

 

 

 

 

 

Windows VPN-клиент

Скачиваем пакет OpenVPN для Windows + OpenVPN GUI (графический интерфейс) и устанавливаем его.

http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe

На этот клиент закачиваем его сертификат и ключ (client2.crt и client2.key) а также сертификат сервера – ca.crt. Все эти файлы я расположил в директории c:\vpn\

В директории C:\Program Files\OpenVPN\config\ создаем конфигурационный файл client.ovpn с таким содержанием:

client

dev tun proto tcp

remote 192.168.146.150 1194 resolv-retry infinite persist-key

persist-tun

ca c:\\vpn\\ca.crt

cert c:\\vpn\\client2.crt key c:\\vpn\\client2.key

comp-lzo verb 3

Внимание! В путях к файлам не опечатка, так и должно быть – по два

бекслеша.

Далее, в системном трее нажимаем правой клавишей мыши на иконку с изображением 2 компьютеров и выбираем пункт “Connect”. Windows-клиент должен подключиться к VPN-серверу и можно работать.

Посмотреть настройки сетевого интерфейса и маршрутов на Windowsмашине можно вот так:

Пуск -> Выполнить -> пишем команду ”cmd” нажимаем Enter ->

ipconfig /all – посмотреть сетевые интерфейсы

route print – посмотреть таблицу маршрутизации

Попингуйте VPN-сервер и сделайте трасировку (tracert) до www.ru

242

 

Модуль 16. OpenVPN.

 

 

 

Добавление клиентов

На сервере заходим в директорию /etc/openvpn/2.0/

# cd /etc/openvpn/2.0/

Генерируем ключ для client3 (имя может быть другим)

# build-key client3

Далее, ca.crt и client3.crt/client3.key переносим на компьютер client3 в директорию /etc/openvpn/ или другой если используем Windows.

Файл конфигурации как у клиентов выше в зависимости от ОС.

Таблица предназначения ключей и сертификатов

Для полноты ясности в таблице ниже приведен список всех файлов которые мы сгенерировали. Секретные файлы держите в дали от посторонних глаз.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файл

 

 

 

 

 

 

 

 

 

 

 

Где используется

 

 

 

 

 

Назначение

 

 

 

 

 

Секретность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сервер + клиенты

 

Root CA Certificate

 

ca.crt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ca.key

 

 

 

 

 

 

 

 

Сервер

Root CA Key

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dh1024.pem

 

 

Сервер

 

 

Diffie Hellman parameters

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сервер

 

 

Server Certificate

 

server.crt

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

server.key

 

 

 

 

 

 

Сервер

Server Key

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

client1.crt

 

 

 

 

 

Client1 Certificate

 

 

 

 

 

 

Клиент1

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

client1.key

Client1 key

 

 

 

 

Клиент1

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На все последующие файлы вида clientN.* распространяются такие же условия, что и на client1.*

Конфигурационный файл openvpn.conf на Linux VPN-сервере

Самые важные и популярные опции используемые в настройке VPNсервера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

local

 

 

 

 

Позволяет задать IP-адрес на котором нужно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

слушать входящие соединения. Если эта опция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в файле не определенна то принимаются

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соединения на всех интерфейсах;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Официальный порт OpenVPN – 1194 и менять его

port

 

 

 

 

 

 

 

не стоит;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

proto

 

Какой протокол использовать, я предпочитаю tcp;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Модуль 16. OpenVPN.

 

243

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dev

 

 

 

 

 

 

 

 

 

Устройство которое будем использовать. tun

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– создает маршрутизируемый IP-тунель, tap –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

создает ethernet (L2) тунель, который может

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

использоваться если

все клиенты в одной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подсети;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dev-node

 

 

 

 

 

 

 

В Windows нужно указать имя адаптера;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ca

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расположение SSL/TLS Root Certificate;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задает расположение сертификата сервера;

 

cert

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

key

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задает расположение ключа сервера;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dh

 

 

 

 

 

 

 

 

Задает расположение

Diffie Hellman parameters

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

файла;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

server

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задает VPN-сеть, VPN-сервер получит самый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

первый IP-адрес в этой сети;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ifconfig-pool-persist

Опция определяет файл в котором будут

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

храниться значения

client <->

VPN IP-адрес,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в случае перезагрузки VPN-сервера клиенты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

получат теже самые IP-адреса которые у них

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

были до этого;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

server-bridge

 

 

 

 

 

 

 

 

 

 

 

Конфигурирование

ethernet

бриджинга.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бриджинг позволяет на одном физическом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

интерфейсе объединить несколько виртуальных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TAP интерфейсов, по сути реализуя физический

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ethernet switch. При использование моста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

между двумя сетями, обе сети выглядят как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

одна большая, это позволяет программам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

широковещательной передачи данных работать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

через такой VPN-туннель;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

push “route ...”

 

 

 

 

 

 

 

 

 

Опцияпозволяетотправитьклиентуинформацию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о маршрутах. Маршрут помещается в таблицу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

маршрутизации клиента;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

client-config-dir ccd

 

 

 

 

 

 

 

Задает директорию с файлами сетевых настроек

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для клиентов. К примеру если мы захотим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

назначить клиенту client1 (Certificate Common

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Name = client1) фиксированный IP-адрес, делаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

следующее:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

openvpn.conf:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

client-config-dir ccd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

route 10.10.10.0 255.255.255.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ccd/client1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ifconfig-push 10.10.10.1 10.10.10.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

244

 

Модуль 16. OpenVPN.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

push «redirect-gateway”

 

 

 

 

 

 

Опция назначает шлюз по умолчанию для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клиентов. Старый маршрут будет удален. С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

опцией def1 (push «redirect-gateway def1”)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

старый маршрут будет просто заменен, без

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

удаления из таблицы маршрутизации. Если VPN-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сервер и клиенты в одной подсети то пригодится

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

опция local (push «redirect-gateway local def1»);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

push «dhcp-option DNS ...”

 

 

 

 

 

 

 

 

 

 

Назначение DNS-сервера клиентам;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

push «dhcp-option WINS ...”

 

 

 

 

 

 

 

 

 

Назначение WINS-сервера клиентам;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

client-to-client

 

 

 

 

 

 

 

Разрешать ли видить клиентам друг друга, по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

умолчанию они видят только сервер;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

duplicate-cn

 

 

 

 

 

 

 

 

Позволяет разрешить подключаться к VPN-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

серверу клиентам с одинаковыми ключами и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сертификатами. Рекомендуется чтобы у каждого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клиента была своя пара ключ/сертификат;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

keepalive 10 120

 

 

 

 

 

 

 

 

Пинговать противоположный конец

туннеля

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

каждые 10 секунд, при отсутствие встречных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пингов в течение 120 секунд считать соединение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потерянным и запускать пересоединение;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tls-auth

 

 

 

Для максимальной безопасности

можно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

воспользоваться функционалом SSL/TLS и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

создать «HMAC firewall» для борьбы с DOS-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

атаками и UDP port flooding. Для этого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

необходимо сгенерировать ключ, которые будет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на сервере и клиенте.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# openvpn --genkey --secret ta.key

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На сервере строчка в конфигурационном файле

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

должна быть такой:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tls-auth ta.key 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на клиенте:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tls-auth ta.key 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файл является секретным.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cipher

 

 

 

 

 

 

 

 

 

 

 

 

Позволяет задать криптографический шифр. По

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

умолчанию используется Blowfish и менять его

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

врядли вам захочется;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

comp-lzo

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Включение компрессии VPN линка.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

max-clients

 

 

 

 

 

 

 

 

 

 

Максимальное количество клиентов на VPN-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сервере одновременно;

 

 

 

 

 

 

 

user

 

 

 

 

 

 

 

 

 

Пользователь и группаот которыхбудет работать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

group

 

OpenVPN;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Модуль 16. OpenVPN.

 

245

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

persist-tun

 

 

 

 

 

 

 

 

Не закрывать

и переоткрывать TUN/TAP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

устройство или запускать/отключать скрипты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

через

 

 

 

 

 

сигнал или --p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SIGUSR1

 

ing-restart (на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

деле лучше использовать keepalive);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

persist-key

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Не перечитывать файлы ключей через

 

 

 

 

 

 

 

 

 

 

 

 

 

SIGUSR1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сигнал или --

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ping-restart;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этот файл будет сохраняться текущая

status

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

информация по статусу VPN-соединений и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обновляться каждую минуту (файл расположен

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в /etc/openvpn/);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

log

 

 

 

 

 

 

Расположение log-файла, при старте OpenVPN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

он будет очищаться от старых записей;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

log-append

 

 

 

 

 

 

Расположение log-файла, при старте OpenVPN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

он будет пополняться свежими записями;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

verb

Опция задает уровень журналирования в log-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

файл:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 – только фатальные ошибки;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 – разумно для общего использования;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 и 6 – позволяют обнаружить проблемы с

 

 

 

 

 

 

 

 

 

 

 

 

 

подключениями;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9 – максимальная отладочная информация;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mute

 

 

 

Ограничивает

журналирование однотипных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сообщений в log-файл, по умолчанию не более

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20 сообщений одной категории, остальные будут

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отбрасываться;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конфигурационный файл client.conf на Linux-клиентах

Опции которые можно встретить в настройках клиента. Некоторые являются

обязательными.

 

client

 

 

 

 

 

 

 

 

Сообщает о том, что данная машина является VPN-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клиентом

 

 

 

 

 

 

 

 

remote

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задает IP-адрес VPN-сервера и порт подключения. Серверов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

может быть указано много;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

remote-random

 

 

 

 

 

Позволяет случайным образом выбрать сервер для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подключения определенный в опции remote. Это

сделано

 

 

 

 

 

 

 

 

 

 

для распределения нагрузки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

resolv-retry infinite

 

 

Постоянно резолвить hostname VPN-сервера, это полезно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на клиентах подключенных к сети на непостоянной основе

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таких как ноутбуки;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

246

 

Модуль 16. OpenVPN.

 

 

 

 

nobind

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Использовать динамический порт на клиенте, актуально

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

только для UDP, так как при использование TCP порт всегда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

динамический;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http-proxy

Позволяет задать http-proxy для подключения кVPN-серверу;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mute-replay-warnings

 

 

 

 

Беспроводные сети очень много дублируют пакеты, опция

 

 

 

 

 

 

 

 

 

 

 

 

позволит ограничить это;

 

 

 

 

 

 

 

ns-cert-type

 

 

 

 

 

 

 

 

Опция для увеличения безопасности, она позволяет гаран-

 

 

 

 

 

 

 

 

 

 

 

 

 

тировать что сервер, к которому происходит подключение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

действительно им является. Для этого будет проверено поле

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nsCertType, которое должно содержать значение “server”;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конфигурационный файл client.ovpn на Windows-клиенте

Почти тоже самое что и на Linux-клиентах. Не будет user/group опций и пути к файлам с учетом файловой системы Windows.

Также, для того чтобы OpenVPN-клиент заработал в Windows Vista в конфигурационный файл клиента нужно добавить следующее:

route-method exe route-delay 2

В процессе настройки не забывайте, что если вы используете firewall то OpenVPN необходимо в нем разрешить. Делается это примерно вот так:

#Allow TUN interface connections to OpenVPN server iptables -A INPUT -i tun+ -j ACCEPT

#Allow TUN interface connections to be forwarded through other interfaces iptables -A FORWARD -i tun+ -j ACCEPT

#Allow TAP interface connections to OpenVPN server

iptables -A INPUT -i tap+ -j ACCEPT

# Allow TAP interface connections to be forwarded through other interfaces iptables -A FORWARD -i tap+ -j ACCEPT

Резюме

Мы установили и настроилиVPN-сервер и несколькоVPN-клиентов. Клиент может использовать ОС Linux или Windows, мы знаем как производить настройку

на обеих ОС. Весь трафик клиентов проходит через VPN-сервер, благодаря заданию опции redirect-gateway и назначению маршрута по умолчанию.

Домашнее задание

Развернуть три виртуальные машины – VPN-сервер и два клиента, Linuxклиент и Windows-клиент. Произвести настройку виртуальных машин в

соответствие с руководством в этом модуле. Убедиться, что все работает.

Модуль 16. OpenVPN.

 

247

 

 

 

Отказоустойчивый кластер

Кластер – это группа компьютеров объединенных в одну систему для выполнения совместных вычислений.

Есть три вида кластеров:

1. Отказоустойчивые кластеры (HA, High-availability clusters) – задача таких кластеров обеспечивать бесприбойность работы сервисов, которые он обслуживает.Приреализациитакогокластеранеобходимозадействовать не менее двух серверов, каждая нода дублирует другую и в случае ее выхода из строя сразу же берет работу на себя и обслуживает запросы;

2. Высокопроизводительные кластеры (HPC, High-performance clusters)

– задача таких кластеров увеличивать скорость вычисления. Все вычисления разбиваются на параллельно выполняющиеся потоки. Программное обеспечение должно поддерживать работу в таком

режиме;

3.Кластеры с распределением нагрузки (LB, Load balancing clusters) – принцип работы таких кластеров заключается в распределение нагрузки. Входящие запросы проходят через первичный узел (Director) который занимается распределением нагрузки между вычислительными нодами.

В этом модуле мы сделаем отказоустойчивый кластер состоящий из двух нод и запустим на нем веб-сервер Apache. Программное обеспечение которое нам понадобится – это DRBD, для зеркалирования разделов между двумя нодами, ведь при выходе одной ноды из строя вторая должна сразу включиться в работу и начать обслуживать запросы. А значит на ней всегда должна быть актуальная версия контента, в этом как раз DRBD нам и поможет, он работает по принципу RAID 1, при записи данных на основной ноде, они сразу же будут записаны и на вторую. Вторая программа – Heartbeat, она занимается интеллектуальной работой, следит за состоянием нод и принимает решения. Подробнее об этих программах ниже.

Принцип работы нашего кластера

Принцип работы отказоустойчивого кластера можно разбить на три этапа.

1. На постоянной основе происходит репликация данных с первичной ноды на вторичную, в этом нам помогает DRBD. Таким образом в любой момент времени контент приложений, на первичной ноде и вторичной полностью идентичен;

2.Для предоставления сервиса используется специально для этого выделенный IP-адрес, shared IP-адрес. Средствами Heartbeat он прописывается как алиас на первичной ноде;

248

 

Модуль 17. Отказоустойчивый кластер.

 

 

 

3.Вслучаевыходаизстрояпервичнойноды,вторичнаянодапереключается в режим первичной и назначает себе shared IP. С этого момента все запросы обслуживает вторичная нода (теперь став первичной). Конечный пользователь не заметит изменений в работе сервиса, так как переключение происходит достаточно быстро + контент является

полностью актуальным.

DRBD

DRBD (Distributed Replicated Block Device) – распределенное и синхронизированное блочное устройство, это программное обеспечение для зеркалирования контента блочных устройств (HDD, partitions, logical volumes...). По своей работе, DRBD очень похож на RAID1, данные на разных нодах также реплицируются в режиме реального времени. В свою очередь для приложений DRBD полностью прозрачен и они даже не догадываются о том, что фактически их данные хранятся на нескольких серверах. Запись данных на носитель может происходит двумя способами – синхронный, когда записывающее приложение уведомляется о том, что запись завершена только после того как данные будут записаны на все ноды, и асинхронный

– это когда записывающее приложение уведомляется сразу после записи на локальном носителе, не дожидаясь аналогичных действий на peer-системе.

Место DRBD в стеке ввода/вывода Linux

Модуль 17. Отказоустойчивый кластер.

 

249

 

 

 

Программы входящие в состав пакета DRBD

drbdadm Основная программа администрирования DRBD, все параметры она получает из конфигурационного файла /etc/drbd.conf. drbdadm выступает в качестве фронтенда для такие программ как drbdsetup и drbdmeta;

drbdsetup Программа конфигурирования модуля DRBD, параметры задаются из командной строки что делает программу гибкой, но повышает ложность для новичков, используется редко

drbdmeta Программа позволяет создавать, резервировать и восстанавливать DRBD meta data structures, используется редко.

Для описания устройства хранения (storage) используется понятие ресурса, которое описывает все его аспекты, такие как:

Имя ресурса – имя не должно содержать пробелы, в последствие мы будет использовать это имя чтобы ссылаться на какое либо устройство.

DRBD устройство – это виртуальное блочное устройство управляемое DRDB. Ассоциированное блочное устройство всегда именуется как /dev/drbdm, где m – младший номер устройства, который начинается с 0. Старший номер устройства равняется 147.

Disk configuration – физический диск или раздел содержащий данные.

Network configuration – IP-адрес и порт дублирующей ноды.

В DRBD каждый ресурс играет свою роль, - первичную (primary) или вторичную (secondary). В случае если DRBD устройство является primary, оно может читать и записывать данные без ограничений, создавать и монтировать файловые системы и т.д.

Если DRBD устройство является secondary то оно получает все обновления данных с primary (любые добавления, изменения или удаления данных) но не дает прямой доступ к устройству. То есть приложения не смогут читать и писать данные на устройство. Роль ресурса может изменяться вручную или автоматически.

DRBD поддерживает три режима репликации.

Protocol A. Протокол асинхронной репликации, данные на primary node считаются полностью записанными тогда, когда запись завершается на локальном носители и пакет отправлен в TCP буфер отправки. Этот режим может повлечь за собой потерю данных, если сбой произойдет раньше чем данные будут продублированы на вторичной ноде.

Protocol B. Протокол полусинхронной репликации (Memory synchronous),

250

 

Модуль 17. Отказоустойчивый кластер.