Установка VPN в Ubuntu. Настройка VPN подключения в Linux Vpn соединение linux

29.06.2020

Применяются для различных целей и сегодня обеспечивают не только построение корпоративных сетей или защиту при пользовании общедоступными подключениями, а и выход в интернет. Кроме того, благодаря VPN доступно посещение веб-ресурсов в обход блокировкам с сохранением приватности, что в последнее время тревожит пользователей больше всего. Процесс настройки VPN для каждой системы имеет свои особенности и может выполняться в различных вариациях. В зависимости от многих факторов, в том числе целевого назначения и типа построения сети существует несколько способов реализации технологии. Мы рассмотрим, как выполняется настройка VPN на Linux, а также проясним, для чего применимо это соединение.

Методика настройки VPN подключения в Linux.

Для начала разберём, что представляет собой Virtual Private Network (виртуальная частная сеть) и как применим данный вид технологий. Благодаря VPN можно объединить любое число устройств в частную сеть, и обеспечить защищённый канал для передачи данных. Так, применяя подключение такого типа, пользователи могут сохранить приватность в интернете и не переживать о сохранности данных, в том числе при работе в сетях с общим доступом. Подсоединение к VPN позволяет избежать перехвата информации со стороны злоумышленников, поскольку маршрут обмена пакетами надёжно защищён шифрованием и аутентификацией пользователя. Данные шифруются на стороне отправителя и следуют по каналу связи в зашифрованном виде, а расшифровываются уже на устройстве получателя, при этом у обоих подразумевается общий ключ доступа. С применением VPN возможно создание надёжной сети поверх ненадёжной (как правило, интернета). Подключение пользователя выполняется не напрямую, а посредством сервера, соединённого с внутренней или внешней сетью. Это и обеспечивает приватность в интернете, поскольку в таком случае веб-ресурсам будет виден IP сервера, к которому подсоединён клиент. Сервер потребует прохождения процедуры идентификации, а также аутентификации и после того, как пользователь авторизован, возможна работа с сетью. Наиболее часто VPN используют в следующих случаях:

  • Подключение к интернету посредством VPN нередко применимо провайдерами городских сетей, а также на предприятиях. Плюсом такого метода реализации является защищённость канала связи, поскольку возможна настройка разных ступеней безопасности. Это обеспечивается настройкой одной сети поверх другой и доступом в интернет посредством двух разных сетей.
  • Внутри корпоративной сети. Объединение в одну сеть позволяет получить безопасным доступ к сети скольким угодно компьютерам сотрудников вне зависимости от их местонахождения и удаления от сервера.
  • Объединение компонентов корпоративной сети. Применяя VPN для обеспечения взаимодействия различных частей предприятия, возможна организация доступа для них к отдельным ресурсам общей сети.

Реализация технологии доступна для различных устройств, операционкой которых поддерживается опция или имеется VPN-клиент, способный осуществлять проброс портов с применением TCP/IP в виртуальную сеть. Пользователь может самостоятельно выполнить все действия по настройке. Необходимость в этом возникает даже не ради цели обхода региональных блокировок , ведь для этого можно и не настраивать VPN в компьютере (для посещения заблокированных ресурсов достаточно инсталляции стороннего приложения, установки специального расширения для браузеров или использования встроенного функционала обозревателя). Настроить VPN на ПК или ноутбуке часто требуется в случае смены провайдера для настройки доступа в интернет. Настройка VPN под Linux имеет свои специфические особенности, учитывая многогранность ОС, но принцип остаётся тот же.

Настройка серверной части на Linux

Рассмотрим создание VPN сервера PPTP на платформе Ubuntu Server. С Linux достаточно легко развернуть сервер и сделать это можно даже на слабом устройстве. Наиболее просто реализовать VPN с PPTP, поскольку для воплощения не потребуется устанавливать сертификаты на устройства клиентов, а аутентификация выполняется благодаря вводу имени и пароля. Для начала потребуется инсталлировать пакеты:

sudo apt-get install pptpd

Когда пакеты для функционирования PPTP VPN установлены, следует настроить сервер. Чтобы задать диапазон адресов и выполнить прочие главные настройки, откроем файл /etc/pptpd.conf (редактируется с правами администратора):

Для раздачи более сотни подключений разом, находим Connections. Данный параметр должен быть раскомментирован, после чего указываем в этой строке необходимое значение количества подключений. Для отправки по VPN широковещательных пакетов раскомментировать придётся и параметр bcrelay. Далее идём в конец файла, где настроим адреса. Добавляем адрес сервера в VPN сети:

