Яндекс.Метрика

среда, 2 марта 2011 г.

Vpn в Ubuntu

Опубликую, наконец, в нормальном месте инструкцию по настройке vpn-соединения именно для нашей общаги. Но, естественно, она может быть применима и к другим случаям с, может быть, небольшими поправками.

Во-первых нужно прописать маршрут до сервера, к которому нужно создать подключение vpn, в нашем случае это vpn.mai.ru. Реальный ip-шник vpn.mai.ru, как известно, 217.9.84.148. Поэтому в /etc/hosts (файл для хранения хостов и ip-адресов к ним, локальный днс, можно сказать) так и напишите
217.9.84.148 vpn.mai.ru.

Также нужно удалить default gateway, который раздается по dhcp (обычно в сетях, расчитанных под винду, он раздается и раздается неверный). Для того, чтобы посмотреть, роздан ли сейчас вам ненужный маршрут по-умолчанию, напишите
netstat -rn
В ответ увидите таблицу маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 eth0

где маршрут с нулевыми destination и gateway и есть маршрут по умолчанию. Если он создан не интерфейсом ppp0 (а это видимо не так, потому что вы только сейчас настраиваете vpn-соединение по протоколу ppp0), а, например, eth0, как представлено выше, то удалите его:
sudo route delete default

Далее, если вы пользуйтесь менеджером соединений (хренюлька в верху, которая показывает подключения по локальной сети, и может быть по wi-fi), то в нем нужно в свойствах прописать маршрут к vpn.mai.ru, так как он лежит не в нашей сети — 172.16.0.0, иначе его ip-адрес начинался бы на 172.16 следующим образом:
address   netmask   gateway
217.9.84.148   255.255.255.255   172.16.104.1.

Если вы подключаете сеть с помощью файлика /etc/network/interfaces, то допишите там строку:
up route add -host vpn.mai.ru gw 172.16.65.240 # это маршрут к 217.9.84.148 из нашей сети (studnet).

Далее нужно создать файлик с желаемым именем, например studnet-unlim в папке /etc/ppp/peers со следующим содержанием:
mtu 1372
mru 1500
persist
maxfail 0
lcp-echo-interval 60
lcp-echo-failure 4
defaultroute
pty "pptp vpn.mai.ru --nolaunchpppd"
name логин
remotename PPTP
#require-mppe-128
file /etc/ppp/options.pptp
ipparam studnet-unlim

В файл /etc/ppp/chap-secrets добавляем строку:
логин * пароль *

Терь в терминале нужно написать "sudo pon studnet-unlim". Затем с помощью ifconfig проверить, появился ли интерфейс ppp0. Если появился -- значит всё работает.

Далее, пропингуйте что-нить, например, ping www.ru. Если не распознается хост, то возможно, дело в DNS. Пингуйте 8.8.8.8, если пингуется, да, дело в DNS, в этом случае в /etc/resolv.conf можете прописать, например, 8.8.8.8 в качестве DNS-сервера (дописать "nameserver 8.8.8.8"). 

Так как часто в сетях с DHCP раздается default gateway, вырезка из файла с конфигурацией dhcp (чтобы не раздавало всякой лишней дряни):
prepend domain-name-servers 172.16.66.2, 192.168.7.253;
request subnet-mask, broadcast-address, time-offset,
domain-name, host-name,
netbios-name-servers, netbios-scope;

Вроде бы все.



* Да. Менеджер подключений сетевых глючит и часто там не сохраняются маршруты, поэтому может все нафиг не работать — проверьте наличие маршрута к vpn.mai.ru.


Также если вы в конфиге dhcp не указали явно, не раздавать default gateway, то он может вам раздаваться, поэтому после перезагрузки вам придется опять его удалять. Это можно исправить.


Ну и последнее, resolv.conf тоже после перезагрузки будет переписан, поэтому не удивляйтесь, что vpn перестал работать, проверьте все три пункта.

2 комментария:

  1. Ты не написала, как сделать, чтобы впн стартовал автоматически и переподсоединялся при разрыве.

    Мне нравиться поднимать впн бернштейновскими daemontools, но можно и в interfaces прописать — так стандартнее.

    ОтветитьУдалить
  2. На запрос в гугле "бернштейновские daemon tools" он вывел мне 3 ответа: все три ведут на "Blogo de Aleksej Lebedev". В общем, я не знаю, что это :)

    Я знаю, как сделать, чтобы он стартовал автоматически через /etc/rc.local. Есть более простые способы?

    (В rc.local нужно прописать строчку:

    su root -c 'pon studnet-unlim'

    )

    А при разрыве разве он сам автоматом не подсоединяется?

    ОтветитьУдалить