Соединение vpn на отдельном интерфейсе в ubuntu. Настройка VPN подключения в Linux


Настройка VPN-соединения в Debian

Здесь представлен пример настройки VPN-подключения для Debian Linux через командную строку. Но не менее полезна она будет обладателям дистрибутивов, основанных на Debian, например, Ubuntu.

  1. Для начала Вам понадобится пакет pptp:
    # apt-get install pptp-linux
  2. Редактируем (или создаем, если его нет) файл /etc/ppp/options.pptp. В нем должны быть следующие параметры:
    lock
    noauth
    nobsdcomp
    nodeflate
  3. Далее вам необходимо добавить в файл /etc/ppp/chap-secrets строку вида:
    “имя пользователя” PPTP “пароль” *
  4. Создайте файл /etc/ppp/peers/XXX (XXX - название сети). В него впишите следующее:
    pty "pptp vpn.XXX.ru --nolaunchpppd"
    name “имя пользователя”
    remotename PPTP
    file /etc/ppp/options.pptp
    defaultroute
    “имя пользователя” и “пароль” необходимо заменить Вашими именем пользователя и паролем без кавычек, так, как указанно в Вашем договоре. vpn.XXX.ru - адрес vpn-сервера - узнаете у провайдера.
  5. Для автоматической замены дефолтного роута создаем файл /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

  6. Теперь можете подключаться командой:
    # su pon XXX
    Для подробного вывода информации о процессе подключения наберите:
    # su pon XXX debug dump logfd 2 nodetach
    Проверить подключены ли вы к VPN можно набрав команду ifconfig. Если в ее выводе есть секция ppp0, то вы подключены и можете начинать работу с Интернетом. Для отключения нажмите ctrl+c, либо наберите:
    # su poff XXX
  7. Для того, что ваш компьютер получал роуты от нашего сервера, в файле /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;
    #
  8. Для автоматического подключения к интернету при загрузке операционной системы создадим файл/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 - это название вашей сети.

Рассмотрев в предыдущих частях теоретические вопросы перейдем к практической реализации. Сегодня мы рассмотрим создание 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), куда следует добавить строки вида.

Инструкция

Проверьте, существует ли поддержка протокола PPP в ядре вашей операционной системы. Проще всего это сделать, просмотрев значения опций с префиксом CONFIG_PPP в файле текущей конфигурации ядра. Обычно он устанавливается в каталог /boot и имеет имя, начинающееся с config. Узнайте имя данного файла при помощи команды
ls /boot
или
ls /boot | grep conf
Выведите нужные строки командой cat, осуществив фильтрацию при помощи grep. Например:
cat /boot/config-2.6.30-std-def-alt15 | grep PPP
Проанализируйте строки, содержащие опции CONFIG_PPP, CONFIG_PPP_ASYNC, CONFIG_PPP_SYNC_TTY. Если перед ними нет символа #, поддержка соответствующего функционала имеется (при значениях m - в виде внешнего модуля, при значениях y - включена в ядро).

Проверьте, инсталлировано ли в системе клиентское программное обеспечение для установления VPN-соединений. Нужный пакет обычно носит имя, начинающееся с pptp. Используйте apt-cache с опцией search для поиска нужного пакета в доступных репозиториях и rpm с опцией -qa для того, чтобы проверить, установлен ли пакет. При работе в графической среде может иметь смысл воспользоваться такими программами, как synaptic.

Произведите инсталляцию недостающего программного обеспечения. Используйте подходящие менеджеры пакетов (apt-get, rpm в консоли, synaptic в графической среде, и т.д.). Если была осуществлена инсталляция пакета ppp с модулями ядра для поддержки соответствующего протокола, перезагрузите компьютер.

Попробуйте настроить VPN при помощи скриптов конфигурирования, таких как pptp-command или pptpsetup. Часто они входят в состав пакетов с клиентским ПО для установки VPN-соединений. Для получения справки по параметрам командной строки данных утилит используйте их запуск с опцией --help. Например:
pptpsetup --help
Если конфигурирующие скрипты установлены не были, перейдите к следующему шагу для осуществления ручной настройки VPN.

Создайте каталог /etc/ppp, а в нем - файл с именем chap-secrets. Откройте файл в текстовом редакторе. Добавьте в него строку вида:
LOGIN SERVER PASSWORD *
Значения LOGIN и PASSWORD - имя пользователя и пароль. Они должны предоставляться провайдером услуг доступа к VPN. Вместо SERVER укажите произвольное имя соединения или *.

Создайте каталог /etc/ppp/peers. Создайте в нем файл, имеющий имя, совпадающее со значением SERVER из предыдущего шага (или произвольное имя, если было указано значение *). Отредактируйте этот файл, добавив в него информацию вида:
pty "pptp SERVER --nolaunchpppd"
name LOGIN
ipparam SERVER
remotename SERVER
lock
noauth
nodeflate
nobsdcomp
Значения LOGIN и SERVER здесь - те же, что и в шаге 5. На этом настройку VPN в Linux можно считать законченной.

Шаг 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/.