Диапазон адресов для раздачи клиентам (выделяем сразу с некоторым запасом, поскольку увеличить количество, не перезапуская pptpd не получится):

Если у вас имеется несколько внешних IP, можно конкретизировать, по какому из них прослушивать интерфейсы входящих PPTP:

listen внешний ip

Параметр speed позволяет задать скорость подключений (бит/с). Сохраняем и закрываем файл. Остальные параметры можно настроить в /etc/ppp/pptpd-options:

sudo nano /etc/ppp/pptpd-options

В секторе #Encryption, отвечающем за шифрование, строки, которые запрещают применение устаревших и небезопасных способов аутентификации, должны быть раскомментированы:

Опция proxyarp должна быть включена, она отвечает за включение поддержки сервером Proxy ARP. Опция lock позволяет разрешить (для этого комментируем) или запретить (для этого раскомментируем) пользователю множественные подключения. Сохраняемся и закрываем файл. Настройка сервера завершена, но для создания клиентов вносим соответствующие записи в /etc/ppp/chap-secrets:

sudo nano /etc/ppp/chap-secrets

Они выглядят примерно таким образом:

username1 *password12345*

username2 10.10.12.11 password345*

username3 * password787 10.10.11.21

Для каждого пользователя прописываем его имя, пароль, удалённый и локальный IP, разделяя сведения клавишей пробел. Удалённый адрес прописываем при наличии у клиента статического IP и при условии применения исключительно такового, в ином случае предпочтительно ставить звёздочку, чтобы соединение однозначно было выполнено. Локальный адрес же указываем при выделении пользователю одного и того же IP в VPN-сети. В примере выше для клиента в первом варианте соединения осуществляются с любого внешнего IP, локальный выделится первый доступный. Во втором случае – локальный будет выделен первый доступный, но подключения выполняются только с указанного адреса. В третьем – соединиться с сетью можно с любого адреса, локальный же выделится тот, который был нами прописан. Настройка серверной части VPN PPTP завершена, перезапускаем его:

sudo service pptpd restart

Само устройство в перезагрузке не нуждается.

Настройка VPN клиентов

Выполнить наладку клиентской части VPN сервера можно в любой ОС, мы же будем настраивать на Убунте. По большому счёту соединение будет работать и с параметрами, выставленными по умолчанию, но лучше указать тип подключения и выполнить некоторые другие настройки. Установка VPN на Ubuntu предполагает следующие действия:


Настройка сети VPN для Linux завершена, и устройства могут быть соединены локально, но для входа в интернет через VPN потребуется выполнить ещё некоторые настройки.

Настройка доступа в интернет через VPN

Когда с локальной сетью разобрались, начинаем настраивать соединение с интернетом. Для осуществления подключения в терминале прописываем такие команды:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.1/24 -j MASQUERADE

iptables -A FORWARD -s 10.0.0.1/24 -j ACCEPT

iptables -A FORWARD -d 10.0.0.1/24 -j ACCEPT

Под 10.0.0.1/24 подразумевается локальный IP сервера и маска сети. Сохраняемся:

и подтверждаем новые параметры:

Теперь на Linux есть возможность соединения с сетью интернет посредством VPN, а также доступны и остальные преимущества работы с виртуальной сетью. Посещаемые ресурсы увидят внешний адрес сервера, что обусловит приватность, а соединение будет надёжно защищено от хакерских атак и обеспечит безопасность передачи данных.

Аббревиатуру VPN сейчас не слышали разве что только те, кто никогда не имел дела с компьютером. Что это такое, зачем оно нужно и как его настроить самостоятельно?

Что такое VPN и зачем это нужно?

VPN (Virtual Private Network) – виртуальная частная сеть, способ объединить в одну логическую сеть несколько компьютеров, физически находящихся на некотором расстоянии друг от друга.

Использовать VPN можно с разными целями – от организации сети для работы/игр до доступа в интернет. При этом вы должны понимать возможную юридическую ответственность за свои действия.

В России использование VPN не является наказуемым действием, исключая случаи использования с заведомо противоправными целями. То есть, если вы хотите зайти на сайт президента соседней страны (допустим, Сомали) и написать, какой он нехороший, скрыв при этом свой IP-адрес, это само по себе не является нарушением (при условии, что содержание высказывания не нарушает законы). А вот использовать эту технологию для доступа к запрещённым в России ресурсам является правонарушением.

То есть, играть с друзьями по сети и удалённо работать в сетью организации используя VPN – можно, читать всякие нехорошие сайты – нельзя. С этим разобрались. Теперь переходим непосредственно к настройке.

Настройка серверной части на Ubuntu Linux

