VPN (Virtual Private Network) — технология, позволяющая обеспечить соединение поверх другой сети. Рассмотрим пример достаточно традиционный в нашем мире. Есть роутер, скажем, Asus-RT56U (прошивка Падаван) он имеет выделенный ( белый) IP- это сервер. И есть Asus RT-AC68C1 ( прошивка ddwrt) он не имеет выделенного (серый) IP и установлен за городом у жадного деревенского провайдера. Если у Вас возникнет необходимость, скажем в загородном доме установить видеонаблюдение, то без создания канала VPN никак не обойтись.
Назначение файлов для VPN:
Имя файла | Нужен | Назначение | Секретность |
---|---|---|---|
ca.crt сервер и клиенты | Root | CA серт. | Нет |
ca.key ключ подписи | Root | CA ключ | Да |
server.crt | сервер | Сертификат | Нет |
server.key | сервер | Ключ | Да |
client1.crt | клиент1 | Сертификат | Нет |
client1.key | клиент1 | Ключ | Да |
dh.pem | сервер | Diffie Hellman | Нет |
ta.key | сервер и клиенты | tls-auth | Да |
Установка сертификатов на сервер
Общий алгоритм
- Создать CA сертификат и личный ключ
- Создать серверный личный ключ и сертификат, подписанный CA
- Создать ключ Diffie–Hellman
- По желанию создать TLS ключ
Далее войти по SSL в роутер и
cd /etc/storage/openvpn/server
Создать CA сертификат и личный ключ
openssl req -nodes -x509 -days 3650 -newkey rsa:2048 -outform PEM -out ca.crt -keyout ca.key -sha1 -subj '/CN=OpenVPN CA'
где –days это количество дней действия сертификата.
Содержимое сертификата можно посмотреть
openssl x509 -text -noout -in ca.crt
Далее необходимо засекретить личный ключ
chmod 600 ca.key
Если есть желание засекретить личный ключ это можно сделать так
openssl rsa -aes256 -in ca.key -out ca.key.aes
mv ca.key.aes ca.key
chmod 600 ca.key
Пароль может быть от 4 до 1024 символов.
Создание серверного сертификата
openssl req -nodes -days 365 -newkey rsa:2048 -outform PEM -out server.csr -keyout server.key -sha1 -subj '/CN=test.com'
Далее создаем новый личный ключ (server.key) и подпись (server.csr), на 365 дней.
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -clrext -out server.crt -sha1
И далее
rm -f server.csr
chmod 600 server.key
Создаем ключ Diffie-Hellman
openssl dhparam -out dh1024.pem 1024
Это достаточно длительная процедура.
По желанию создаем TLS ключ
openvpn --genkey --secret ta.key
chmod 600 ta.key
После этого сохраняем все во флеш памяти роутера.
mtd_storage.sh save
На этом сервер настроен и на закладке web интерфейса должно быть приблизительно следующее
Установка сертификата клиента
После того как сервер настроен можно создать в меню VPN сервер – > Учетные записи клиентов клиента, указав ему статический IP туннеля и скачать конфигурацию клиента Экспорт client.ovpn. Следует заметить что скачивание доступно только из локальной сети из внешней нет из позиций безопасности. Данный файл выглядит приблизительно так
client
dev tun
proto udp
remote 1.1.1.1 1194
resolv-retry infinite
nobind -> в Additional Config
persist-key -> в Additional Config
persist-tun -> в Additional Config
auth SHA1
cipher BF-CBC
comp-lzo adaptive
nice 0 -> в Additional Config
verb 3 -> в Additional Config
mute 10 -> в Additional Config
;ns-cert-type server
<ca> занести в 1 поле ключей без тега <ca>
-----BEGIN CERTIFICATE-----
TiBDQYIJAPVnUmpseCtFMA0GCSqGSIb3DQEBBQUAA4GBACfNbzN7Rb1IIAFbjw56
LX7eB5LTjZBxMASpMqFlGzvVtJWfKEbzh3u8oPtUjpwhNNUVPsXMwxPy7NqUp0qn
r2xTxaydeXvc/Qo3TonsauplEI0hiTthOJBZtu5UgM7tqFPq9PWVy/aKzKSdNVvL
wdqgInrFzAd3gllAIIrzkukd
-----END CERTIFICATE-----
</ca>
<cert> занести в 2поле ключей без тега <cert
-----BEGIN CERTIFICATE-----
MIIByDCCATGgAwIBAgIJAIiFUpfCD0K1MA0GCSqGSIb3DQEBBQUAMBUxEzARBgNV
ooGht0p2ziaSdnagAgTn6pvjMT9ow+SE44Q0X38VFTX+ctltr/xlcCSQaIC10QXa
lKtd5vsHt5cd5iQW9qsmTqTx2Cxatr1uyD99I6iTmmCgtI979LLNNowWtWOHrO0e
VFhGgZphOmUOcupuXEZNnjrNRpuB5lrGLYDi0Q==
-----END CERTIFICATE-----
</cert>
<key> занести в 3поле ключей без тега <key>
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMT6AJ27hd9uM9XJ
0r9HMYFXqPRWdkV3LVB8SCqPJ38enCI3OxQNgvlZCz7Y5r99ikgscIHSbtz+QtEl
j6cjLJUMHSGUzyo90O6TNHA3Gcph/bPHS0JLp5xCgEFYjJLrKfHXEj0qLZq5HCgB
Ec8PKZ3a8MN2k9vFRL4RZoU+fKFzAkAZlWDBGVVRMML6nJM0EmuKk/z4b5pM0vC7
Z+EEGf1SJrYRKa7Jz1h+yGq+2MFKTEpWDRdkP5N7WLfla6vhEkAhAkEAycsP9ES+
FyN09X6RRjyE5QMXarcyhDQ7y/ybTh6rBuBXmygzp0Oc1MqSAY7Nif8GGc6nnsca
6agwCELmveXYFw==
-----END PRIVATE KEY-----
</key>
В ddwrt на роутере клиента нужно заполнить соответствующие поля как показано на рисунках
Далее нажать кнопку Применить ( Apply Settings) и в Status -> OpenVPN должно быть приблизительно следующее
Если есть ошибки нужно все перепроверить. Адресация локальных сетей сервера и клиента в данном случай должна иметь разные подсети, например сервер 192.168.0.0/24, а клиент 192.168.1.0/24.