Твой тайный туннель. Детальный гайд по настройке OpenVPN и stunnel для создания защищенного канала – «Хакер»
Содержание статьи
У тебя могут быть самые разные мотивы, чтобы пользоваться VPN: недоверенные сети, разного рода ограничения или просто разумное желание не распространять лишний раз свои данные. В этой статье я расскажу, как сделать себе личный VPN на арендованном сервере и настроить OpenVPN и stunnel таким образом, чтобы даже глубокая инспекция пакетов ничего не давала.
Существует бесчисленное множество сервисов, которые предоставляют VPN, в том числе и бесплатные. Вот несколько причин, почему бесплатный VPN — это плохая идея.
- Качество. Те, кто пользовался бесплатным VPN, знают, что в большинстве случаев сервис просто ужасен: низкая скорость, постоянные обрывы. Это и неудивительно, ведь, кроме тебя, им одновременно может пользоваться еще пара сотен человек.
- Безопасность. Даже если качество более-менее сносное, ты не знаешь, что на самом деле происходит с твоим трафиком. Хранится и анализируется ли он, кто и в каких целях оперирует сервисом. Бесплатный сыр, как говорится…
- Малое количество или полное отсутствие опций и настроек: нет возможности выбрать шифр, протокол и порт. Остается только пользоваться тем, что дали.
С платными сервисами дела обстоят лучше: можно ожидать какого-то гарантированного качества и наличия настроек. Но ты все еще не можешь знать наверняка, хранятся твои логи непосредственно на сервере или нет. К тому же твоего провайдера могут заблокировать.
Великий китайский файрвол, к примеру, научили определять и блокировать трафик OpenVPN при помощи техники Deep packet inspection (DPI). На какой бы порт ты его ни прятал, будь то UDP 53 или TCP 443, в Китае просто так OpenVPN не попользуешься. Дело в том, что в режиме TLS трафик OpenVPN отличается от обычного трафика HTTPS. Если под рукой есть сниффер, в этом несложно убедиться.
TLS-трафик OpenVPN
А вот как выглядит обычный HTTPS.
Трафик HTTPS
Некоторые популярные платные VPN предоставляют средства обхода DPI, но чем больше популярность, тем больше шанс, что провайдер узнает о сервисе и сможет полностью заблокировать доступ к нему. От полной блокировки не защищен никто, но, когда используешь публичный сервис, шанс всегда выше.
OpenVPN использует два канала: канал управления (control channel) и канал данных (data channel). В первом случае задействуется TLS — с его помощью ведется аутентификация и обмен ключами для симметричного шифрования. Эти ключи используются в канале данных, где и происходит само шифрование трафика.
Существуют скрипты, которые автоматизируют установку, и процесс занимает меньше времени. Но, во-первых, эти скрипты подходят только для конкретных дистрибутивов, а во-вторых, они не предоставляют выбора.
Например, используют RSA и AES-CBC, когда есть поддержка ECDSA и AES-GCM.
Таким образом, без знания и понимания того, как это работает, ты не сможешь подправить скрипт, чтобы он исполнялся на других системах или делал то, что ты хочешь.
Stunnel — это утилита для обеспечения защищенного соединения между клиентом и сервером посредством TLS для программ, которые сами шифровать трафик не умеют.
Например, можно туннелировать трафик для netcat, vnc и даже bash.
В нашем случае stunnel будет использоваться для маскировки трафика OpenVPN под «чистый» TLS, чтобы его было невозможно определить посредством DPI и, следовательно, заблокировать.
Трафик, туннелируемый через stunnel, ничем не отличается от обычного HTTPS
С учетом того что OpenVPN использует шифрование для своего канала данных, у нас есть два варианта настройки:
- использовать шифрование stunnel плюс шифрование канала данных OpenVPN;
- использовать шифрование stunnel, а шифрование канала данных OpenVPN отключить.
Таким образом, в первом варианте получается два слоя: один от stunnel, второй от OpenVPN. Этот вариант позволит использовать RSA вместе с ECDSA. Недостаток в том, что тратится больше ресурсов, и второй вариант позволит этого избежать. В любом случае настройка stunnel остается неизменной.
Первым делом нужно выбрать провайдера, который нам предоставит виртуальный выделенный сервер (VPS). Что выбирать — дело каждого и зависит от страны и от того, сколько ты готов платить. Главная рекомендация — выбирай страну, наиболее близкую по географическому расположению, это сведет задержку к минимуму. Но, конечно, живя в Китае, покупать сервис в Индии или Пакистане смысла мало.
Я буду использовать RHEL 7.4. Для точного копирования команд из статьи годится и CentOS 7 (1708), так как это бесплатная и почти идентичная копия RHEL, основанная на его коде. Возможно, подойдут другие дистрибутивы, а также производные RHEL (Fedora), но пути конфигурационных файлов и версии программ могут отличаться.
После покупки сервера и установки системы нам нужно попасть на сервер. Я буду делать это с помощью SSH. Вся конфигурация будет проходить в два этапа: настройка на сервере (включает в себя первичную настройку) и настройка клиентов.
После покупки, скорее всего, тебе дадут доступ по SSH с логином root и паролем. Позже лучше создать обычного пользователя, а рутовые команды выполнять после sudo -i. Нужно это в том числе для защиты от брутфорса — пользователь root общеизвестный, и при попытках брута, вероятней всего, будет использоваться именно он.
Для начала нам понадобится подключить репозиторий EPEL — пакет openvpn лежит именно там.
$ yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum update -y
На RHEL, CentOS, Fedora, OpenSUSE и, возможно, других установлен и включен по умолчанию SELinux. Проверить это можно командой getenforce или sestatus.
Чтобы не нырять в дебри его настроек и спастись от возможной головной боли, мы переведем его в режим permissive. В этом режиме он будет оповещать нас о нарушениях политик безопасности, но предпринимать никаких действий не станет.
Таким образом, у тебя всегда будет возможность его поизучать. Для этого нужно изменить следующую директиву в файле /etc/selinux/config:
SELINUX=permissive
Перезагружаемся и ставим необходимые пакеты:
$ yum install -y iptables-services openvpn unzip
- iptables-services — файлы .service для управления утилитой iptables;
- openvpn — сам сервер OpenVPN;
- зачем нужен unzip, попробуй догадаться сам. Источник: https://xakep.ru/2017/12/08/openvpn-stunnel-guide/
Организация VPN каналов между офисами при помощи OpenVPN
Организация VPN каналов между филиалами компании имеет большое значение в работе любого IT-специалиста. В данной статье рассматривается один из способов реализации этой задачи на основе программного продукта OpenVPN.Ниже мы рассмотрим топологию сети, в которой будем организовывать VPN-туннель, разберем особенности конфигурирования программы OpenVPN и пошагово настроим маршрутизацию для наших офисов. Статья написана из расчета, что OpenVPN будет устанавливаться на платформы Windows 7 и Windows Server 2008.
Топология сети
Использованная нами сетевая топология стандартна. Имеется Сеть Центрального Офиса (назовем её СЦО) и Сеть Филиала (назовем её СФ). Стоит задача соединить офисы таким образом, чтобы конечный пользовательский компьютер (далее ПК1) офиса СЦО имел доступ к общим ресурсам пользовательского компьютера (далее ПК2) СФ.
CЦО имеет в своем составе:
- Интернет-шлюз (назовем его ИШ1) с двумя сетевыми интерфейсами:
- 111.111.111.111 – выдаётся провайдером, смотрит в интернет.
- 192.168.0.1 – назначается нами, смотрит в СЦО.
- OpenVPN Сервер (далее ОС) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
- 10.8.0.1 – адрес виртуального интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса назначается программой. Мы с вами не должны менять адрес самостоятельно из управления сетевыми адаптерами.
- 192.168.0.2 – физический интерфейс, параметры задаются нами, смотрит в СЦО.
- ПК1 – пользовательский компьютер 1, с сетевым интерфейсом 192.
168.0.3, смотрит аналогично в СЦО.
Сф имеет в своем составе:
- Интернет-шлюз (далее ИШ2) с двумя сетевыми интерфейсами:
- 222.222.222.222 – выдаётся провайдером, смотрит в интернет.
- 192.168.1.2 – назначается нами, смотрит в СФ.
- OpenVPN Клиент (далее ОК) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
- 10.8.0.2 – адрес виртуального сетевого интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса так же назначается программой OpenVPN.
- 192.168.1.2 – физический интерфейс, параметры задаются нами, смотрит в СФ.
- ПК2 – пользовательский компьютер 2, с сетевым интерфейсом 192.168.1.
3, смотрит в СФ.
Настраиваем OpenVPN сервер
Теперь перейдем к самой программе, основам и особенностям её конфигурирования. OpenVPN доступен в вариантах для Linux и Windows. Вы можете скачать установочный пакет на сайте разработчика.
Сам процесс инсталлирования не вызовет никаких проблем. Единственное, стоит отключить антивирус на время установки, дабы избежать дополнительных проблем. На момент написания статьи, к примеру, продукты Лаборатории Касперского не блокировали установку, а лишь выводили подозрение на некоторые устанавливаемые компоненты.
В процессе установки в систему инсталлируется виртуальный сетевой адаптер TAP-Win32 Adapter V9 и, соответственно, драйвер к нему. Этому интерфейсу программа OpenVPN как раз и будет назначать ip адрес и маску виртуальной сети OpenVPN. В нашем случае ему назначен адрес 10.8.0.1 с маской 255.255.255.0 на сервере ОС и 10.8.0.2 с аналогичной маской на клиенте ОК.
По стандарту программа устанавливается в C:ProgramFilesOpenVPN. В этой директории следует сразу же создать дополнительно папку keys (здесь мы будем хранить ключи аутентификации) папку ccd (здесь будут находится конфиги настроек сервера для клиента).
В директории C:ProgramFilesOpenVPNsample-config представлены стандартные конфиги. Конфиги, которые мы будем создавать, должны размещаться в директории C:Program FilesOpenVPNconfig.
Настройка OpenVPN начинается с генерации ключей. Генерируемые ключи делятся на:
- главный CertificateAuthority (CA) сертификат и ключ, используемый для подписывания каждого сертификата сервера и клиента.
- публичный и приватный ключи для сервера и каждого (это важно) клиента отдельно.
Последовательность создания ключей следующая (названия файлов сертификатов и ключей указаны в скобках):
- Генерируем основной CA (ca.crt) сертификат и CA (ca.key) ключ.
- Генерируем сертификат (server.crt) и ключ (server.key) сервера.
- Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.
- Генерация параметров DiffieHellman (dh1024.pem).
- Генерация ключа tls-auth (ta.key) для аутентификации пакетов.
Разберем каждый пункт более подробно.
Генерируем основной сертификат СА и СА ключ:
Заходим в Пуск – Выполнить набираем cmd, жмем OK, заходим в командную строку. Пишем:
cd C:/Program Files/OpenVPN/easy-rsa
Таким образом мы находимся в директории easy-rsa:
Во время выполнения всех пунктов генерации ключей вы должны находиться именно в ней. Выполняем команду:
init-config
Не закрывая командную строку, зайдем в C:ProgramFilesOpenVpneasy-rsa и отредактируем файл vars.bat, заполнив следующие параметры (указав, естественно, свои данные):
KEY_COUNTRY=RFKEY_PROVINCE=MOKEY_CITY=MalininoKEY_ORG =Organization
Теперь создадим СА сертификат и СА ключ. Раскрываем командную строку, которая все это время висела где то на рабочем столе, и продолжаем вписывать команды:
varsclean-all
build-ca
Последняя команда как раз и выполняет генерацию СА сертификата и СА ключа. В процессе создания ключа вам будут задавать вопросы, на которые вы можете отвечать просто нажатием Enter'a (тогда значения будут браться из файла vars.bat который мы редактировали выше) или же вводить свои. Стоит обратить внимание на вопрос:
Common Name (eg, your name or your server's hostname) []: OpenVPNS
Здесь вы должны задать название для сервера – в примере мы ввели OpenVPNS.
Генерируем сертификат (server.crt) и ключ (server.key) сервера
Не выходя из директории, в нашей командной строке продолжим вводить команды. Сгенерируем сертификат сервера и ключа командой:
build-key-server server
На вопросы отвечаем так же как в первом пункте. На вопрос:
Common Name *: server
Введем: server. На вопросы:
Sign the certificate? [y/n]
и
Источник: https://interface31.ru/tech_it/2011/09/organizaciya-vpn-kanalov-mezhdu-ofisami.html
Скорая Компьютерная Помощь г. Калуга – Ремонт компьютеров – Статьи
Смена часовых поясов с 26 октября. KB2998527 для Windows XP.
Ни для кого не секрет, что с 26 октября произойдет очередная смена часовых поясов в России. Microsoft выпустила по этому случаю обновление KB2998527, однако, как известно, поддержка Windows XP была прекращена и для этой версии ОС официального обновления нет. О том как быть пользователям Windows XP после 26 октября и рассказывается в этой статье.
1С 7.7: Организация автообмена через FTP
В данной статье мы рассмотрим организацию автообмена 1С:Предприятие 7.7 с использованием УРБД (управление распределенными базами данных) через FTP сервер. Для конкретизации задачи, предположим, что у нас есть центральный офис и несколько удаленных филиалов (торговых точек), которые будут обмениваться с центральным офисом информацией посредством автообмена и распределенных баз данных.
Настройка OpenVPN сервера.
В этой статье в простой и доступной форме мы попытаемся рассказать вам о том как поднять собственный OpenVPN сервер.
Мы не ставим своей целью, чтобы по окончании прочтения этой статьи вы досконально понимали все принципы “как это работает” или разбирались в тонкостях организации сетей, но хотим, чтобы в результате – вы могли настроить OpenVPN сервер “с нуля”. Так что можно считать эту статью неким пошаговым руководством для пользователей.
Продвижение в поисковых системах
Выдержка из книги Кристофера Б. Джонса “140 технологий раскрутки сайтов”. От истории продвижения в поисковых системах (как начиналось SEO) к практическим аспектам: подбор ключевых слов, создание страницы, анализ факторов влияющих на поисковую выдачу, ссылки, контекстная реклама и многое другое.
Аудит безопасности беспроводных сетей Wi-Fi
Беспроводные сети прочно вошли в нашу жизнь, на работе, дома, практически у каждого второго пользователя интернет имеется роутер с WiFi. Но насколько это безопасно? Реально ли взломать, подобрать пароль к сети с включенным WPA/WPA2 шифрованием? Ответы на эти вопросы вы найдете в данной статье.
Torrent.Dml не работает, что делать?
В последнее время появилось очень много сообщений с вопросами о работоспособности крупнейшего неофициального домолинковского торрент-трекера torrent.dml, если у вас он не работает, то эта статья для вас.
Port Forwarding. Как настроить и что это такое?
Использование ADSL модема / роутера в режиме маршрутизатора с активированной службой NAT/Firewall является неоспоримым преимуществом в плане защиты домашней сети от нежелательных вторжений из сети Интернет, но вместе с безопасностью, пользователю, возможно, предстоит столкнуться с необходимостью настройки службы Port Forwarding. Целью написания данной инструкции является необходимость развеять миф о сложности настройки службы Port Forwarding у начинающего пользователя.
Ошибка в смартфонах на Android позволяет удалять данные с устройств
Эксперт по информационной безопасности обнаружил в некоторых смартфонах Samsung серии Galaxy, включая флагман Galaxy S III, уязвимость, позволяющую хакерам удаленно уничтожать все данные на атакуемом устройстве.
Однако, как оказалось, неожиданной уязвимости с удалением данных при посещении страницы со специально сформированной ссылкой, которую Samsung успела оперативно исправить буквально через день, подвержены также и устройства HTC One X, HTC Desire, Motorola Defy, Sony Xperia Active и Sony Xperia Arc S.
Проблема с MAC'ом сетевой карты. Нулевой MAC (00-00-00-00-00-00)
Решение проблемы нулевого (00-00-00-00-00-00) MAC адреса.
На свежекупленном ПК с материнской платой ECS H67H2-M3 у интегрированного LAN-адаптера оказался MAC 00-00-00-00-00-00, в результате чего ПК не мог нормально “общаться” с сетью, т.е.
получать IP адрес от маршрутизатора, отвечать на запросы из сети и т.п. В этой статье мы расскажем о том как удалось устранить проблему.
Восстановление утерянного пароля к 1С 8.1 / 8.2
Иногда пароль от информационной базы 1С оказывается “утерянным”, нередки случаи, когда увольняясь системный администратор, программист или главный бухгалтер “уносит все секреты” с собой, после чего связь с ним теряется. В этой статье мы расскажем о том как можно получить доступ к информационной базе и восстановить утраченный пароль.
Компьютерные магазины в Калуге
Компьютерные магазины в Калуге. Где купить компьютеры, комплектующие, аксессуары в г. Калуга? Список магазинов, адреса, телефоны, сравнение качества обслуживания.
Обмен файлами. Используем анонимные торрент-трекеры. PublicBitTorrent. OpenBitTorrent. Как организовать раздачу?
Организуем обмен файлами с помощью BitTorrent клиента. Практически у каждого из нас на компьютере установлен торрент-клиент, предназначенный для обмена файлами, наверняка у каждого есть свой список любимых торрент-трекеров с которых мы изредка что-то качаем.
В этой статье мы рассмотрим вопрос, что делать в случае если мы хотим максимально быстро и эффективно распространить какой-то контент среди друзей, знакомых, какого-либо сообщества, которые незарегистрированы ни на одном из известных вам торрент-трекеров.
Как избавиться от relinker.notlong.com в Firefox?
Стартовая страница браузера Mozilla Firefox изменилась на relinker.notlong.com, через меню Инструменты -> Настройки -> Стартовая страница также не изменяется. В статье рассказано как решить данную проблему.
Выдача маршрутов клиентам через DHCP Server в D-Link DFL-210.
D-Link DFL-210. Custom DHCP Options., DHCP Static Routes. Option 249. Выдача маршрутов клиентам через DHCP. Настраиваем межсетевой экран для выдачи статических маршрутов клиентов через встроенный DHCP сервер.
D-Link DIR-300NRU. Прошивка от Билайн. Как прошить и как откатиться на родную прошивку.
Как прошить роутер D-Link DIR-300 на кастомизированную билайновскую прошивку и обратно (т.е. как откатиться от кастомизированной билайновской прошивки на родную)? D-Link DIR-300NRU. Прошивка от Билайн. Как прошить и как откатиться на родную прошивку.
Источник: http://compkaluga.ru/articles/172/
Настройка OpenVPN туннеля в FreeBSD
Настраиваем OperVPN в режиме сервер-клиенты с TLS-шифрованием, а так же клиент для подключения к серверу.
Установка
Устанавливаем пакет:
pkg install openvpn
Генерация ключей
Генерируем ключи:
# Инициализируем папку с ключами easyrsa init-pki # Создаем ключ для системы безопасного обмена ключами по алгоритму Диффи — Хеллмана easyrsa gen-dh # Создаем корневой сертификат easyrsa build-ca nopass # Создаем ключ и сертификат для сервера с именем server. easyrsa build-server-full server nopass # Создаем ключ и сертификат для клиента с именем client. easyrsa build-client-full client nopass
Для генерации дополнительных клиентских ключей используем команду:
easyrsa build-client-full клиент nopass
Переходим в папку с ключами.
cd /usr/local/share/easy-rsa/pki
Генерируем ключ пакетной авторизации:
openvpn –genkey –secret ta.key
Настройка сервера
Создаем папку с файлами конфигурации:
mkdir /usr/local/etc/openvpn
Копируем сгенерированные ключи из папки keys по умолчанию в /usr/local/etc/openvpn:
cp ca.crt dh.pem ta.key issued/server.crt private/server.key /usr/local/etc/openvpn
Ключи клиентов на сервере не требуются, они подписаны корневым ключом, их подлинность проверяется с помощью корневого сертификата.
Переходим в папку конфигурации:
cd /usr/local/etc/openvpn
Копируем шаблон конфига:
cp /usr/local/share/examples/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn
Редактируем файл конфигурации:
ee server.conf
Конфигурация сервера (server.conf):
################################################### # Sample OpenVPN 2.0 config file for # # multi-client server. # # # # This file is for the server side # # of amany-clients one-server # # OpenVPN configuration. # # # # OpenVPN also supports # # single-machine single-machine # # configurations (See the Examples page # # on the web site for more info). # # # # This config should work on Windows # # or Linux/BSD systems. Remember on # # Windows to quote pathnames and use # # double backslashes, e.g.: # # “C:\Program Files\OpenVPN\config\foo.key” # # # # Comments are preceded with '#' or ';' # ################################################### # Which local IP address should OpenVPN # listen on? (optional) ;local a.b.c.d Адрес для входящих соединений, если не задан, то соединения будут приниматься на всех интерфейсах. # Which TCP/UDP port should OpenVPN listen on? # If you want to run multiple OpenVPN instances # on the same machine, use a different port # number for each one. You will need to # open up this port on your firewall. port 1194 Порт. # TCP or UDP server? ;proto tcp-server proto udp Рекомендуемый протокол – UDP.Используем TCP только при проблемах с установкой UDP-соединения. # “dev tun” will create a routed IP tunnel, # “dev tap” will create an ethernet tunnel. # Use “dev tap0” if you are ethernet bridging # and have precreated a tap0 virtual interface # and bridged it with your ethernet interface. # If you want to control access policies # over the VPN, you must create firewall # rules for the the TUN/TAP interface. # On non-Windows systems, you can give # an explicit unit number, such as tun0. # On Windows, use “dev-node” for this. # On most systems, the VPN will not function # unless you partially or fully disable # the firewall for the TUN/TAP interface. ;dev tap dev tun Тип виртуального интерфейса: tap – эмулирует сетевую карту, необходим, если требуется сетевой мост tun – туннель точка-точка используется для маршрутизации IP трафика, поддерживается несколько соединений на один туннель.Можно явно задать номер интерфейса, например tun0. # Windows needs the TAP-Win32 adapter name # from the Network Connections panel if you # have more than one. On XP SP2 or higher, # you may need to selectively disable the # Windows firewall for the TAP adapter. # Non-Windows systems usually don't need this. ;dev-node MyTap Специфично для Windows. # SSL/TLS root certificate (ca), certificate # (cert), and private key (key). Each client # and the server must have their own cert and# key file. The server and all clients will # use the same ca file. # # See the “easy-rsa” directory for a series # of scripts for generating RSA certificates # and private keys. Remember to use # a unique Common Name for the server # and each of the client certificates. # # Any X509 key management system can be used. # OpenVPN can also use a PKCS #12 formatted key file # (see “pkcs12” directive in man page) ca ca.crt cert server.crt key server.key # This file should be kept secret Пути к ключам шифрования, сгенерированным на предыдущем шаге. По умолчанию ищутся в папке с конфигом, имена сгенерированных нами ключей совпадают с заданными значениями. # Diffie hellman parameters. # Generate your own with: # openssl dhparam -out dh1024.pem 1024 # Substitute 2048 for 1024 if you are using # 2048 bit keys. dh dh.pem Ключ безопасного обмена ключами по алгоритму Диффи — Хеллмана, исправляем на dh2048.pem, если был выбран 2048-битный ключ. # Configure server mode and supply a VPN subnet # for OpenVPN to draw client addresses from. # The server will take 10.8.0.1 for itself, # the rest will be made available to clients. # Each client will be able to reach the server # on 10.8.0.1. Comment this line out if you are # ethernet bridging. See the man page for more info. server 10.8.0.0 255.255.255.0 Включает режим сервера, фактически встроенный маршрутизатор, позволяющий принимать несколько клиентских подключений на один системный туннель. Задается адрес сети и маска, первые два адреса будут использованы в качестве адресов сервера и клиента устройства tun, остальные доступны клиентам. # Maintain a record of client virtual IP address # associations in this file. If OpenVPN goes down or # is restarted, reconnecting clients can be assigned # the same virtual IP address from the pool that was # previously assigned. ifconfig-pool-persist ipp.txt Файл для хранения адресов, присвоенным клиентам, при повторном подключении клиенты получат тот же адрес. Источник: http://itadept.ru/freebsd-openvpn/
Устанавливаем OpenVPN в роутер TP-LINK TL-WR1043ND v1.x
В предыдущей статье (устанавливаем Open-WRT) мы установили в роутер TP-LINK TL-WR1043ND альтернативную прошивку OpenWRT, которая позволяет расширить возможности роутера. Теперь рассмотрим вопрос установки OpenVPN сервера.
Предыстория
Я имею беспроводной 3G роутер, с дешевым тарифом, ориентированным на пользование детьми, в котором на уровне провайдера запрещены многие категории сайтов, включая форумы и социальные сети. Без социалок и прочего можно вполне жить, а вот отсутствие доступа к форумам меня удручало.
К тому же фильр провайдера иногда очень странно фильтровал ресурсы, относя совсем безобидные (типа досок объявлений) к списку запрещенных, что немного раздражало. По этому я решил установить OpenVPN Server в домашний роутер, что позволит ходить на любые ресурсы в Сети без ограничений.
Для провайдера это выглядит как подключение к одному хосту (роутеру дома), а куда я от туда хожу дальше уже не его дело. И как дополнительный бонус я получаю возможность работать с любым устройством внутри домашней сети без необходимости открывать уйму портов на фаерволе.
Начнем с того, что такое VPN и в каких случаях может понадобится. VPN (англ. Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет).
Проще говоря, с помощью VPN можно соединить два удаленных друг от друга компьютера так, как будь-то они находятся в одной локальной сети.
В случае с домашним роутером VPN-соединение позволяет подключатся через Интернет к домашней сети и работать с любым устройством в ней как если бы мы находились дома.
OpenVPN — реализация технологии VPN с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall. При этом есть возможность защитить подключение шифрованием на основе сертификатов.
Для начала обновим прошивку OpenWRT c Backfire 10.03.1 до Attitude Adjustment 12.09. Этот шаг можно конечно пропустить, но в 12.09 есть файловый менеджер Midnight Commander, именуемый часто просто MC, у которого не отключен встроенный редактор в отличие от такового в 10.03.01. А редактировать конфигурационные файлы в консольном vi то еще удовольствие. Да и в новой версии пакеты посвежее.
И так, подключаемся в консоль роутеру, переходим в каталог /tmp и качаем файл прошивки для нашего роутера (sysupgrade) и md5sums:
Проверяем целосность скачаного файла с прошивкой: Запускаем обновление:
Роутер автоматически перезагрузится после прошивки. Есть еще несколько альтернативных способов обновления. Все они описаны здесь.После обновления прошивки нам нужно заново установить пакеты, если таковые были установлены. Обновляем, устанавливаем MC:
Если вы подключаетесь в консоль роутера из Windows с помощью Putty то в его настройках необходимо изменить кодировку с UTF8 на KOI8 для того, что бы интерфейс MC выглядел нормально.
Устанавливаем необходимые пакеты:
Запускаем MC:
Переходим в каталог /etc/easy-rsa и редактируем файл vars. Можно оставить значения по умолчанию. Генерируем сертификаты: Создаем серверный ключ:
Создаем клиентский ключ:
Опционально, для создания ключей в хранилище PKCS12:
Создавать ключи необходимо для каждого клиента в отдельности.Например, у вас компьютер на работе и мобильный телефон — нужно каждому создать свой ключ. Иначе может возникнуть ситуация, когда соединение будет разрываться по непонятным причинам в случае установки одного ключа на разные устройства.
А причина такого поведения проста — при обнаружении подключения клиента с другого устройства сервер разорвет предыдущее установленное подключение этого клиента. Копируем сгененрированые файлы в папку /etc/openvpn: Теперь нам необходимо скопировать ключи и сертификаты клиентов из роутера на целевые устройства.
Обычно для этих целей устанавливают в роутер SFTP сервер, но мы обойдемся без него. В прошивке уже реализована поддержка протокола SCP (Secure Copy Protocol) для передачи файлов. Возьмем бесплатный клиент WinSCP и подключимся к нашему роутеру, что бы скопировать необходимые файлы:
Нам понадобятся: ca.crt, dh1024.
pem и пара сертификат-ключ для клиента client.crt, client.key. На скрине ниже для второго клиента так же скопированы gnex.crt и gnex.key:
Запускаем mc и открываем в нем файл /etc/config/openvpn. Содержимое файла заменяем на следующее:
Этот конфиг создаст vpn-туннель и назначит клиенту IP адрес из сети 10.0.0.x с указанием в качестве DNS сервера адрес роутера на локальном интерфейсе (192.168.1.1). Сервер получит первый адрес из диапазона — 10.0.0.1. Команда 'redirect-gateway def1' заменит на клиенте шлюз по умолчанию на адрес vpn-сервера, благодаря чему весь трафик в Интернет пойдет через vpn-туннель. А команда 'route 192.168.1.0 255.255.255.0' создаст на клиенте маршрут в локальную сеть роутера. Теперь нам нужно разрешить подключение снаружи (из Интернет) на WAN порт роутера по порту 1194. Для этого в конец файла /etc/config/firewall добавляем следующее:
А в файл /etc/firewall.user вставляем следующее:
Все готово для запуска. Запускаем OpenVPN-сервис командой /etc/init.d/openvpn start
Если запуск прошел успешно без сообщений об ошибках то можно добавить openvpn в автозагрузку командой /etc/init.d/openvpn enable
Для подключения нам понадобится конфигурационный файл. Создадим его и назовем client.ovpn
Внутрь файла вставим следующее, заменив SERVER-IP своим значением:
Файл client.ovpn вместе с сертификатами и ключами клиента нужно сложить в одну папку.Скачивем клиент для своей платформы со страницы проекта и устанавливаем. Рассмотрим вариант с Windows. Необходимо переложить все подготовленные файлы в папку Program FilesOpenVPNconfig (если у вас Win32) и запустить OpenVPN клиент от имени Администратора если вы таковым не являетесь. Это необходимо для того, что бы OpenVPN клиент смог добавить необходимые маршруты в таблицу маршрутизации. Далее правый клик на значке OpenVPN в системном лотке и жмем «Подключится». В результате успешного подключения вы увидите следующее:
Теперь можно проверить как работает наш vpn-туннель поверх Интернет просто выполнив ping локального адреса роутера (при условии, что в сети из которой вы подключаетесь нет такого адреса):
Таким образом мы получили защищенное подключение к домашней сети. В следующей статье будут освещены особенности использования OpenVPN клиента для Android.
Источник: http://www.creaters.info/2014/07/openvpn-tp-link-tl-wr1043nd-v1x.html
Установка и настройка сервера и клиента OpenVPN на Debian
Обновлённая и более универсальная инструкция по настройке OpenVPN на всех основных платформах теперь в статье «Инструкция по настройке сервера и клиента OpenVPN».
В данной статье подробно описывается, как получить подключение на OpenVPN с использованием Debian Linux. Эти команды запускаются от рута.
Что такое OpenVPN?
OpenVPN – это VPN программа, которая использует SSL/TLS для создания безопасных, зашифрованных VPN соединений для маршрутизации вашего интернет трафика, тем самым предотвращая слежку (снупинг).
OpenVPN имеет высокую способность прозрачности для прохода через файерволы.
На самом деле, если ситуация требует этого, вы можете запустить его на том же TCP порту как HTTPS (443), что делает трафик неразличимым и практически невозможным для блокировки.
OpenVPN использует различные методы для аутентификации клиентов на сервере: предварительно разделяемые секретные ключи, сертификаты или имя/пароль.
OpenVPN использует протокол OpenSSL и реализует много функций безопасности и контроля, к которым относятся запрос отклика аутентификации, возможность единого входа, балансировка нагрузки и функции отказоустойчивости, а также поддержка множества демонов.
Почему использовать OpenVPN?
Говоря «безопасные подключения» – подразумеваем OpenVPN. Если вы не хотите, чтобы кто-либо шпионил (занимался снупингом) за вашим интернет трафиком, используйте OpenVPN для маршрутизации всего вашего трафика через сильно зашифрованный, безопасный туннель.
Это особенно важно при подключении к публичным WIFI сетям в аэропортах и других местах. Вы никогда не можете быть уверенным, кто шпионит за вашим трафиком. Вы можете направить ваш трафик через ваш собственный OpenVPN сервер для предотвращения снупинга.
Если вы в одной из тех стран, которые постоянно мониторят весь ваш трафик и блокируют по своему желанию веб-сайты, вы можете использовать OpenVPN через TCP порт 443, чтобы сделать его неотличимым от HTTPS трафика.
Вы даже можете комбинировать ваши стратегии безопасности, например, туннелировать ваш OpenVPN трафик через SSL туннель, чтобы отбиться от техник Deep Packet Inspection (глубокого анализа пакетов), которые могут быть способными идентифицировать сигнатуры OpenVPN.
Системные требования
Для работы OpenVPN нужны минимальные требования. Система с 64 MB оперативной памяти и 1 GB места на жёстком диске достаточно для OpenVPN. OpenVPN работает почти на всех основных системах.
Установка и настройка OpenVPN на Debian
Установка OpenVPN on Мастер-сервер
Запустите следующую команду для установки OpenVPN.
apt-get install openvpn
По умолчанию скрипты easy-rsa scripts устанавливаются в директорию ‘/usr/share/easy-rsa/‘. Поэтому нам нужно скопировать эти скрипты в нужное расположение, например /root/easy-rsa.
mkdir /root/easy-rsa cp -prv /usr/share/easy-rsa /root/easy-rsa
Генерируем CA сертификат и CA ключ
Откройте файл ‘vars‘ и сделайте следующие изменения, но перед внесением изменений я предлагаю сделать резервную копию.
cd /root/easy-rsa cp vars{,.orig}
Используя ваш текстовый редактор измените значения по умолчанию для easy-rsa.
vim ./vars
Например, добавьте в самый низ:
KEY_SIZE=4096 KEY_COUNTRY=”TH” KEY_PROVINCE=”ChonBuri” KEY_CITY=”Pattaya” KEY_ORG=”MiAlConsorcium” KEY_EMAIL=”[email protected]”
Здесь я использую 4096 битный ключ. Вы можете по своему использовать 1024, 2048, 4096 или 8192 битный ключ.
Экспортируем величины по умолчанию выполнив.
source ./vars
Очистим все сертификаты, которые были сгенерированы ранее.
./clean-all
Далее запустите следующую команду для генерации сертификата CA и ключа CA.
./build-ca
Сгенерируйте сертификат сервера следующей командой. Вместо «server» можно подставить любое имя сервера.
./build-key-server server
Сгенерируйте PEM сертификат Diffie Hellman PEM.
./build-dh
Сгенерируйте клиентский сертификат. Вместо «client» можно подставить ваше имя клиента.
./build-key client
Сгенерируйте код HMAC.
openvpn –genkey –secret /root/easy-rsa/keys/ta.key
Скопируйте сертификаты на машины клиента и сервера следующим образом.
- Убедитесь, что ca.crt присутствует и на клиентской и на серверной машинах.
- Ключ ca.key должен быть на машине, сгенерировавшей ключ.
- Сервер требует server.crt, dh4096.pem, server.key и ta.key.
- client.crt, client.key и ta.key должны быть на клиенте.
Для установки сертификатов на сервере запустите команды.
mkdir -p /etc/openvpn/certs cp -pv /root/easy-rsa/keys/{ca.{crt,key},server.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/
Настройка сервера OpenVPN
Теперь вам нужно настроить OpenVPN. Откройте фйл ‘/etc/openvpn/server.conf‘. Пожалуйста, сделайте изменения, как написано ниже.
port 1194 proto udp dev tun ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/server.crt key /etc/openvpn/certs/server.key dh /etc/openvpn/certs/dh4096.pem tls-auth /etc/openvpn/certs/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push “redirect-gateway def1 bypass-dhcp” push “dhcp-option DNS 8.8.8.8” push “dhcp-option DNS 8.8.4.4” client-to-client keepalive 1800 4000 cipher DES-EDE3-CBC # Triple-DES comp-lzo max-clients 10 user nobody group nobody persist-key persist-tun log /var/log/openvpn.log status /var/log/openvpn-status.log verb 5 mute 20 #client-config-dir ccd mode server tls-server
Запустите следующую команду для настройки OpenVPN запускаться при загрузке.
update-rc.d -f openvpn defaults
Запустите службу OpenVPN.
service openvpn restart
Включение перенаправления и IPTABLES
Создайте файл vpn_firewall.sh
vim /root/vpn_firewall.sh
B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:
- PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
- имя интерфейса – eth0, у вас может быть другое значение, измените его на своё везде, где оно встречается
- в строке iptables -A INPUT -p tcp –dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами
#!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward # Пример настройки файервола для OpenVPN. # Если нужно, сделайте соответствующие # изменения, сети вашего OpenVPN PRIVATE=10.8.0.0/24 # Петлевой адрес LOOP=127.0.0.1 # Удалить старые правила iptables # и временно заблокировать весь трафик. iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -F # Установление политик по умолчанию iptables -P OUTPUT ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP # Предотвращаем использование локальных адресов внешними пакетами iptables -A INPUT -i eth0 -s $LOOP -j DROP iptables -A FORWARD -i eth0 -s $LOOP -j DROP iptables -A INPUT -i eth0 -d $LOOP -j DROP iptables -A FORWARD -i eth0 -d $LOOP -j DROP # Всё, что приходит из Интернета, должно иметь реальный адрес iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP iptables -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP iptables -A FORWARD -i eth0 -s 10.8.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 10.8.0.0/8 -j DROP # Блокируем исходящий NetBios (если в вашей подсети # есть машины с Windows). Это не окажет влияния на какой-либо # трафик NetBios, который идёт по VPN туннелю, но остановит # локальные машины Windows от самостоятельного # широковещания в Интернет. iptables -A FORWARD -p tcp –sport 137:139 -o eth0 -j DROP iptables -A FORWARD -p udp –sport 137:139 -o eth0 -j DROP iptables -A OUTPUT -p tcp –sport 137:139 -o eth0 -j DROP iptables -A OUTPUT -p udp –sport 137:139 -o eth0 -j DROP # Разрешаем локальные петли iptables -A INPUT -s $LOOP -j ACCEPT iptables -A INPUT -d $LOOP -j ACCEPT # Позволяем входящий пинг (можно отключить) # iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT # Разрешаем такие службы как www и ssh (можно отключить) iptables -A INPUT -p tcp –dport http -j ACCEPT iptables -A INPUT -p tcp –dport 22 -j ACCEPT iptables -A INPUT -p tcp –dport 80 -j ACCEPT iptables -A INPUT -p tcp –dport 443 -j ACCEPT # Разрешаем входящие пакеты OpenVPN # Дуплицируйте строку ниже для каждого # туннеля OpenVPN, меняя –dport n # для соответствия порту OpenVPN UDP. # # В OpenVPN номер порта # контролируется опцией –port n. # Если вы разместили эту опцию в конфигурационном # файле, вы можете удалить предшествующие '–' # # If you taking the stateful firewall # approach (see the OpenVPN HOWTO), # then comment out the line below. iptables -A INPUT -p udp –dport 1194 -j ACCEPT # Разрешить пакеты от устройств TUN/TAP. # Когда OpenVPN запущен в безопасном режиме, # он будет проверять подлинность пакетов до # их прибытия на интерфейс # tun или tap. Следовательно нет # необходимости добавлять сюда какие-либо фильтры, # если вы не хотите ограничить # тип пакетов, которые могут проходить # через туннель. iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT # Сохранить состояние подключений от локальной машины и частных сетей iptables -A OUTPUT -m state –state NEW -o eth0 -j ACCEPT iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state –state NEW -o eth0 -j ACCEPT iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT # Маскировка локальной сети iptables -t nat -A POSTROUTING -s $PRIVATE -o eth0 -j MASQUERADE
Проверить работу файла:
bash vpn_firewall.sh
ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.
Установка OpenVPN на клиенте
Запустите следующую команду для установки OpenVPN на клиентской машине.
apt-get install openvpn mkdir -p /etc/openvpn/certs/
Настройки даны исходя из расположения файлов здесь:
- /etc/openvpn/certs/ca.crt
- /etc/openvpn/certs/client.crt
- /etc/openvpn/certs/client.key
- /etc/openvpn/certs/ta.key
Используя текстовый редактор, настройте конфигурацию OpenVPN клиента в ‘/etc/openvpn/client.conf‘ на клиенте. Пример конфигурации ниже:
client remote 185.117.153.79 ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/client.crt key /etc/openvpn/certs/client.key cipher DES-EDE3-CBC comp-lzo yes dev tun proto udp tls-auth /etc/openvpn/certs/ta.key 1 nobind auth-nocache persist-key persist-tun user nobody group nogroup
Обратите внимание на строку remote 185.117.153.79 – вам обязательно нужно заменить это значение на IP вашего собственного VPN сервера!
Запустите следующую команду для настройки OpenVPN запускаться при загрузке.
update-rc.d -f openvpn defaults
Запустите службу OpenVPN на клиенте.
service openvpn restart
Как просматривать логи OpenVPN
Для наших настроек это делается так:
cat /var/log/openvpn.log cat /var/log/openvpn-status.log
Ещё это можно делать, например, командой:
grep VPN /var/log/syslog
Настройка входа в OpenVPN по логину и паролю
Принцип работы с подключением по логину и паролю следующий:
- OpenVPN не может проверять действительность логина и пароля;
- вместо проверки OpenVPN сохраняет присланные ей логин и пароль в файл со случайным именем в директорию, которую мы указали в tmp-dir (в нашем случае это /tmp).
- после этого OpenVPN запускает скрипт, который мы указали в auth-user-pass-verify (в нашем случае это /etc/openvpn/verify.sh), в качестве аргумента этому скрипту передаётся имя только что сохранённого файла с логином и паролем.
- если от скрипта получен код выхода 0, то OpenVPN авторизует клиента, если 1, то считает, что логин или пароль неверны.
- после этого OpenVPN удаляет временный файл.
Схема работы, мягко говоря, так себе. Поскольку предусматривает хранение паролей в открытом виде и на сервере и на клиенте…
Внесём изменения в конфигурационный файл сервера:
vim /etc/openvpn/server.conf
Добавим туда следующие строки:
auth-user-pass-verify /etc/openvpn/verify.sh via-file client-cert-not-required username-as-common-name tmp-dir /tmp script-security 2
Создаём файл
vim /etc/openvpn/verify.sh
копируем туда следующий код (можете придумать свой механизм аутентификации):
#!/bin/sh USERS=`cat /etc/openvpn/user.pass` for i in $USERS; do if [ “$i” = “`cat $1 | paste -sd ':' -`” ]; then exit 0 fi done echo “С таким паролем пользователей не найдено” exit 1
Делаем файл исполнимым:
chmod 755 /etc/openvpn/verify.sh
Файл с паролями /etc/openvpn/user.pass выглядит так:
user1:pass1 user2:pass2 …
то есть идёт через пробел пара логин:пароль. Пароль находится в открытом виде!
В конфигурационный файл клиента добавляем такую строку:
auth-user-pass /etc/openvpn/pass.txt
и создаём соответственно файл pass.txt, где будет находится логин и пароль в таком виде:
username password
Примечание: Если в параметре auth-user-pass убрать путь к файлу, будет запрашиваться логин/пароль.
Полные конфигурационные файлы в моём случае. Для сервера:
port 1194 proto udp dev tun ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/server.crt key /etc/openvpn/certs/server.key dh /etc/openvpn/certs/dh4096.pem #tls-auth /etc/openvpn/certs/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push “redirect-gateway def1 bypass-dhcp” push “dhcp-option DNS 8.8.8.8” push “dhcp-option DNS 8.8.4.4” client-to-client keepalive 1800 4000 cipher DES-EDE3-CBC # Triple-DES comp-lzo max-clients 10 user nobody group nobody persist-key persist-tun log /var/log/openvpn.log status /var/log/openvpn-status.log verb 5 mute 20 #client-config-dir ccd mode server tls-server auth-user-pass-verify /etc/openvpn/verify.sh via-file client-cert-not-required username-as-common-name tmp-dir /tmp script-security 2
Для клиента:
client remote 185.117.153.79 ca /etc/openvpn/certs/ca.crt #cert /etc/openvpn/certs/client.crt #key /etc/openvpn/certs/client.key cipher DES-EDE3-CBC comp-lzo yes dev tun proto udp #tls-auth /etc/openvpn/certs/ta.key 1 nobind auth-nocache persist-key persist-tun user nobody group nogroup auth-user-pass /etc/openvpn/pass.txt
Перезапустите службу OpenVPN.
service openvpn restart
Источник: https://ZaLinux.ru/?p=549
Yellow Leaf – Статьи – Настройка OpenVPN в bridge с физическим линком
MooSE ( 2012-06-10 )
Настройка OpenVPN в bridge с физическим линком это достаточно простая задача, хотя и с парой хитрых моментов, но сначала разберёмся зачем же это может быть надо? Ну во-первых мы можем раздавать пользователям адреса непосредственно из адресного пространства локальной сети предприятия, что в ряде случаев бывает важно. Во-вторых мы можем объединить openvpn-интерфейс в bridge с внешним линком сервера и выдавать клиентам реальные IP-адреса, что позволит например “вывести” наружу сервера, находящиеся в силу каких-то причин за NAT.
Приступим к решению задачи. Мы будем рассматривать установку OpenVPN-сервера на сервере под управленим Debian Squeze и двумя физическими интерфейсами:
- внешний: eth0 c адресом 1.1.1.2/24 и маршрутом по умолчанию через 1.1.1.1;
- внутрений: eth1 с адресом 192.168.192.1/24
Будем настраивать OpenVPN-сервер, который раздаёт клиентам адреса из диапазона 192.168.192.100-192.168.192.150. Установим необходимые пакеты:
apt-get install openvpn bridge-utils
Теперь гаисм eth1:
ifdown eth1
Открываем “/etc/network/interfaces” и пишем конфигурацию для br0, предварительно закомментировав конфигурацию для eth1:
#auto eth1 #iface eth1 inet static # address 192.168.192.1 # netmask 255.255.255.0 # network 192.168.192.0 # broadcast 192.168.192.255 auto br0 iface br0 inet static bridge_ports eth1 bridge_fd 0 address 192.168.192.1 netmask 255.255.255.0 network 192.168.192.0 broadcast 192.168.192.255
Теперь поднимаем br0:
ifup br0
Если на сервере был настроен iptables то во всех правилах надо заменить eth1 на br0, а так же добавить ещё одно правило, разрешающие трафик внутри групп интерфейсов, собранных в bridge:
iptables -A FORWARD -m physdev –physdev-is-bridged -j ACCEPT
Приступаем к настройке собственно OpenVPN-сервера. Сперва сгенерируем ключи для OpenVPN-сервера и клиентов точно так, как было описано в этой статье. Далее создадим файл “/etc/openvpn/server.conf”, следующего содержания:
# Здесь четыре параметра: # 1. Адрес локального интерфейса, включаемого в бридж # 2. Маска сети # 3. Начало динамического диапазона для клиентов # 4. Конец динамического диапазона для клиентов server-bridge 192.168.192.1 255.255.255.0 192.168.192.100 192.168.192.150 # Снимите комментарий если хотите ВЕСЬ клиентский трафик пустить через сервер #push “redirect-gateway 192.168.192.1” # Сервер работает в режиме демона daemon # Случаеш порт 443/tcp port 443 proto tcp-server # Использует интерфейс tap0 dev tap0 # Сертификаты сервера ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem # Просим клиента использовать сжатие push “comp-lzo yes” # И сами тоже его используем 😉 comp-lzo # Посылать пакеты для поддержки соединения каждые 10 секунд # И инициировать переподключение в случае отсутствия ответов в течении двух минут keepalive 10 120 # Разрешаем клиентам обмениаваться трафиком между собой client-to-client # Не перечитывать ключи постоянно а держать их в памяти persist-key # Не закрывать сетевой интерфейс при переинциализации соединения persist-tun # Уровень информативности лога verb 3 # Файл лога log-append /var/log/openvpn-server.log # Уровень безопасности. Как минимум нужна возможность запускать скрипты при старте script-security 2 # Скрипт, запускаемый при поднятии интерфейса up /etc/openvpn/server_up.sh
Хотя OpenVPN и поддерживает работу с интерфейсами, являющимися частью bridge, но по умолчанию интерфейс находится в состоянии “down” и не добавлен в bridge, по этому создаём ещё скрипт “/etc/openvpn/server_up.sh”, который будет выполняться при старте сервера и “доделывать” работу по инициализации схемы:
#!/bin/sh # Переводим интерфейс в состояние “up” /sbin/ifconfig tap0 up # Добавляем его в br0 /usr/sbin/brctl addif br0 tap0
Запускаем сервер:
invoke-rc.d openvpn start
На клиенте конфигурация будет выглядеть примерно так:
# Режим клиента client # Используем интерфейс tap0 dev tap0 # Куда подключаемся remote 1.1.1.1 443 # Используем протокол tcp proto tcp # Ключи ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/home.crt key /etc/openvpn/keys/home.key # Не перечитывать ключи постоянно а держать их в памяти persist-key # Не закрывать сетевой интерфейс при переинциализации соединения persist-tun # Используем сжатие comp-lzo resolv-retry infinite nobind ns-cert-type server # Уровень информативности лога verb 3 # Файл лога log-append /var/log/openvpn-client.log
Если вы хотите раздавать реальные IP-адреса то надо настраивать bridge уже для eth0, ну и разумеется запросить у провайдера адреса, которые вы и будете раздавать.
На этом всё. Приятной работы!
Источник: https://www.ylsoftware.com/news/657