Настройка PPTP соединения в Debian GNU Linux
Если не все, то многие знают что такое VPN. А также понимают насколько это хорошо и удобно. Ну вот сие благо пришло и в мой дом 🙂 Попросил на работе чтобы дали мне возможность из дому попадать в рабочую сеть. И вуаля … имею листик с такими вот настройками:
- Тип соединения — PPTP
- PPTP сервер — mymegawork.kiev.ua
- Имя пользователя — worker13
- Пароль — some_password
Итак, что мы из этого видим? Собственно, видим все что нам нужно — тип соединения, куда подключаемся и как авторизируемся.
Дальше нам надо настроить pptp-клиент для подключения согласно вышеописанным данным. У меня это получилось без каких бы то ни было проблем. Потратил всего около 10-15 минут чтобы сообразить что к чему. Итак, настраивал в Debian Lenny GNU Linux, но статья подойдей и для Ubuntu.
1. Сначала надо убедиться что в системе установлен pptp-клиент, для Debian-like систем он называется pptp-linux:
2. Переходим в директорию /etc/ppp:
3. Конфиг /etc/ppp/options.pptp оставляем таким какой он есть, у меня он вот такой:
###############################################################################
# $Id: options.pptp,v 1.3 2006/03/26 23:11:05 quozl Exp $
#
# Sample PPTP PPP options file /etc/ppp/options.pptp
# Options used by PPP when a connection is made by a PPTP client.
# This file can be referred to by an /etc/ppp/peers file for the tunnel.
# Changes are effective on the next connection. See "man pppd".
#
# You are expected to change this file to suit your system. As
# packaged, it requires PPP 2.4.2 or later from http://ppp.samba.org/
# and the kernel MPPE module available from the CVS repository also on
# http://ppp.samba.org/, which is packaged for DKMS as kernel_ppp_mppe.
###############################################################################
# Lock the port
lock
# Authentication
# We don't need the tunnel server to authenticate itself
noauth
# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# (you may need to remove these refusals if the server is not using MPPE)
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
# Compression
# Turn off compression protocols we know won't be used
nobsdcomp
nodeflate
# Encryption
# (There have been multiple versions of PPP with encryption support,
# choose with of the following sections you will use. Note that MPPE
# requires the use of MSCHAP-V2 during authentication)
# http://ppp.samba.org/ the PPP project version of PPP by Paul Mackarras
# ppp-2.4.2 or later with MPPE only, kernel module ppp_mppe.o
# {{{
# Require MPPE 128-bit encryption
#require-mppe-128
# }}}
# http://polbox.com/h/hs001/ fork from PPP project by Jan Dubiec
# ppp-2.4.2 or later with MPPE and MPPC, kernel module ppp_mppe_mppc.o
# {{{
# Require MPPE 128-bit encryption
#mppe required,stateless
# }}}
black:/etc/ppp#
4. Любым консольным редактором (nano, vi, vim …) правим файлик /etc/ppp/chap-secrets до такого состояния:
# Secrets for authentication using CHAP
# client server secret IP addresses
### <my work vpn> ###
worker13 mymegawork.kiev.ua some_password *
black:/etc/ppp#
5. Опять же, любым консольным текстовым редактором создаем файлик /etc/ppp/peers/work. Название файлика можно выбрать произвольно, оно будет использоваться только как название при поднятии pptp соединения. Содержимое файла такое:
# written by black_13
pty "pptp mymegawork.kiev.ua --nolaunchpppd"
file "/etc/ppp/options.pptp"
name worker13
remotename mymegawork.kiev.ua
ipparam work
require-mppe-128
persist
black:/etc/ppp#
6. После этого пробуем приконектиться вот такой вот командочкой:
7. Секунд через 7 после ввода этой командочки у меня появился новый интерфейс ppp0 вот такого вида:
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.100.204 P-t-P:192.168.100.200 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1296 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:78 (78.0 B) TX bytes:72 (72.0 B)
black:/etc/ppp#
8. На сервак попали, но надо бы еще прописать маршрут для всей рабочей сети. Тут есть 2 пути: либо после каждого конекта писать в рутовой консоли руцями, либо настроить чтобы маршрут в рабочую сетку прописывался автоматически при поднятии соединения work. Я решил автоматизировать сей процесс. Делается это очень просто, тут нам помогает параметр
Создаем файлик /etc/ppp/ip-up.d/work с таким содержимым:
#!/bin/sh
if [ "${PPP_IPPARAM}" = "work" ]; then
/sbin/route add -net 192.168.100.0/24 dev ${IFNAME}
fi
И делаем его исполняемым:
9. Переподключаемся и проверяем маршрут в рабочую сеть:
black:/etc/ppp# pon work
black:/etc/ppp# route -n |grep 192
192.168.100.200 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 ppp0
black:/etc/ppp#
Маршрут прописан! Проверяем доступность какогото хоста в рабочей сети. Для этого сгодится обычная пинга:
PING 192.168.100.102 (192.168.100.102) 56(84) bytes of data.
64 bytes from 192.168.100.102: icmp_seq=1 ttl=127 time=1198 ms
64 bytes from 192.168.100.102: icmp_seq=2 ttl=127 time=184 ms
64 bytes from 192.168.100.102: icmp_seq=3 ttl=127 time=955 ms
64 bytes from 192.168.100.102: icmp_seq=4 ttl=127 time=6.12 ms
^C
--- 192.168.100.102 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3018ms
rtt min/avg/max/mdev = 6.128/586.264/1198.951/502.562 ms, pipe 2
black:/etc/ppp#
Ну вот! Краста! Все работает как надо.
10. Проблемы в процессе настройки и поиски информации о них:
Все нужно настраивать очень внимательно! Малейшая ошибочка — и ничего не заработает!
В случае если чтото работает нетак как вы ожидали от настроек запускайте из рутовой консоли такой командой вместо pon work
Лог pptp сесии пишется в /var/log/syslog и в /var/log/messages — очень полезно сюда посматривать в случае если чтото неработает как надо. У меня все работает, syslog выглядит вот так:
Jul 13 11:52:00 black pptp[12648]: anon log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Jul 13 11:52:00 black pppd[12647]: Using interface ppp0
Jul 13 11:52:00 black pppd[12647]: Connect: ppp0 <--> /dev/pts/7
Jul 13 11:52:00 black pptp[12655]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Jul 13 11:52:00 black pptp[12655]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
Jul 13 11:52:00 black pptp[12655]: anon log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
Jul 13 11:52:01 black pptp[12655]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Jul 13 11:52:01 black pptp[12655]: anon log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
Jul 13 11:52:01 black pptp[12655]: anon log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 14720).
Jul 13 11:52:07 black pppd[12647]: CHAP authentication succeeded
Jul 13 11:52:07 black pppd[12647]: MPPE 128-bit stateless compression enabled
Jul 13 11:52:10 black pppd[12647]: Cannot determine ethernet address for proxy ARP
Jul 13 11:52:10 black pppd[12647]: local IP address 192.168.100.204
Jul 13 11:52:10 black pppd[12647]: remote IP address 192.168.100.200
Jul 13 11:53:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:53:02 black pptp[12648]: anon log[decaps_gre:pptp_gre.c:414]: buffering packet 14 (expecting 13, lost or reordered)
Jul 13 11:53:02 black pptp[12648]: anon log[decaps_gre:pptp_gre.c:414]: buffering packet 15 (expecting 13, lost or reordered)
Jul 13 11:54:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:55:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:56:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:57:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:58:01 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 11:59:02 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 12:00:02 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 12:01:02 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 12:02:02 black pptp[12655]: anon log[logecho:pptp_ctrl.c:677]: Echo Reply received.
Jul 13 12:02:02 black pptp[12655]: anon log[logecho:pptp_ctrl.c:679]: no more Echo Reply/Request packets will be reported.
Фух … ну вроде все написал. Соединяйтесь наздоровье! 😀
Проще настроить через vpnpptp: http://code.google.com/p/vpnpptp/
Пакет vpnpptp работает и в Debian, и в Ubuntu и много где еще.