Для серверной части лучше использовать Linux, с ним в этом плане проще работать. Наиболее простой вариант – PPTP, не требующий установки сертификатов на компьютеры клиентов , аутентификация проводится по имени пользователя и паролю . Его и будем использовать.

Вначале установим нужные пакеты:

Sudo nano /etc/pptpd.conf

Если нам нужно более 100 одновременных подключений, ищем параметр «connections», раскомментируем его и указываем нужное значение, например:

Connections 200

Если нам нужно передавать по виртуальной сети широковещательные пакеты, следует убедиться, что параметр bcrelay также раскомментирован:

Bcrelay eth1

После этого переходим в конец файла и добавляем настройки адресов:

Localip 10.10.10.1 remoteip 10.10.10.2-254 listen 11.22.33.44

Первый параметр указывает IP-адрес сервера в локальной сети, второй – диапазон выдаваемых клиентам IP-адресов (диапазон должен обеспечить возможность указанного количества подключений, лучше адреса выделить с запасом), третий указывает, по какому внешнему адресу прослушивать интерфейсы для приёма входящих подключений. То есть, при наличии нескольких внешних адресов прослушивать можно только один. Если третий параметр не указать, прослушиваться будут все доступные внешние адреса.

Сохраняем файл и закрываем. Дополнительные тонкие настройки указываем в файле /etc/ppp/pptpd-options:

Sudo nano /etc/ppp/pptpd-options

В первую очередь убеждаемся, что у нас раскомментированы строки, запрещающие использование старых и небезопасных методов аутентификации:

Refuse-pap refuse-chap refuse-mschap

Также проверяем, что опция proxyarp включена (соответствующая строка раскомментирована) и дополнительно для разрешения или запрета множественных подключений одного пользователя комментируем (разрешение) или раскомментируем (запрет) опцию lock.

Также сохраняем файл и закрываем. Осталось создать пользователей:

Sudo nano /etc/ppp/chap-secrets

На каждого пользователя VPN отводится одна строка, в которой последовательно (разделитель – пробел) указывается его имя, удалённый адрес, пароль и локальный адрес.

Удалённый адрес можно указывать, если у пользователя есть внешний статический IP и только он будет использоваться, иначе лучше указать звёздочку, чтобы точно можно было принять подключение. Локальный нужно указать, если вы хотите, чтобы пользователю выделялся один и тот же IP-адрес в виртуальной сети. Например:

User1 * password1 * user2 11.22.33.44 password2 * user3 * password3 10.10.10.10

Для пользователя user1 подключения будут приниматься с любого внешнего адреса, локальный будет выделяться первый доступный. Для user2 будет выделять первый доступный локальный адрес, но подключения будут приниматься только с адреса 11.22.33.44. Для user3 подключения принимаются из любой точки, но локальный адрес всегда будет выделяться 10.10.10.10, который мы для него зарезервировали.

На этом настройка VPN-сервера закончена, перезапускаем его (под Linux перезагружать компьютер не нужно):

Sudo service pptpd restart

Настройка VPN клиентов

Клиентскую часть можно настроить под любой операционной системой, я буду использовать в качестве примера Ubuntu Linux 16.04 .

На клиентском компьютере открываем сетевые соединения (на скриншотах приведено для Ubuntu + Cinnamon, для GNOME делается аналогично, в Kubuntu похоже и сложностей не вызовет). Нажимаем кнопку «Добавить» и выбираем PPTP-соединение:

Имя VPN-подключения можно оставить стандартное, а можно указать удобное и понятное для вас – это дело вкуса. Вводим в поле «шлюз» внешний IP-адрес сервера, к которому мы подключаемся (указан при настройке в опции «listen»), ниже имя и пароль. Справа в поле «Пароль» предварительно нужно выбрать вариант «Сохранить пароль для этого пользователя»):

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

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

Настройка доступа в интернет через VPN

На vpn-сервере вводим следующие команды:

Iptables -t nat -A POSTROUTING -o eth0 -s 10.10.10.1/24 -j MASQUERADE iptables -A FORWARD -s 10.10.10.1/24 -j ACCEPT iptables -A FORWARD -d 10.10.10.1/24 -j ACCEPT

где 10.10.10.1/24 – локальный адрес сервера и маска сети.

После этого сохраняем изменения, чтобы они работали и после перезагрузки сервера:

Iptables-save

И применяем все изменения:

Iptables-apply

После этого у вас появится доступ в интернет. Если зайти на какой-либо сайт, отображающий ваш IP-адрес, вы увидите внешний адрес сервера, а не свой (если они не совпадают).

Напоминаю, что ответственность за последствия своих действий несёте только вы.

