Тема: Создание и настройка VPN подключения PPTP с MPPE
Я решительно не понимаю разработчиков, которые не включили такую простую функцию, как создание vpn соединений. На WM, Android и IPhone VPN есть из коробки. А тут нет.
И до сих пор не появилось программы(пусть даже в extras-devel) для создания vpn подключений!
Существующий способ, описанный в http://talk.maemo.org/showthread.php?t=36172&page=2 , требует приличных знаний английского языка и консоли линукса.
С этим способом я разобрался и настроил подключение под себя.
Теперь я хочу рассказать это вам и структурировать все знания на счет создания vpn подключения на N900, описанные в 5 страницах обсуждения на memo.org, в кучу.
Для начала, в качестве предисловия, я поработаю К.О. и приведу определения понятий, которыми мы будем оперировать далее:
PPP — протокол точка-точка канального уровня.
PPTP — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети.
PPPoE — сетевой протокол передачи кадров PPP через Ethernet.
Microsoft Point-to-Point Encryption (MPPE) — протокол шифрования данных, используемый поверх соединений PPP.
Для создания vpn подключения к майкросовтовским сетям нам нужно:
PPTP туннель с проверкой подлинности MS CHAP V2 и шифрованием MPPE 128
В ходе создания подключения я привожу команды со своими параметрами. Для моего подключения они такие:
Адрес сервера:10.1.1.10
Имя пользователя:smith
Пароль:123
Итак, начнем настройку PPTP VPN with MPPE!
Подготовка
Скачиваем на телефон следующие файлы:
kernel modules : http://fanoush.wz.cz/maemo/modules-2.6. … ptp.tar.gz
pppd : http://fanoush.wz.cz/maemo/ppp_2.4.4rel … _armel.deb
pptp-linux: http://fanoush.wz.cz/maemo/pptp-linux_1.7.2-1_armel.deb
Сохраняем их, например, в папку \MyDocs\.documents\
То есть в документы.
Открываем терминал и заходим под рутом
root
Установка модулей ядра
Переходим в папку со скачанными файлами
cd /home/user/MyDocs/.documents/
Устанавливаем пакеты поддержки pppd и pptp-linux
dpkg -i ppp_2.4.4rel-osso4_armel.deb
dpkg -i pptp-linux_1.7.2-1_armel.deb
Распаковываем модули ядра
tar -zxvf modules-2.6.28-200903102-pptp.tar.gz
Образуется две папки: "drivers" и "crypto"
Копируем модули ядра в нужную папку:
cp ./drivers/net/ppp_async.ko /lib/modules/2.6.28-omap1/
cp ./drivers/net/ppp_generic.ko /lib/modules/2.6.28-omap1/
cp ./drivers/net/ppp_mppe.ko /lib/modules/2.6.28-omap1/
cp ./drivers/net/slhc.ko /lib/modules/2.6.28-omap1/
cp ./crypto/sha1_generic.ko /lib/modules/2.6.28-omap1/
Переходим в каталог с модулями ядра:
cd /lib/modules/2.6.28-omap1/
Создаем список зависимостей всех модулей:
depmod -a
Вставляем новые модули в ядро Linux:
insmod slhc.ko
insmod ppp_generic.ko
insmod ppp_async.ko
insmod sha1_generic.ko
insmod ppp_mppe.ko
Настройка нового подключения
Можно вручную создать новое подключение со своими настройками. Но зачем, если есть pptpsetup!
Но тут возникает проблема в том, что он использует аргументы, которые не поддерживаются нашим N900. В итоге скрипт просто выдает ошибку о том, что мы не используем mppe.
Это легко исправить!
Открываем файл /usr/sbin/pptpsetup любимым текстовым редактором. Я для этого использую leafpad:
leafpad /usr/sbin/pptpsetup
Переходим на линуию 192(ближе к концу) . Там должен быть метод с именем Check_MPPE_in_pppd. Закомментируем ненужный нам код(или удалим). Этот метд должен выглядеть примерно так:
sub Check_MPPE_in_pppd {
# my $command = q/strings `which pppd`|grep -i mppe|wc --
# my $answer = `$command`;
# if ($answer > 0) {
# ok!
return 1;
# } else {
# return 0;
# }
}
Или так:
sub Check_MPPE_in_pppd { return 1;}
Запускаем pptpsetup со своими настройками.
Синтаксис примерно такой:
pptpsetup --create ТУННЕЛЬ --server СЕРВЕР [--domain ДОМЕН] --username ИМЯ_ПОЛЬЗОВАТЕЛЯ [--password ПАРОЛЬ]
Подробнее можете посмотреть в гугле.
Важно! В параметрах используются два коротких тире! лучше такую команду не копировать, а ввести вручную.
Для меня эта строка выглядит примерно так:
pptpsetup --create ustuvpn --server 10.1.1.10 --username smith --password 123
Открываем для редактирования файл с настройками туннеля:
leafpad /etc/ppp/peers/ustuvpn
ustuvpn заменить на имя вашего подключения
К сожалению я не сохранил состояние изначального файла, поэтому привожу то, как он должен выглядеть:
pty “pptp 10.1.1.10 –nolaunchpppd”
lock
noauth
nobsdcomp
nodeflate
name smith
require-mppe-128
noipdefault
usepeerdns
defaultroute
replacedefaultroute
persist
Расшифровку опций можно посмотреть тут: http://manpages.ylsoftware.com/dokuwiki/man/pppd_8
Если у вас не используется mppe, то уберите строку require-mppe-128.
Устанавливаем необходимые консольные утилиты: iproute и mtr-tiny из репозитория kluenter:
Имя каталога: kluenter
Веб адрес: http://maemo.kluenter.de/packages
Дистрибутив: fremantle
Компоненты: main
После этого у меня замечательно создалось работающее vpn pptp соединения с mppe:
pppd call ustuvpn logfd 2 nodetach debug dump
После запуска этой команды на консоль вываливаются все сервисные сообщения. И можно понять, что все работает, или на каком-то этапе вылазит ошибка.
Вот мой лог выполнения этой команды:
Nokia-N900-42-11:~# pppd call ustuvpn logfd 2 nodetach debug dump
pppd options in effect:
debug # (from command line)
nodetach # (from command line)
persist # (from /etc/ppp/peers/ustuvpn)
logfd 2 # (from command line)
dump # (from command line)
noauth # (from /etc/ppp/peers/ustuvpn)
name smith # (from /etc/ppp/peers/ustuvpn)
remotename ustuvpn # (from /etc/ppp/peers/ustuvpn)
# (from /etc/ppp/peers/ustuvpn)
pty pptp 10.1.1.10 --nolaunchpppd # (from /etc/ppp/peers/ustuvpn)
crtscts # (from /etc/ppp/options)
# (from /etc/ppp/options)
asyncmap 0 # (from /etc/ppp/options)
lcp-echo-failure 4 # (from /etc/ppp/options)
lcp-echo-interval 30 # (from /etc/ppp/options)
hide-password # (from /etc/ppp/options)
ipparam ustuvpn # (from /etc/ppp/peers/ustuvpn)
noipdefault # (from /etc/ppp/peers/ustuvpn)
defaultroute # (from /etc/ppp/peers/ustuvpn)
replacedefaultroute # (from /etc/ppp/peers/ustuvpn)
proxyarp # (from /etc/ppp/options)
usepeerdns # (from /etc/ppp/peers/ustuvpn)
nobsdcomp # (from /etc/ppp/peers/ustuvpn)
nodeflate # (from /etc/ppp/peers/ustuvpn)
require-mppe-128 # (from /etc/ppp/peers/ustuvpn)
noipx # (from /etc/ppp/options)
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe445f209> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <mru 1460> <asyncmap 0x0> <auth chap MS-v2> <magic 0x181935a9> <accomp>]
sent [LCP ConfAck id=0x1 <mru 1460> <asyncmap 0x0> <auth chap MS-v2> <magic 0x181935a9> <accomp>]
rcvd [LCP ConfRej id=0x1 <pcomp>]
sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0xe445f209> <accomp>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0xe445f209> <accomp>]
sent [LCP EchoReq id=0x0 magic=0xe445f209]
rcvd [LCP EchoReq id=0x0 magic=0x181935a9]
sent [LCP EchoRep id=0x0 magic=0xe445f209]
rcvd [CHAP Challenge id=0x37 <2ff7d7838d970886121a0d4a2b99ac26>, name = "bill"]
sent [CHAP Response id=0x37 <3fd0ce0070aaa9fb6a7483af08ee0538000000000000000089358c3d86a1aa714001de92448f809cfa848bc4bc517bbc00>, name = "smith"]
rcvd [LCP EchoRep id=0x0 magic=0x181935a9]
rcvd [CHAP Success id=0x37 "S=1DA3D43521437A617A2A7036F6AE10F4E66D0147 M=Access granted"]
CHAP authentication succeeded
sent [CCP ConfReq id=0x1 <mppe +H -M +S -L -D -C>]
rcvd [CCP ConfReq id=0x1 <mppe +H -M +S +L -D -C>]
sent [CCP ConfNak id=0x1 <mppe +H -M +S -L -D -C>]
rcvd [CCP ConfAck id=0x1 <mppe +H -M +S -L -D -C>]
rcvd [CCP ConfReq id=0x2 <mppe +H -M +S -L -D -C>]
sent [CCP ConfAck id=0x2 <mppe +H -M +S -L -D -C>]
MPPE 128-bit stateless compression enabled
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 10.128.0.0>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 10.128.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.230.43.23> <ms-dns1 10.128.0.0> <ms-dns3 93.88.181.2>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 10.230.43.23> <ms-dns1 10.128.0.0> <ms-dns3 93.88.181.2>]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 10.230.43.23> <ms-dns1 10.128.0.0> <ms-dns3 93.88.181.2>]
replacing old default route to wlan0 [192.168.137.1]
Cannot determine ethernet address for proxy ARP
local IP address 10.230.43.23
remote IP address 10.128.0.0
primary DNS address 10.128.0.0
secondary DNS address 93.88.181.2
Script /etc/ppp/ip-up started (pid 1849)
Script /etc/ppp/ip-up finished (pid 1849), status = 0x0
И после завершения подключения(Ctrl+C):
^CTerminating on signal 2
Script pptp 10.1.1.10 --nolaunchpppd finished (pid 1830), status = 0x0
Modem hangup
Connect time 0.3 minutes.
Sent 0 bytes, received 0 bytes.
restoring old default route to wlan0 [192.168.137.1]
Script /etc/ppp/ip-down started (pid 1852)
MPPE disabled
sent [LCP TermReq id=0x3 "MPPE disabled"]
Connection terminated.
Waiting for 1 child processes...
script /etc/ppp/ip-down, pid 1852
Script /etc/ppp/ip-down finished (pid 1852), status = 0x0
Я всегда запускаю именно так. Это дает мне информацию о том, что происходит с vpn подключением. Для меня это важно, так как бывают разрывы и пропадание сигнала(далеко ухожу от точек доступа в институте).
Но, если у вас всё замечательно работает, вы можете запускать так:
pppd call <tunnelname>
Для завершения подключения нужно выполнить:
killall pppd
Удачи!