Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

настройка_vpn_pptp_соединения_в_debian_squeeze [2015/02/23 06:52] (текущий)
vovka Перенос со старой wiki
Строка 1: Строка 1:
 +Статья написана по мотивам [[Настройка VPN (PPTP) соединения в ArchLinux]] и переработана для Debian. Процесс аналогичен для релизов Etch, Lenny, Squeeze и Wheezy
  
 +**//​Дано://​** \\  ​
 +  -  Компьютер с установленной системой Debian;
 +  -  Провайдер Интернет-услуг,​ предоставляющий доступ по VPN (PPTP) с выдачей реального ip-адреса пользователю;​
 +  -  Провайдер автоматически назначает ip-адрес компьютерам пользователей в транспортной сети;
 +  -  В транспортной сети не используется основной шлюз.
 +**//​Задача://​** настроить VPN-соединение для выхода в сеть Интернет через провайдера.\\  ​
 +**//​Уровень пользователя://​** средний,​ умеющий работать в консоли,​ с файловыми менеджерами и с текстовыми редакторами.\\ ​  
 +**//​Решение://​**\\  ​
 +
 +В таких сетях, где провайдер предосталяет услуги,​ обычно создаётся транспортная сеть, где размещены,​ например файловые или игровые серверы. К этой же сети подключаются и пользователи,​ но для доступа в сеть Интернет,​ пользователь должен настроить как бы "​тоннель во внешний мир Интернета"​ с помощью ​ VPN-соединения.\\  ​
 +Конечно,​ у разных провайдеров свои способы предоставления услуг доступа в Интернет,​ но остановимся на таком, что предоставляет доступ посредством VPN PPTP.
 +
 +Итак, для настройки VPN-соединения,​ провайдер должен выдать параметры этого соединения. Предположим они такие:​\\  ​
 +|**логин:​** | user |
 +|**пароль:​** |user-007 |
 +|**сервер доступа:​** ​ | 10.0.0.1 или vpn.provider.ru |
 +|**тип vpn-соединения:​** ​ |PPTP |
 +|**тип аутентификации:​** ​ |CHAP, MS-CHAP |
 +|**параметры TCP\IP: IP-адрес соединения,​ DNS-сервера** ​ |автоматически |
 +|**шифрование данных:​** ​ |нет |
 +|**компрессия данных:​** ​ |нет |
 +
 +Немного о строке "​**параметры TCP\IP - автоматически**"​ - это означает,​ что провайдер сам выдаёт адрес и дополнительные сетевые параметры для подключения. Пользователю в этом случае,​ в параметрах TCP\IP для этого VPN-подключения ничего настраивать не надо.
 +
 +
 +=====  Установка нужных пакетов ​ =====
 +Для настройки собственно VPN-соединения,​ потребуется доустановить пакеты:​ //ppp//, //​pptp-linux//​ и некоторые зависимости. Это можно проделать из Synaptic или из консоли:​
 +<​code>​
 + # apt-get install ppp pptp-linux ​
 +</​code>​
 +Менеджер пакетов установит необходимые и ещё несколько зависимых пакетов. Эти пакеты находятся на установочном компакт-диске,​ поэтому менеджер попросит вставить этот диск. ​
 +
 +
 +=====  Настройка ​ =====
 +Предполагается,​ что транспортная сеть на компьютере уже настроена и сетевой адаптер имеет адрес 10.0.0.25, который получен автоматически по DHCP или настроен пользователем вручную.
 +
 +После установки пакета ppp, будет создан каталог /etc/ppp , где собственно и будут содержаться файлы, управляющие PPP- и в частности VPN- -соединениями.
 +
 +Теперь нужно создать или изменить некоторые файлы. Естественно,​ это нужно делать из под учётной записи root`а.  ​
 +
 +Редактируем или создаём файл конфигурации собственно соединения. Назовём его "​provider"​ и поместим в /​etc/​ppp/​peers Пример файла:
 +<file bash peers>
 +pty "pptp 10.0.0.1 --nolaunchpppd"​
 +user "​user"​
 +password "​user-007"​
 +require-mschap
 +noauth
 +nobsdcomp
 +nodeflate
 +nomppe
 +mtu 1372
 +mru 1372
 +defaultroute
 +usepeerdns
 +lcp-echo-failure 10
 +persist
 +maxfail 0
 +holdoff 15
 +</​file>​
 +
 +Несколько слов о том, что значат все эти непонятные опции:
 +|pty "pptp 10.0.0.1 --nolaunchpppd"​ |строка говорит программе запустить соединение с VPN-сервером провайдера с адресом 10.0.0.1. Если провайдер указал вместо ​ IP-адреса,​ символьное имя, строку надо модифицировать так: pty "pptp vpn.provider.ru --nolaunchpppd"​ |
 +|user "​user"​ |логин для соединения | 
 +|password "​user-007"​ |это пароль для соединения |
 +|require-mschap ​ |строка говорит,​ что нужно использовать протокол аутентификации MS-CHAP |
 +|noauth |строка запрещает использовать обратную аутентификацию |
 +|nobsdcomp |отключаем сжатие (компрессию данных,​ идущих в VPN-соединении) |
 +|nodeflate |дополнительный параметр компрессии - отключаем |
 +|nomppe |отключаем шифрование данных |
 +|mtu 1372  |размер отсылаемого пакета данных с компьютера пользователя. Если провайдер не уточняет размер пакета,​ рекомендуется выставить именно такой |
 +|mru 1372  |это размер принимаемого пакета |
 +|defaultroute |указывает программе устанавливать для компьютера основной маршрут,​ выдаваемый провайдером для VPN-соединения* |
 +|usepeerdns |переключить параметры DNS-сервера с глобальных (/​etc/​resolv.conf) на те, что выдаёт провайдер при установке соединения. При завершении соединения,​ глобальные параметры возвращаются обратно. |
 +|lcp-echo-failure 10 |это количество попыток проверки активности канала,​ после которого соединение отключается,​ в случае,​ если проверка оказалась неуспешной |
 +|persist |после аварийного разрыва канала,​ всё-равно пытаться создать соединение |
 +|maxfail 0 |количество попыток восстановить соединение,​ 0 - пробовать бесконечно |
 +|holdoff 15 |пауза между попытками (требуется для завершения всех процессов на стороне провайдера,​ если разрыв произошёл аварийно |
 +//​Прим.//​\\  ​
 +  * Опция **defaultroute** требует дополнительных комментариев. Если провайдер предоставляет услуги доступа в сеть Интернет через NAT **И** при этом не устанавливает в транспортной сети основной шлюз (для сетевого адаптера компьютера),​ то опцию следует выставить. Если в транспортной сети основной шлюз указывается,​ то опция **defaultroute** не сработает и основной шлюз в VPN-сети не установится.
 +  * Опция **usepeerdns** нужна только когда провайдер не задаёт адрес DNS-сервера на адаптере транспортного подключения через DHCP или ручную настройку.
 +
 +Когда файл создан (модифицирован) и скопирован в /etc/peers , нужно выставить необходимые права доступа для ограничения доступа к учётным данным,​ хранимым в файле. Читать и модифицировать файл следует разрешить только пользоватею root. В консоли,​ это делается примерно так:
 +
 +Переходим в каталог и просматриваем его:
 +<​code>​
 +# cd /​etc/​ppp/​peers/​
 +# ls -l
 +total 1
 +-rw-rw-rw- 1 user user 221 Sep 19 11:08 provider
 +<​code>​
 +Изменяем владельца файла provider, а затем меняем права доступа:​
 +<​code>​
 +# chown root:root provider
 +# chmod 600 provider
 +</​code>​
 +Проверяем результат:​
 +<​code>​
 +# ls -l</​font><​nowiki>​
 +-rw------- 1 root root 221 Sep 19 11:08 provider
 +</​code>​
 +Теперь доступ к учётным данным может получить только пользователь root. Можно сделать несколько файлов с разными именами и параметрами для доступа к больше чем одному провайдеру и запускать соединение к нужному. В примере выше, были даны базовые опции конфигурации VPN. Если Вы хотите углубиться в настройку и больше узнать об опциях,​ загляните в man pppd. 
 +
 +Пробуем запустить наше соединение для начала от имени root`а:
 +
 +<​code>​
 +# pon provider
 +</​code>​
 +Как Вы уже догадались,​ pon - активирует соединение с провайдером,​ сконфигурированным в файле /​etc/​ppp/​peers/​providers
 +
 +Через 3...5 секунд читаем последние события лога /​var/​log/​daemon.log на предмет ошибок. Это можно сделать через команду tail или воспользоваться файловым менеджером типа Midnight Commander, запущенным от имени root`а. Последние события лога будут выглядеть примерно так:
 +<​code>​
 +...
 +Dec 27 22:32:47 comp pppd[[3151]]:​ pppd 2.4.5 started by root, uid 0
 +Dec 27 22:32:47 comp pppd[[3151]]:​ Using interface ppp0
 +Dec 27 22:32:47 comp pppd[[3151]]:​ Connect: ppp0 <--> /dev/pts/4
 +Dec 27 22:32:47 comp pptp[[3152]]:​ anon log[[main:​pptp.c:​314]]:​ The synchronous pptp option is NOT activated
 +Dec 27 22:32:47 comp pptp[[3156]]:​ anon log[[ctrlp_rep:​pptp_ctrl.c:​251]]:​ Sent control packet type is 1 '​Start-Control-Connection-Request'​
 +Dec 27 22:32:47 comp pptp[[3156]]:​ anon log[[ctrlp_disp:​pptp_ctrl.c:​739]]:​ Received Start Control Connection Reply
 +Dec 27 22:32:47 comp pptp[[3156]]:​ anon log[[ctrlp_disp:​pptp_ctrl.c:​773]]:​ Client connection established.
 +Dec 27 22:32:48 comp pptp[[3156]]:​ anon log[[ctrlp_rep:​pptp_ctrl.c:​251]]:​ Sent control packet type is 7 '​Outgoing-Call-Request'​
 +Dec 27 22:32:48 comp pptp[[3156]]:​ anon log[[ctrlp_disp:​pptp_ctrl.c:​858]]:​ Received Outgoing Call Reply.
 +Dec 27 22:32:48 comp pptp[[3156]]:​ anon log[[ctrlp_disp:​pptp_ctrl.c:​897]]:​ Outgoing call established (call ID 0, peer's call ID 27136).
 +Dec 27 22:32:52 comp pppd[[3151]]:​ CHAP authentication succeeded
 +Dec 27 22:32:52 comp pppd[[3151]]:​ CHAP authentication succeeded
 +Dec 27 22:32:52 comp pppd[[3151]]:​ Cannot determine ethernet address for proxy ARP
 +Dec 27 22:32:52 comp pppd[[3151]]:​ local  IP address 172.16.1.81
 +Dec 27 22:32:52 comp pppd[[3151]]:​ remote IP address 172.16.0.1
 +</​code>​
 +- это лог нормально состоявшегося соединения.
 +
 +Теперь проверим,​ появился ли в списке сетевых адаптеров VPN-адаптер. Сделать это можно командой ifconfig без параметров:​
 +<​code>​
 +# ifconfig
 +eth0      Link encap:​Ethernet ​ HWaddr 00:​30:​25:​B1:​9E:​A6  ​
 +          inet addr:​10.0.0.25 ​ Bcast:​10.255.255.255 ​ Mask:​255.0.0.0
 +          UP BROADCAST RUNNING MULTICAST ​ MTU:​1500 ​ Metric:1
 +          RX packets:​21554 errors:0 dropped:0 overruns:0 frame:0
 +          TX packets:​15437 errors:0 dropped:0 overruns:0 carrier:0
 +          collisions:​0 txqueuelen:​1000 ​
 +          RX bytes:​7894630 (7.5 Mb)  TX bytes:​1877575 (1.7 Mb)
 +          Interrupt:​20 Memory:​d0300000-d0320000 ​
 +
 +lo        Link encap:Local Loopback  ​
 +          inet addr:​127.0.0.1 ​ Mask:​255.0.0.0
 +          inet6 addr: ::1/128 Scope:Host
 +          UP LOOPBACK RUNNING ​ MTU:​16436 ​ Metric:1
 +          RX packets:94 errors:0 dropped:0 overruns:0 frame:0
 +          TX packets:94 errors:0 dropped:0 overruns:0 carrier:0
 +          collisions:​0 txqueuelen:​0 ​
 +          RX bytes:10336 (10.0 Kb)  TX bytes:10336 (10.0 Kb)
 +
 +ppp0      Link encap:​Point-to-Point Protocol  ​
 +          inet addr:​172.16.1.81 ​ P-t-P:​172.16.0.1 ​ Mask:​255.255.255.255
 +          UP POINTOPOINT RUNNING NOARP MULTICAST ​ MTU:​1372 ​ Metric:1
 +          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
 +          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
 +          collisions:​0 txqueuelen:​3 ​
 +          RX bytes:42 (42.0 b)  TX bytes:48 (48.0 b)
 +</​code>​
 +Обратите внимание,​ что помимо аппаратной сетевой карты eth0 и интерфейса обратной связи, появился адаптер ppp0 - это и есть адаптер VPN-соединения. Проверить прохождение пакетов именно в VPN-канале можно командой ping:
 +<​code>​
 +# ping 172.16.0.1
 +PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
 +64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=28.4 ms
 +64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=13.4 ms
 +64 bytes from 172.16.0.1: icmp_seq=3 ttl=64 time=5.28 ms
 +64 bytes from 172.16.0.1: icmp_seq=4 ttl=64 time=23.9 ms
 +64 bytes from 172.16.0.1: icmp_seq=5 ttl=64 time=29.1 ms
 +^C
 +--- 172.16.0.1 ping statistics ---
 +5 packets transmitted,​ 5 received, 0% packet loss, time 4005ms
 +rtt min/​avg/​max/​mdev = 5.288/​20.066/​29.151/​9.269 ms
 +^C
 +</​code>​
 +Здесь, адрес 172.16.0.1 - это адрес удалённого конца VPN-соединения. В Вашем случае,​ он может быть другим. Как видно пинг проходит,​ значит VPN-соединение работает. Отключаем соединение:​
 +
 +<​code>​
 +# poff provider
 +</​code>​
 +Здесь poff - даёт команду на завершение работы,​ а provider - Вы уже знаете ;-)
 +
 +Когда соединение настроено и проверено,​ нужно сконфигурировать операционную систему так, чтобы запускать соединение не от имени учётной записи root`а, а от имени обычного пользователя. Здесь поможет статья [[Настройка sudo]] - отредактируйте файл /​etc/​sudoers до примерно такого вида:
 +<​code>​
 +root ALL=(ALL) ALL 
 +Host_Alias LOCALHOST = localhost, compname
 +username LOCALHOST = NOPASSWD: /​usr/​bin/​poff,​ /​usr/​bin/​pon
 +</​code>​
 +, где вместо **compname** - подставьте своё имя компьютера,​ **username** - имя пользователя,​ который будет манипулировать VPN-соединением.
 +
 +Теперь можно запускать\останавливать соединение от имени пользователя,​ указанного вместо **username**:​\\  ​
 +//​запуск//​
 +<​code>​
 +$ sudo pon provider
 +</​code>​
 +//​останов//​
 +<​code>​
 +$ sudo poff provider
 +</​code>​
 +
 +На этом настройку vpn-соединения можно считать завершённой.
 +
 +=====  Дополнительные опции ​ =====
 +Поскольку провайдеров в мире много, у каждого могуть быть свои особенности в настройке VPN (PPTP) соединения. Ниже приведены некоторые дополнительные опции для файла конфигурации соединения.
 +|включающая опция|выключающая опция|описание |
 +|persist|<​color green>​nopersist</​color>​|позволяет автоматически рестартовать соединение,​ если по каким-то причинам произошёл обрыв связи. После 10 неудачных попыток,​ соединение не рестартует. |
 +|maxfail N | |количество неудачных попыток создать соединение,​ после которого процесс завершается. По умолчанию N = 10. Если N = 0 - количество попыток не ограничено. ​ |
 +|debug | | позволяет выводить отладочную информацию в syslog. Бывает полезно,​ если что-то идёт не так. |
 +|require-pap|refuse-pap|применить для аутентификации метод PAP. |
 +|require-chap|refuse-chap|применить для аутентификации метод CHAP. |
 +|require-mschap|refuse-mschap|применить для аутентификации метод MS-CHAP. |
 +|require-mschap-v2|refuse-mschap-v2|применить для аутентификации метод MS-CHAP версии 2. |
 +|require-mppe|<​color green>​nomppe</​color>​|применить шифрование для трафика,​ передаваемого в VPN-соединении. Работает вместе с методами аутентификации MS-CHAP или MS-CHAP v2 и включает как 40-битный метод, так и 128-битный шифрования. Если включена - отключает все методы компресии (для работы этой опции, ядро должно поддерживать MPPE!). |
 +|require-mppe-40|nomppe-40|включить 40-битный метод шифрования MPPE. |
 +|require-mppe-128|nomppe-128|включить 128-битный метод шифрования MPPE. |
 +<color green>​зелёным</​color>​ - выделены опции по умолчанию,​ если не указаны в файле конфигурации.
 +
 +
 +=====  Проблема с основным шлюзом в транспортной сети ​ =====
 +Здесь будет описан вариант настроек,​ когда в транспортной сети провайдера работает основной шлюз - другими словами,​ когда между сервером VPN и пользовательским компьютером располагаются маршрутизаторы.
 +
 +
 +=====  Решение и диагностика проблем ​ =====
 +Здесь будут описаны самые распространённые проблемы с запуском VPN-соединений.
 +
 +
 +=====  Настройка VPN-соединения в графических средах ​ =====
 +В среде GNOME для этих целей есть Network Manager, с помощью которого можно управлять различными соединениями,​ в том числе и VPN. Для среды KDE есть менеджер kvpnc с аналогичной функцией. Следует отметить,​ что все эти менеджеры работают как графические оболочки для создания и правки конфигурационных файлов,​ нужных для работы VPN. Соответственно они работают в рамках своей парадигмы и если по каким-то причинам соединение будет закрыто или создано методами не этих менеджеров (например,​ из консоли),​ то возникнет конфликт между тем, что ожидает менеджер и фактическим состоянием соединения. В результате возможен незапланированный запуск нескольких соединений или сброс всех. Поэтому,​ самым универсальным способом управления соединениями,​ по мнению автора,​ является вышеописанная ручная правка конфигов и запуск соединений из консоли или скриптами. Если пользователь работает только в графической среде - пользуйтесь только средствами графической среды. Если пользователь умеет работать в консоли - никакие программы-менеджеры ему вообще не пригодятся для создания сетевых соединений
 +
 +====  KVpnc  ====
 +Этот менеджер универсален и поддерживает массу всякого рода настроек и типов соединений,​ но обратная сторона такой универсальности - сложность процесса настройки. Информация о настройках хранится в виде профилей. Пользователь может создать несколько профилей для каждого соединения и использовать нужный в своё время.
 + 
 +Для работы с этим менеджером,​ сперва его надо установить:​
 +<​code>​
 + # apt-get install kvpnc kvpnc-data
 +</​code>​
 +После установки появится ярлык для запуска в меню: "​Приложения"​ > "​Интернет"​ > "​KVpnc"​. При первом запуске,​ программа спросит пароль root`а, после чего откроется окно программы и вопрос о настройке KWallet - вспомогательной программы для сохранения паролей (менеджер паролей). Выбираем пункт "Basic Setup" и переходим по "​Next"​. Далее программа спросит глобальный пароль для менеджера паролей. Не ставим галочку на "Yes, I wish to use..."​ переходим по "​Next"​. У автора программа аварийно закрылась в этом месте - перезапускаем её.
 +
 +Появится окно программы. Теперь нужно создать профиль настроек через "​Profile"​ > "New Profile (wizard)"​. ​
 +Далее программа предложит выбрать тип VPN ("​Select the type of your VPN"), выбираем ​ "​Microsoft PPTP". Теперь пользователям самим придётся разобраться что значат те или иные галочки и кнопочки,​ а затем сопоставить это с опциями в вышеописанной конфигурации,​ ибо у автора не хватило терпения создать даже один работающий профиль :^:_:^:
 +
 +====  Network Manager ​ ====
 +Говорят он стал намного стабильнее и удобнее в современных дистрибутивах Linux Mint 12 и Ubuntu 11.10 Поделитесь кто-нибудь настройкой VPN PPTP в Network Manager.
 +
 +=====  Смотрите также ​ =====
 +  *  [[http://​nix.zeya.org/​forum/​index.php?​topic=180.0|Обсуждение статьи на форуме]]
Печать/экспорт