Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
openvpn [2014/03/10 18:16] metallic [Настройка сервера] |
openvpn [2022/03/25 17:00] (текущий) |
||
---|---|---|---|
Строка 63: | Строка 63: | ||
Перед тем как выполнять какие-либо действия с сертификатами нужно загрузить переменные среды: | Перед тем как выполнять какие-либо действия с сертификатами нужно загрузить переменные среды: | ||
- | . ./vars | + | |
Запустим скрипт очистки сертификатов, | Запустим скрипт очистки сертификатов, | ||
- | ./clean-all | + | |
В результате должы появиться следующие файлы: | В результате должы появиться следующие файлы: | ||
Строка 83: | Строка 83: | ||
Далее генерим сертификат сервера, | Далее генерим сертификат сервера, | ||
- | ./ | + | |
Дальше ключ DH(Diffie Hellman): | Дальше ключ DH(Diffie Hellman): | ||
- | ./build-dh | + | |
Также в качестве дополнительной защиты(HMAC-firewall) сгенерим еще один ключик: | Также в качестве дополнительной защиты(HMAC-firewall) сгенерим еще один ключик: | ||
Строка 98: | Строка 98: | ||
./build-key client2 | ./build-key client2 | ||
./build-key client3 | ./build-key client3 | ||
+ | |||
+ | <note tip> | ||
+ | При генерации клиентских ключей можно дополнительно защитить их паролем на случай их кражи или потери. Вместо скрипта build-key нужно использовать build-key-pass, | ||
+ | </ | ||
Конфигурационный файл сервера / | Конфигурационный файл сервера / | ||
Строка 146: | Строка 150: | ||
| | ||
# Настраиваем логирование, | # Настраиваем логирование, | ||
- | status / | + | status /var/log/openvpn/ |
- | log-append | + | log-append |
verb 3 | verb 3 | ||
| | ||
Строка 153: | Строка 157: | ||
management localhost 7505 | management localhost 7505 | ||
+ | Теперь создаем каталог для логов, запускаем сервер и проверяем, | ||
+ | |||
+ | # mkdir / | ||
+ | |||
+ | # / | ||
+ | [ ok ] Starting virtual private network daemon: server. | ||
+ | | ||
+ | # netstat -lnptu | grep 1194 | ||
+ | udp 0 0 7.7.7.7: | ||
+ | |||
+ | Чтобы лог-файл со временем не занял все место создадим такой файл / | ||
+ | |||
+ | / | ||
+ | daily | ||
+ | missingok | ||
+ | copytruncate | ||
+ | rotate 14 | ||
+ | compress | ||
+ | notifempty | ||
+ | } | ||
+ | |||
+ | И в заключении зададим клиенту client1 персональные настройки, | ||
+ | |||
+ | ifconfig-push 192.168.0.241 192.168.0.242 | ||
+ | push " | ||
+ | push "route 0.0.0.0 0.0.0.0" | ||
+ | |||
+ | Тут статически задан адрес клиента 192.168.0.241, | ||
+ | |||
+ | < | ||
+ | Адреса клиентов надо выбирать из этого пула: | ||
+ | |||
+ | [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18] | ||
+ | [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] | ||
+ | [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] | ||
+ | [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] | ||
+ | [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] | ||
+ | [101,102] [105,106] [109,110] [113,114] [117,118] | ||
+ | [121,122] [125,126] [129,130] [133,134] [137,138] | ||
+ | [141,142] [145,146] [149,150] [153,154] [157,158] | ||
+ | [161,162] [165,166] [169,170] [173,174] [177,178] | ||
+ | [181,182] [185,186] [189,190] [193,194] [197,198] | ||
+ | [201,202] [205,206] [209,210] [213,214] [217,218] | ||
+ | [221,222] [225,226] [229,230] [233,234] [237,238] | ||
+ | [241,242] [245,246] [249,250] [253,254] | ||
+ | </ | ||
===== Настройка клиента ===== | ===== Настройка клиента ===== | ||
+ | |||
+ | На стороне клиента также устанавливается OpenVPN. В данном случае в качестве клиента рассмотрим Windows. Устанавливаем OpenVPN с GUI и создаем каталог C:\Program Files\OpenVPN\config. В этом каталоге создаем подкаталог с именем клиента, | ||
+ | |||
+ | # Указываем что мы клиент, | ||
+ | # в этом случае клиент будет последовательно пытаться подключиться к серверам. | ||
+ | client | ||
+ | dev tun | ||
+ | proto udp | ||
+ | remote 7.7.7.7 1194 | ||
+ | nobind | ||
+ | # При указании этой дериктивы, | ||
+ | ; | ||
+ | | ||
+ | # Пытаться установить подключение бесконечно. Удобно на компьютерах с непостоянным доступом в интернет. | ||
+ | resolv-retry infinite | ||
+ | | ||
+ | # Аналогично, | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | | ||
+ | # Может понадобиться раскоментить, | ||
+ | ; | ||
+ | | ||
+ | # Посылать пинги каждые 10 сек. на протяжении минуты, | ||
+ | keepalive 10 60 | ||
+ | | ||
+ | # Пути к сертификатам и ключам относительно каталога config | ||
+ | ca " | ||
+ | cert " | ||
+ | key " | ||
+ | tls-auth " | ||
+ | | ||
+ | # Алгоритм шифрования данных | ||
+ | cipher AES-256-CBC | ||
+ | | ||
+ | # Включаем сжатие | ||
+ | comp-lzo | ||
+ | | ||
+ | # И уровень логирования | ||
+ | verb 3 | ||
+ | |||
+ | Теперь можно запустить GUI и попробовать подключиться. | ||
+ | |||
+ | ===== Отзыв сертификатов ===== | ||
+ | |||
+ | Иногда может случиться такая ситуация, | ||
+ | |||
+ | # . ./vars | ||
+ | | ||
+ | # ./ | ||
+ | Using configuration from / | ||
+ | Revoking Certificate 02. | ||
+ | Data Base Updated | ||
+ | Using configuration from / | ||
+ | client1.crt: | ||
+ | error 23 at 0 depth lookup: | ||
+ | |||
+ | Не смотря на то, что в последнем сообщении содержится "error 23", на самом деле это значит, | ||
+ | |||
+ | crl-verify / | ||
+ | |||
+ | И перезагрузить конфигурационный файл: | ||
+ | |||
+ | # / | ||
+ | |||
+ | С этого момента client1 подключиться не сможет. Если же он уже был подключен, | ||
+ | |||
+ | # telnet localhost 7505 | ||
+ | Trying 127.0.0.1... | ||
+ | Connected to localhost. | ||
+ | Escape character is ' | ||
+ | > | ||
+ | | ||
+ | kill client1 | ||
+ | SUCCESS: common name ' | ||
+ | | ||
+ | ===== Ссылки ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// |