Установите пакет pptp-linux командой sudo apt-get install pptp-linux, если вы установили данный пакет, то все что необходимо для создания VPN соединения у вас уже есть. Остальное - это редактирование пары конфигурационных файлов.
Создайте файл конфигурации с произвольным именем в каталоге /etc/ppp/peers. В данном примере я буду использовать файл с именем office, но вы можете использовать как я уже сказал любой. Вот как выглядит мой:
# cat /etc/ppp/peers/office
pty "pptp 10.10.10.10 --nolaunchpppd"
user "domain\\user"
password "password"
nodeflate
nobsdcomp
#require-mppe-128
require-mppe
debug
#nodetach
lcp-echo-interval 60
lcp-echo-failure 4
#+mschap-v2
#-chap
noauth
Самое главное: для создания соединения VPN этих настроек уже достаточно. Проверьте соединение сейчас и не двигайтесь дальше пока не добьетесь соединения VPN.
Для тестирования соединения измените IP 10.10.10.10 на тот который используете вы, аналогичным образом измените вхождения в файл "domain\\user" и "password". Введите команду: sudo pon office (измените office на ваше имя файла) и если все сделано правильно, то в результате успешного соединения вы увидите новый виртуальный интерфейс при помощи команды ifconfig.
...
ppp0 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:10.10.10.1 P-t-P:10.10.10.0 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:90 (90.0 B) TX bytes:90 (90.0 B)
inet addr:10.10.10.1 P-t-P:10.10.10.0 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:90 (90.0 B) TX bytes:90 (90.0 B)
...
Если это так, то поздравляю вас - соединение установлено! Остались сущие мелочи: прописать маршрутизацию и возможно изменить адреса сервера имен. Если же соединение установить не удается, то читайте содержимое файла /var/log/syslog там будут достаточно подробные сведения почему соединение установить не удалось.
Маршрутизация
Если вы добрались до этого места, значит вы успешно установили VPN соединение. Однако воспользоваться им вы пока не можете. Почему? Ваша операционная система еще не знает, до каких именно сетей или хостов необходимо отправлять трафик в данный туннель VPN. Ей об этом нужно сообщить, что выполняется при помощи команды route
Если вы хотите использовать данный туннель в качестве маршрута по умолчанию, то введите следующую команду:
$ sudo route add default gw 10.10.10.0
Обратите внимание:
- Если вы добавляете маршрут по умолчанию к сети управляемой аплетом NetworkManager - то скорее всего не будет работать как новый маршрут так и старый. Чтобы исключить данное поведение выведите интерфейс маршрута по умолчанию из-под контроля аплета менеджера сети.
- При добавлении маршрута по умолчанию в тунель VPN вы должны прописать отдельный маршрут до вашего сервера VPN минуя туннель.
Что заставит весь исходящий трафик для которого явно не определено правило маршрутизации использовать данный туннель.
Для маршрутизации в данной туннель трафика только для определенной сети используйте команду
$ sudo route add -net 10.10.0.0 netmask 255.255.0.0 gw 10.10.10.0
Выставив при этом корректные параметры для -net и netmask.
Если в данный туннель необходимо отправлять трафик только одного хоста, то используйте команду
$ sudo route add -host 10.10.10.20 gw 10.10.10.0
Где 10.10.10.0 шлюз туннеля VPN (он отображается в команде ifconfig)
Если все выполнено правильно, то теперь вы имеете доступ ко всем ресурсам предоставленным вашем туннелем, но возможно только по IP адресу. Для использования имен серверов вместо IP адресов необходимо настроить использование сервера имен вашей операционной системой.
Сервер имен
Для использования сервера имен отредактируйте файл /etc/resolv.conf
Впишите IP адрес сервера имен, который необходим для работы. Например так:
$ cat /etc/resolv.conf
nameserver 192.168.1.1
Замените 192.168.1.1 на ваш фактический сервер имен (вы можете пропустить этот шаг, если у вас все работает и без настройки сервера имен).
Объединяем все вместе
У вас все работает? Если нет - вернитесь назад, если да - поздравляю! Но, погодите... Что-то здесь не так. Не слишком ли много действий нужно выполнить, чтобы установить соединение VPN? Установка соединения, создание одного или нескольких маршрутов, назначение нового сервера DNS. Возможно ли это все объединить в одно действие? Разумеется - можно. Сейчас я расскажу как. Ubuntu (как и другой известный мне Linux) использует механизм скриптов-триггеров обрабатывающих события изменения состояния сетевых интерфейсов.
В каталогах /etc/ppp/ip-down.d и /etc/ppp/ip-up.d находятся скрипты, которые выполняются при изменении состояния любого из сетевого интерфейса типа Point-to-Point. Скрипты при этом получают следующие переменные среды:
PPP_TTY=
IFNAME=ppp0
PPPLOGNAME=root
IPLOCAL=10.10.10.1
PPP_REMOTE=10.10.10.0
PPP_IFACE=ppp0
PPP_TTYNAME=
ORIG_UID=0
SPEED=38400
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
CALL_FILE=office
IPREMOTE=10.10.10.0
PPP_LOCAL=10.10.10.1
PPP_IPPARAM=
PPPD_PID=2524
PWD=/
PPP_SPEED=38400
Для нас наиболее интересным будет переменная среды CALL_FILE.
В каталоге /etc/ppp/ip-up.d создадим файл и сделаем исполняемым файл office со следующим содержимым
#!/bin/sh
# /etc/ppp/ip-up.d/office
# /etc/ppp/ip-up.d/office
if [ x"$CALL_FILE" = x"office" ]; then
route add -host 10.10.20.0 gw $IPREMOTE
# ... другие маршруты ....
# ... меняем /etc/resolv.conf если необходимо
fi
fi
При завершении соединения все маршуруты связанные с этим туннелем будут уничтожены автоматически поэтому их удалять специально нет необходимости. Однако если, вы вносили изменения в /etc/resolv.conf то эти изменения нужно будет внеси обратно при отключении туннеля. Сделать это можно в файле office в каталоге /etc/ppp/ip-down.d/ Все выполнять по аналогии с уже выполненным файлом.
#!/bin/sh
# /etc/ppp/ip-down.d/office
if [ x"$CALL_FILE" = x"office" ]; then
fi
Итак, теперь, когда все настроено вы можете устанавливать VPN соединение командой sudo pon office и разрывать соединение используя poff office.
Чего же нам не хватает для полного удовлетворения? Еще пары вещей: установка соединения при загрузке компьютера и повторный подъем при разрыве. Но об этом я уже расскажу в своей следующей записи. :)
Жызненно!
ОтветитьУдалитьpptp соединение поднялося, сервер имен доступен, маршрут по умолчанию добавил. Адреса в интернете пингуются (google.com, mail.ru, rambler.ru) а браузер на страницы не заходит. В чем может быть проблема?
ОтветитьУдалитьMisha: тут я вижу два варианта:
ОтветитьУдалить1. Некорректно настроен файервол - запрет исходящего tcp:80
2. В браузере возможно некорректно настроен прокси-сервер.
Если пингуются внешние ресурсы по имени хоста, то с настройкой VPN у вас все завершилось успешно. Ищите ошибку в другом месте (скорее всего файервол)
Файервола у меня вообще еще нету (только установил Ubuntu 11.04). Настройки браузера проверил, прокся не используеться. Но сайты, которые находяться в локальной сети, работают без проблем. Не открываются все остальные, которые находяться за pptp соединением.
ОтветитьУдалитьРаньше использовал Suse linux, там была такая же проблема. На винде все работает отлично.
Misha: нужно убедиться, что пакеты уходят по нужному маршруту. (netstat -rn, traceroute), если уходят туда, куда ожидалось, то нужно смотреть логи соединения - возможно проблема с mtu.
ОтветитьУдалитьags: Трасировка маршрута работает, все как обычно, проверял на разных сайтах. MTU менял (и в конфиг файле pptp соединения и в настройке самого интерфейса), пробовал различные значения (1000, 1300, 1400, 1500) результат тот-же. :(
ОтветитьУдалитьЛоги сохраняются только в /var/log/syslog или еще в каком-то файле?
Спасибо за советы, но они пока что не помогли.
Misha: если пинги во внешку ходят и ходят по нужному маршруту, по значит проблем с маршрутизацией нет (а это обычно именно то место, где многие могли бы споткнуться) и если нет файервола на локальной машине, то что остается в сухом остатке? icmp работает, dns работает. Соответственно если не работает браузер,значит идет фильтрация tcp трафика и если фаервола нет на локальной машине, значит он есть на одном из узлов между локальным и удаленным хостом. Других вариантов-то и нет на самом деле.
ОтветитьУдалитьДа логи лучше всего в сислоге и смотреть.
Вариант с фаерволом на одном из узлов между моей машиной и удаленным хостом маловероятен, так как на этой же машине на windows xp pptp поднимается и все сайты октрываються в любом браузере.
ОтветитьУдалитьЯ думаю что существует какой-то параметр, который windows передает по умолчанию на сервер pptp, а linux его не передает.
Где можно почитать полное описание параметров для конфиг-файла pptp?
Misha, опции можно посмотреть здесь http://linux.die.net/man/8/pppd и здесь http://linux.die.net/man/8/pptp сомневаюсь, что дело в них. Если проблемы с mtu нет и имеется устойчивое соединение с правильно проложенным маршрутом, то с сожалению даже не знаю, что еще можно и посоветовать... :(
ОтветитьУдалитьвот ведь! у мя та же проблема.=( убунта 12.04
ОтветитьУдалить