OpenVPN сервер на маршрутизаторах D-Link серии DSR
Ранее, на страницах блога, я рассказывал о настройке OpenVPN сервера на базе FreeBSD. Однако, существуют и аппаратные решения для реализации подобного шифрованного канала связи. Мне известны два таких решения - Microtik c их RouterOS и маршрутизаторы D-Link серии DSR. О последних сегодня и пойдет речь.
За основу взята вот эта статья http://www.dlink.ua/dsr_openvpn_settings с небольшими дополнениями уже от меня.
Последняя стабильная прошивка DSR-500N_A1_FW1.08B88_WW для DSR-500N ревизии A1 (прошивки других моделей маршрутизаторов можете найти самостоятельно на том же ftp)
1. Установка дистрибутива OpenVPN и создание сетевого моста
Загружаем OpenVPN http://openvpn.net/index.php/open-source/downloads.html
Устанавливаем приложение (все опции оставляем по умолчанию). При появлении запроса на установку TAP адаптера, соглашаемся.
2. Создание SSL сертификатов
OpenVPN использует SSL сертификаты для взаимной аутентификации узлов:
- Корневой сертификат - Certificate Authority
- Сертификат сервера - Server
- Сертификат клиента - Client
Выполним некоторые предварительные действия для дальнейшей генерации сертификатов. Запускаем командную строку (желательно от имени администратора), переходим в папку C:\program files\OpenVPN\easy-rsa\ где выполняем init-config.bat:
Заменяем переменные в файле vars.bat (C:\program files\OpenVPN\easy-rsa\vars.bat) примерно так:
set KEY_COUNTRY=RU set KEY_PROVINCE=NN set KEY_CITY=NNovgorod set KEY_ORG=OOO_Roga&Kopyta set KEY_EMAIL=mail@rogakopyta.ru set KEY_CN=changeme set KEY_NAME=changeme set KEY_OU=changeme set PKCS11_MODULE_PATH=changeme set PKCS11_PIN=1234
Эти переменные будут использоваться при генерации сертификатов. Последовательно выполняем скрипты vars.bat и clean-all.bat (вообще, кому интересно, процедура создания сертификатов описана в файле Readme.txt в папке C:\program files\OpenVPN\easy-rsa\)
C:\Program Files\OpenVPN\easy-rsa>vars.bat C:\Program Files\OpenVPN\easy-rsa>clean-all.bat Скопировано файлов: 1. Скопировано файлов: 1. C:\Program Files\OpenVPN\easy-rsa>
Создаем корневой сертификат CA командой build-ca (сохраняется в папку c:\Program Files\OpenVPN\easy-rsa\keys\). На все вопросы отвечаем нажатием клавиши Enter:
Создаем dh-key командой build-dh:
Теперь генерируем ключ сервера, который подписывается нашим корневым сертификатом CA. Введите build-key-server server. На вопросы о подписании сертификата и на загрузке его в базу сертификатов отвечаем “Y”.
Аналогично генерируем сертификат клиента командой build-key client.
Создаем TLS Authentication Key командой openvpn --genkey --secret ta.key:
C:\Program Files\OpenVPN\easy-rsa\keys>openvpn --genkey --secret ta.key
После этого в папке keys должны присутствовать все необходимые сертификаты.
3. Настройка маршрутизатора DSR
В адресной строке браузера набираем: https://192.168.10.1 (имя пользователя и пароль по умолчанию admin/admin)
Переходим в раздел Setup / VPN Settings / OpenVPN / OpenVPN Authentication
В каждом разделе выбираем соответствующий сертификат и загружаем кнопкой Upload:
- Trusted Certificate (CA Certificate) ca.crt
- Server / Client Certificate server.crt
- Server / Client Key server.key
- DH Key dh1024.pem
- Tls Authentication Key ta.key
Переходим в раздел Setup / VPN Settings / OpenVPN / OpenVPN Configuration
Ставим галочку Enable Openvpn и выбираем режим Server.
Поля Vpn Network / Vpn Netmask – определяют сеть, используемую для VPN (оставляем как есть по умолчанию).
Поле Port определяет на каком порту наш VPN-сервер будет принимать соединения (рекомендую использовать стандартный 1194).
Определяем алгоритм шифрования AES-128, Hash Algorithm – SHA-1. Если будете использовать другие, не забудьте внести изменения в файл настройки клиента client.ovpn.
Tunnel Type рекомендуется установить в режим Split Tunnel. Как написано в мануале на сайте dlink.ua, в режиме Full Tunnel в VPN будет маршрутизироваться только сеть 0.0.0.0/1 и Vpn_Network/Vpn_Netmask. Видимо прошивка еще требует доработки.
Опция Enable Client to Client Communication включается в том случае, если предполагается обмен данными между «клиентами».
Отмечаем галочкой используемые сертификаты.
Enable TLS Authentication Key нужно установить для шифрование сертификатов, в противном случае сертификаты будут передаваться в открытом виде.
Переходим в раздел Setup / VPN Settings / OpenVPN / OpenVPN Local Networks (Split Tunneling) и нажимаем кнопку Add
Добавляем нашу локальную сеть (или сети, если их несколько). Эти сети будут автоматически добавлены клиенту в таблицу маршрутизации с направлением в туннель.
4. Настройка «клиента»
Про настройку openvpn клиента в windows и mac я уже писал ранее. Кратко продублирую информацию здесь, изменения только в интерфейсе, вместо tap используется tun. Создаем файл client.ovpn следующего содержания (###.###.###.### заменяете на свой внешний ip):
client dev tun proto udp remote ###.###.###.### 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key ns-cert-type server cipher AES-128-CBC auth SHA1 verb 3
В каталог C:\Program Files\OpenVPN\config копируем файлы ca.crt, client.crt, client.key, dh1024.pem и ta.key (если используется TLS). Настройка закончена, можно проверять.
Кликаем правой кнопкой мыши по значку OpenVPN и выбираем Соединиться (Connect). Откроется диагностическое окно поднятия туннеля. В случае успешного соединения с сервером окно закроется, а значок OpenVPN «позеленеет».
Не отображаются введенные сертификаты и ключи, нет возможности посмотреть установлены они или нет.
К сожалению пока не нашел ответа на вопрос как можно отзывать клиентские сертификаты с маршрутизатора.
И еще была досадная неприятность - однажды пришлось заново прописать все сертификаты, так как маршрутизатор напрочь отказывался принимать соединения. Причину такого поведения установить не удалось. Впрочем, это наблюдалось всего один раз за всё полугодовое использование DSR-500.
Комментариев: 2
Всё еще на закрыт вопрос: "Как отозвать пользовательский сертификат?" Или уже решили данную проблему?
К сожалению, после очередного внезапного отключения электричества маршрутизатор перестал принимать openVPN-соединения. Перпрошивка не помогла, гарантия кончилась.
В общем сделал классически на FreeBSD - так оно стабильнее http://mdex-nn.ru/page/usb-flash-freebsd-osx.html