Рассмотрев в предыдущих частях теоретические вопросы перейдем к практической реализации. Сегодня мы рассмотрим создание 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), куда следует добавить строки вида.
Хотите иметь безопасный и защищённый доступ в Интернет с вашего смартфона или ноутбука при подключении к незащищённой сети через 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-соединения в Debian
Здесь представлен пример настройки VPN-подключения для Debian Linux через командную строку. Но не менее полезна она будет обладателям дистрибутивов, основанных на Debian, например, Ubuntu.
- Для начала Вам понадобится пакет pptp:
# apt-get install pptp-linux - Редактируем (или создаем, если его нет) файл /etc/ppp/options.pptp. В нем должны быть следующие параметры:
lock
noauth
nobsdcomp
nodeflate - Далее вам необходимо добавить в файл /etc/ppp/chap-secrets строку вида:
“имя пользователя” PPTP “пароль” * - Создайте файл /etc/ppp/peers/XXX (XXX - название сети). В него впишите следующее:
pty "pptp vpn.XXX.ru --nolaunchpppd"
name “имя пользователя”
remotename PPTP
file /etc/ppp/options.pptp
defaultroute
“имя пользователя” и “пароль” необходимо заменить Вашими именем пользователя и паролем без кавычек, так, как указанно в Вашем договоре. vpn.XXX.ru - адрес vpn-сервера - узнаете у провайдера. - Для автоматической замены дефолтного роута создаем файл /etc/ppp/ip-up.d/routes-up:
# su touch /etc/ppp/ip-up.d/routes-up
# su chown a+x /etc/ppp/ip-up.d/routes-upИ вписываем в него следующее:
#!/bin/sh
/sbin/route del default
/sbin/route add default dev ppp0
Создаем файл /etc/ppp/ip-down.d/routes-down:
# su touch /etc/ppp/ip-down.d/routes-down
# su chown a+x /etc/ppp/ip-down.d/routes-down
И вписываем в него следующее:
#!/bin/sh
/sbin/route del default
/sbin/route add default dev eth0 - Теперь можете подключаться командой:
# su pon XXX
Для подробного вывода информации о процессе подключения наберите:
# su pon XXX debug dump logfd 2 nodetach
Проверить подключены ли вы к VPN можно набрав команду ifconfig. Если в ее выводе есть секция ppp0, то вы подключены и можете начинать работу с Интернетом. Для отключения нажмите ctrl+c, либо наберите:
# su poff XXX - Для того, что ваш компьютер получал роуты от нашего сервера, в файле /etc/dhcp3/dhclient.conf должны присутствовать такие строки:
#
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option ms-classless-static-routes code 249 = array of unsigned integer 8;
#
request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, static-route, rfc3442-classless-static-routes, ms-classless-static-routes;
# - Для автоматического подключения к интернету при загрузке операционной системы создадим файл/etc/init.d/XXX
# touch /etc/init.d/XXX
# su chown a+x /etc/init.d/XXX
# su ln -s /etc/init.d/XXX /etc/rc2.d/S99XXX
Впишем него следующее:
#!/bin/sh
su /usr/bin/pon XXX
Во всех командах XXX - это название вашей сети.
Шаг 1
Открываем командную строку
Наиболее простой способ это открыть терминал путем одновременного нажатия клавиш Ctrl + Alt + T, но можно и запустить Терминал из Главного меню.
Шаг 2Чтобы установить OpenVPN Network Manager плагин, вводим в командную строку следующую команду без кавычек: "sudo apt-get install network-manager-openvpn-gnome". Нажмите Enter.
Шаг 3Устанавливаем OpenVPN Network Manager плагин
При необходимости введите пароль от системы и снова нажмите Enter.
Шаг 4Устанавливаем OpenVPN Network Manager плагин
Введите "Y", это значит, что вы согласны осуществить установку, и нажмите Enter.
Шаг 5Скачиваем сертификат
В личном кабинете у вас сформировался сертификат, для установки необходимо его скачать. Перейдите в Мои услуги "VPN->My services" и нажмите "VPN clients".
Шаг 6Скачиваем сертификат
Нажмите на иконку OpenVPN, чтобы скачать сертификат.
Шаг 7Скачиваем сертификат
На вопрос "Would you like to save this file?", нажмите "Save File". Начнется скачивание файла.
Шаг 8Скачиваем сертификат
Так как у сертификатов длинные названия, для удобства можно его предварительно переименовать на более короткое.
Шаг 9Импорт конфигурации
Импортировать конфигурацию OpenVPN можно посредством следующей команды "sudo openvpn --config /home/my/Downloads/client.ovpn". Где "/home/my/Downloads" путь до папки, в которой расположен сертификат, а client.ovpn наименование самого сертификата. Нажмите Enter.
Шаг 10Импорт конфигурации
При необходимости введите пароль от системы и снова нажмите Enter. VPN подключен, теперь можно закрыть терминал, на работу VPN это не повлияет.
Шаг 11Отключение от сети
Если вы хотите отключить VPN, введите в терминале команду "sudo killall openvpn". Нажмите Enter.
Шаг 12Отключение от сети
При необходимости введите пароль от системы и снова нажмите Enter. ВПН теперь будет отключен.
Шаг 13Пользуемся всеми преимуществами VPN
Поздравляем! У Вас получилось настроить VPN на Ubuntu! Теперь у Вас есть защищенный доступ к сети Интернет и новый IP!
Почему стоит скачать VPN на Linux?
- Вы получите надежное соединение, стабильную скорость и доступ к любимому контенту
- Установка расширения VPN для браузера распространяется только на веб-страницы, они не подходят для игр и скачивания торрентов
- VPN для Linux помогает обеспечивать максимальный уровень анонимности для пользователей, заменяя реальный IP на IP-адрес сервера VPN
Настройка с помощью Network Manager"а
Как бы там ни было, но все таки опиши настройку впн с помощью network-manager"а. Эта настройка вполне подойдет тем, у кого в подключении к сети используется автоматическое получение IP адреса с помощью DHCP.
1. Устанавливаем два необходимых нам пакета:
#apt-get install pptp-linux network-manager-pptp
Так как этих пакетов по умолчанию нет на диске с убунтой, а впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, то советую заранее припастись этими пакетами с официального репозитория. Для этого заходим на сайт packages.ubuntu.com/ , там ищем два эти пакета, закачиваем их и в дальнейшем устанавливаем на нужной нам машине.
2. Если в аплете Network Manager не появился пункт «VPN соединения»(VPN Connections) или он не будет открываться, то надо перелогиниться или даже лучше - перезагрузиться.
3. Нажимаем левой клавишей мыши (по правой кнопке вызывается другое меню) по значку Network Manager"а и в выпавшем меню выбираем «VPN соединения» - «Настройка VPN»(Configure VPN). Добавляем новое соединение и выставляем все нужные опции для этого соединения.
4. После этого, ваше соединение должно появиться в меню «VPN соединения», если оно вдруг не появилось - перелогиньтесь или перезагрузитесь (ну что я могу поделать, на столько, все еще, сырой этот network-manager).
5. Все теперь можете подключаться к созданному вами впн соединению (а также и отключаться, выбрав пункт меню в Network Manager"е).
#apt-get install pptp-linux
Как я уже описывал выше в разделе установки с помощью network-manager"а, впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, поэтому советую заранее припастись этим пакетом с официального репозитория packages.ubuntu.com/.
2. Редактируем файл options.pptp:
#nano /etc/ppp/options.pptp
lock
noauth
nobsdcomp
nodeflate
persist
Не буду описывать каждый из параметров, опишу лишь некоторые:
persist - этот парметр пытается по новой открыть соединение, когда оно закрывается;
nodeflate - не использовать deflate сжатие (хотя говорят с ним работает быстрее, не знаю - не проверял).
Также, если у вас в соединении используется шифрование, то добавляем одну из строк, в зависимости от типа шифрования - require-mschap-v2, require-mppe-40, require-mppe-128, require-mppe.
3. Создаем файл подключения /etc/ppp/peers/vpn (название vpn можете заменить на любое другое, но если замените, не забывайте менять его дальше в этой статье)
#nano /etc/ppp/peers/vpn
Вставляем туда следующие строки:
maxfail 0
lcp-echo-interval 60
lcp-echo-failure 4
defaultroute
pty "pptp vpn.ava.net.ua --nolaunchpppd"
name sukochev
remotename PPTP
+chap
file /etc/ppp/options.pptp
ipparam vpn
Внимание!!!
Обязательно замените следующие опции на ваши:
Вместо vpn.ava.net.ua впишите адрес вашего впн сервера (можно использовать IP сервера). Вместо sukochev вставляете ваш логин подключения.
Опишу некоторые параметры:
maxfail 0 - всегда пытаться подключиться при отсутствии связи;
lcp-echo-interval - интервал времени, по прошествии которого, происходит опрос удаленной стороны;
lcp-echo-failure - количество не отвеченных запросов удаленной стороны, после чего система считает, что нас отключили;
defaultroute - устанавливаем маршрут по умолчанию;
+chap - тип аутентификации. Помимо +chap может использоваться тип +pap.
file - читать дополнительные настройки из заданного файла.
Также можно добавить, если нужно, следующие параметры:
deflate 15,15 - использовать deflate сжатие (в файле options.pptp не должно быть параметра nodeflate);
mtu - максимальный размер передаваемого пакета (изменяют этот параметр обычно тогда, когда часто отключается соединение или не открываются некоторые сайты);
mru - максимальный размер получаемого пакета.
4. Редактируем файл /etc/ppp/chap-secrets (если используется тип аутентификации PAP, то /etc/ppp/pap-secrets соответственно)
#nano /etc/ppp/chap-secrets
Вставляем туда строку, типа:
Sukochev PPTP password *
Внимание!!! Замените sukochev на свой логин, а password на ваш пароль для подключения.
5. Если это необходимо, то прописываем в файл /etc/network/interfaces нужные роуты. Например у меня роуты прописаны для того, чтобы при включенном впн-подключении я мог пользоваться местной локальной сетью. Вот пример моих роутов (те что начинаются на up route), у вас они естественно будут отличаться:
Auto eth1 iface eth1 inet dhcp up route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1 up route add -net 10.3.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1
Не забываем после изменения файла /etc/network/interfaces перезапустить сетевые подключения:
#/etc/init.d/networking restart
6. Теперь можете включать и выключать впн подключение с помощью следующих команд:
Включение
Выключение
Автоматическое подключение VPN при загрузке системы
Для этого редактируем файл /etc/network/interfaces
#nano /etc/network/interfaces
И вставляем в конец фйла следующие строки:
auto ppp0
iface ppp0 inet ppp
provider vpn
pre-up ip link set eth1 up
up route del default
up route add default dev ppp0
Где eth1 - это интерфейс сетевого устройства, через которое подключается впн-соединение, а vpn - название впн-соединения, которое вы создали в папке /etc/ppp/peers/.