Хотите иметь безопасный и защищённый доступ в Интернет с вашего смартфона или ноутбука при подключении к незащищённой сети через WiFi отеля или кафе? Виртуальная частная сеть (Virtual Private Network, VPN) позволяет использовать незащищённые сети таким образом, как если бы вы работали в частной сети. Весь ваш трафик в этом случае проходит через VPN-сервер.

В комбинации с использованием HTTPS-соединения описываемые далее настройки позволят вам обезопасить свою приватную информацию, например, логины и пароли, а также ваши покупки. Более того, вы сможете обходить региональные ограничения и цензуру, а также скрывать своё местонахождение и незашифрованный HTTP-трафик от незащищённой сети.

Передать профиль с компьютера на телефон можно подключив Android устройство к компьютеру через USB и скопировав файл. Вы также можете переместить файл профиля с помощью SD карты, скопировав профиль на карту и вставив карту в Android устройство.

Запустите приложение OpenVPN и нажмите на меню для импорта профиля.

Соединение

Для установки соединения нажмите кнопку Connect . Вам будет задан вопрос, доверяете ли вы приложению OpenVPN. Ответьте OK для установки соединения. Для остановки соединения зайдите в приложение OpenVPN и выберите Disconnect .

Шаг 13. Тестирование VPN соединения

После того, как всё установлено и настроено, убедимся, что всё работает правильно. Без установки соединения с VPN откройте браузер и зайдите на DNSLeakTest .

Этот сайт вернёт IP адрес, назначенный вам вашим Интернет-провайдером. Для того, чтобы проверить, какие DNS сервера используются, нажмите на Extended Test .

Теперь установите соединение, используя ваш VPN клиент и обновите страницу в браузере. Выдаваемый вам IP адрес должен быть совершенно другим. Теперь для всех в Интернете вы используете этот новый IP адрес. Нажмите Extended Test ещё раз, чтобы проверить ваши настройки DNS и убедитесь, что теперь вы используете DNS сервера вашего VPN.

Шаг 14. Отзыв клиентских сертификатов

Время от времени, вам может понадобиться отозвать клиентский сертификат для предотвращения доступа к серверу VPN&

Для этого зайдите в вашу директорию центра сертификации и введите команды:

  • cd ~/openvpn-ca
  • source vars
  • ./revoke-full client3

Вывод результатов работы этой команды будет оканчиваться ошибкой 23. Это нормально. В результате работы будет создан файл crl.pem в директории keys с необходимой для отзыва сертификата информацией.

Переместите этот файл в директорию /etc/openvpn:

  • sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
  • sudo nano /etc/openvpn/server.conf

Добавьте в конец файла строку crl-verify . Сервер OpenVPN будет проверять список отозванных сертификатов каждый раз, когда кто-то устанавливает соединение с сервером.

/etc/openvpn/server.conf

Crl-verify crl.pem

Сохраните и закройте файл.

Перезапустите OpenVPN для завершения процесса отзыва сертификата:

  • sudo systemctl restart openvpn@server

Теперь клиент не сможет устанавливать соединение с сервером OpenVPN используя старый сертификат.

Для отзыва дополнительных сертификатов выполните следующие шаги:

    Сгенерируйте новый список отозванных сертификатов используя команду source vars в директории ~/openvpn-ca и выполняя команду revoke-full с именем клиента.

    Скопируйте новый список отозванных сертификатов в директорию /etc/openvpn перезаписав тем самым старый список.

    Перезапустите сервис OpenVPN.

Эта процедура может быть использована для отзыва любых созданных вами ранее сертификатов.

Заключение

Поздравляем! Теперь вы можете безопасно выходить в Интернет, весь ваш трафик защищён от прослушки цензоров и злоумышленников.

Для конфигурации дополнительных клиентов повторите шаги 6 и 11-13 для каждого нового устройства. Для отзыва доступа того или иного клиента используйте шаг 14 .

Рассмотрев в предыдущих частях теоретические вопросы перейдем к практической реализации. Сегодня мы рассмотрим создание VPN сервера PPTP на платформе Ubuntu Server. Данный материал рассчитан на читателей, имеющих навыки работы с Linux, поэтому мы не будем отвлекаться на вещи описанные нами в других статьях, таких как настройку сети и т.п. Если вы испытываете затруднения - предварительно изучите другие наши материалы.

Практическое знакомство с VPN мы начнем с PPTP, как наиболее простого в реализации. Однако следует помнить о том, что это слабозащищенный протокол и его не следует использовать для доступа к критически важным данным.

Рассмотрим схему, которую мы создали в нашей тестовой лаборатории для практического знакомства с данной технологией:

