Иногда возможностей графического конфигуратора VPN в Mac OS X недостаточно по возможностям или его применение неоправдано или невозможно. В этом случае можно настроить и поднять соединение вручную.
Для начала запустим терминал и получим необходимые привилегии
sudo bash
То, что в M$ называют VPN (Виртуальные частные сети), в мире unix попадает под определение PPP (Point-to_Point Protocol, или протокол соединений точка-точка).

Так что и заведует такими соединениями программа pppd (демон протокола точка-точка) Практически для установления соединения достаточно запустить pppd с необходимыми параметрами, прямо в командной строке, однако это не совсем удобно и не совсем безопасно (можно подсмотреть все параметры в списке процессов). Поэтому мы создадим необходимые файлы конфигурации при помощи которых и будем управлять параметрами. Все файлы конфигурации pppd хранятся в одной корзине, каталоге /etc/ppp/ , он уже имеется в установленной системе, останется лишь создать каталог peers, в котором должны хранится файлы описания соединений.
mkdir /etc/ppp/peers
К примеру нам необходимо создать подключение к провайдеру Дубина, так что назовем соединение dubina
nano /etc/ppp/peers/dubina
Впишем в файл следующие строки
serviceid 2 logfile /var/log/ppp/dubina.log debug plugin PPTP.ppp remoteaddress 123.123.123.123 noipdefault nodefaultroute looplocal noauth nodeflate nobsdcomp require-mppe refuse-pap user USERNAME password PASSWORD remotename dubina ipparam dubina
В первую очередь вам необходимо подставить свои значения для параметров remoteaddress (адрес VPN сервера), user (имя пользователя) и password (пароль) Если ваше соединение не должно использоваться как основной шлюз (галка "Отправлять весь траффик через VPN" снята), оставьте параметр nodefaultroute нетронутым, в противном случае замените его на defaultroute
В принципе, указанного вполне достаточно для большинства случаев, однако бывают моменты, когда на той стороне установлена какая-то из разновидностей Windows со своими особенностями, в этом случае попробуйте параметры
nodeflate nobsdcomp require-mppeзаменить на
novj mppe-stateless mppe-128
Время звонить дяде! Поднимаем соединение
pppd call dubina
Если все прошло успешно, у нас должен активироваться интерфейс ppp0, проверим
ifconfig ppp0
Результат должен выглядеть как-то так:
ppp0: flags=8051 UP,POINTOPOINT,RUNNING,MULTICAST mtu 1452 inet 192.168.4.123 --> 192.168.4.1 netmask 0xffffff00
а в списке процессов висеть запущенный pppd
ps ax |grep pppd 1338 ?? Ss 0:00.02 pppd call dubina
Неверный результат приведет к выдаче
ifconfig: interface ppp0 does not exist
Если соединение установить не удалось, то придется скурпулезно рассматривать лог /var/log/ppp/dubina.log при помощи Console.app в попытках понять, что-же там не срослось.
Перейдем к следующему этапу марлезонского балета, а пока пристрелим демона
kill 1338
Можно убрать параметр debug из файла dubina, т.к. соединение удачно и дополнительная информация нам не нужна.
Если необходимо, чтобы соединение восстанавливалось после обрыва само, добавьте к существющим еще один параметр persist Если ваше соединение необходимо для выхода в интернет и является основным каналом для траффика, настройки на этом можно завершить.
В принципе, поднятие VPN можно поставить в автозапуск, но это будет хорошо работать только для случаев, когда подключение осуществляется при помощи сетевой карты, а не по беспроводке. Для этого команду pppd call dubina можно записать в файл /etc/rc.local
Довольно часто VPN соединение наши провайдеры используют не по назаначению, а как средство для авторизации и предоставлению доступа в интернет. Если у такого провайдера есть еще и внутренние ресурсы, то в таком случае при включенном VPN они становятся недоступны. Весь траффик будет уходить "вдаль", а лежащее под носом окажется на обочине.

В таких случаев в комплекте с проблемой может поставляться bat-файлик или команда, которую нужно запустить на Windows для решения проблемы. Руками. Мы решим ее аналогично, но автоматизировано.
Как только pppd установил соединение, он проверяет возможность исполнения файла /etc/ppp/ip-up , при отключении проверяется файл /etc/ppp/ip-down
Достаточно создать такие файлы и прописать туда необходимые команды, чтобы они исполнялись автоматически в надлежащих случаях.
В примере на картинке все ценности расположены по адресам 10.*.*.* и скрываются за адресом 10.10.1.1 Windows-аналог команды звучал бы route add 10.0.0.0 mask 255.0.0.0 10.10.1.1 В нашей интерпретации это выглядит как
/sbin/route add -net 10.0.0.0 -netmask 255.0.0.0 10.10.1.1
Создаем файл
nano /etc/ppp/ip-up
и вписываем пару строк
#!/bin/sh
/sbin/route add -net 10.0.0.0 -netmask 255.0.0.0 10.10.1.1
Соответственно создаем файлик и для уборки за собой
nano /etc/ppp/ip-down
#!/bin/sh
/sbin/route delete -net 10.0.0.0 -netmask 255.0.0.0 10.10.1.1
Не забываем сделать их исполняемыми
chmod a+x /etc/ppp/ip-up
chmod a+x /etc/ppp/ip-down
Ой.

7 коммент.:
Как альтернатива можно воспользоваться IP Securitas VPN
Позволяет настроить VPN подключение с мака к любому устройству которое поддерживает vpn. Например, пользую для подключения к раутеру Linksys WRT 2000
2Alexey: Спасибо, полезное дополнение
serviceid 8
device en1
logfile /var/log/ppp/system.log
#debug
plugin PPPoE.ppp
#remoteaddress
#noipdefault
#nodefaultroute
#looplocal
#noauth
#nodeflate
#nobsdcomp
#require-mppe
#refuse-pap
user user
password passwd
#remotename system
#ipparam system
вариант для pppoe
(кое что убрал)
Есть ещё отличный пакет VPN Tracker (http://www.equinux.com/us/products/vpntracker/index.html)
Простой в настройке (насколько VPN вообще может быть простым :) и в деплойменте.
Основное достоинство: хороший деплоймент и большое число поддерживаемых протоколов.
Недостаток - самая дорогая утилита на рынке.
@Есть ещё отличный пакет VPN Tracker
Это не то о чем тут писали. Это VNCoVPN
Еще раз выручил :)
Отправить комментарий