У нас имеется локальная сеть 10.0.0.0/24 с сервером терминалов 10.0.0.2 и 10.0.0.1, который будет выполнять функции VPN сервера, для VPN мы зарезервировали сеть 10.0.1.0/24. Внешний интерфейс сервера имеет условный выделенный IP адрес X.X.X.X. Наша цель - предоставить удаленным клиентам доступ к терминальному серверу и общим ресурсам на нем.

Настройка сервера PPTP

Установим пакет pptpd реализующий функционал PPTP VPN:

Sudo apt-get install pptpd

Теперь откроем файл /etc/pptpd.conf и зададим основные настройки VPN сервера. Перейдем в самый конец файла, где укажем адрес сервера в VPN сети:

Localip 10.0.1.1

И диапазон адресов для выдачи клиентам:

Remoteip 10.0.1.200-250

Адресов нужно выделить не меньше, чем возможных одновременных соединений, лучше с небольшим запасом, так как их увеличение без перезапуска pptpd невозможно. Также находим и раскомментируем строку:

Bcrelay eth1

Это позволит передавать VPN клиентам широковещательные пакеты внутренней сети.

Также можно использовать опции listen и speed , первая позволяет указать IP адрес локального интерфейса для прослушивания входящих PPTP соединений, второй указать скорость VPN соединений в бит/с. Например разрешим серверу принимать PPTP соединения только с внешнего интерфейса:

Listen X.X.X.X

Более тонкие настройки находятся в файле /etc/ppp/pptpd-options . Настройки по умолчанию вполне соответствуют нашим требованиям, однако кратко рассмотрим некоторые из них, чтобы вы имели представление о их назначении.

Секция #Encryption отвечает за шифрование данных и проверку подлинности. Данные опции запрещают использование устаревших и небезопасных протоколов PAP, CHAP и MS-CHAP:

Refuse-pap
refuse-chap
refuse-mschap

Require-mschap-v2
require-mppe-128

Следующая секция #Network and Routing , здесь следует обратить внимание на опцию ms-dns , которая позволяет использовать DNS сервер во внутренней сети. Это может быть полезно при доменной структуре сети или наличия в ней DNS сервера который содержит имена всех ПК сети, что дает возможность обращаться к компьютерам по их именам, а не только по IP. В нашем случае данная опция бесполезна и закомментирована. Подобным образом можно задать и адрес WINS сервера опцией ms-wins .

Здесь же находится опция proxyarp , включающая, как несложно догадаться из названия, поддержку сервером Proxy ARP.

В секции #Miscellaneous содержится опция lock , которая ограничивает клиента одним подключением.

Ivanov * 123 *
petrov * 456 10.0.1.201

Первая запись позволяет подключаться к серверу пользователю ivanov c паролем 123 и присваивает ему произвольный IP адрес, вторая создает пользователя petrov с паролем 456, которому при подключении будет присваиваться постоянный адрес 10.0.1.201.

Перезапускаем pptpd :

Sudo /etc/init.d/pptpd restart

Важное замечание! Если pptpd не хочет перезапускаться, зависая на старте, а в /var/log/syslog добавляя строку long config file line ignored обязательно добавьте в конец файла /etc/pptpd.conf перенос строки.

Наш сервер готов к работе.

Настройка клиентских ПК

В общем случае достаточно настроить VPN соединение с опциями по умолчанию. Однако мы советуем явно указать тип соединения и отключить лишние протоколы шифрования.

Далее, в зависимости от структуры сети, необходимо указать статические маршруты и основной шлюз. Эти вопросы подробно разбирались в предыдущих частях.

Устанавливаем VPN соединение и пробуем пропинговать какой либо ПК в локальной сети, мы без каких либо затруднений получили доступ к терминальному серверу:

Теперь еще одно важное дополнение. В большинстве случаев доступ к компьютерам локальной сети будет возможен только по IP адресам, т.е. путь \\10.0.0.2 будет работать, а \\SERVER - нет. Это может оказаться неудобным и непривычным для пользователей. Существует несколько способов решения данной проблемы.

Если локальная сеть имеет доменную структуру, достаточно указать DNS сервером для VPN подключения DNS сервер контроллера домена. Воспользуйтесь опцией ms-dns в /etc/ppp/pptpd-options сервера и данные настройки будут получены клиентом автоматически.

Если DNS сервер в локальной сети отсутствует, то можно создать и использовать WINS сервер, информацию о нем также можно автоматически передавать клиентам при помощи опции ms-wins . И наконец, если удаленных клиентов немного, использовать на клиентских ПК файлы hosts (C:\Windows\System32\drivers\etc\hosts), куда следует добавить строки вида.

Похожие статьи