Настройка интернета Магинфо в Linux v.2

Автор: Павел Вязовой

Я решил не трогать старую статью со старыми комментариями, а опубликовать новую, пусть будет свежее обсуждение. В этой версии я постарался описать шаги по настройке подробнее, чтобы меньше возникало вопросов.

Редактировать буду по мере накопления информации


Настройка интернета магинфо в Linux

Настройка через NetworkManager в Ubuntu 10.04+, Fedora Russian remix и других дистрибутивах (другие не проверял)

Настройка описана здесь: lug-mgn.ru/…

Старый способ - правка конфигурации pptp

Во-первых, для подключения вам понадобится pptp-клиент. Скорее всего он уже есть в вашем дистрибутиве, убедиться в его наличии можно: необходимо открыть терминал и ввести pptp, если выйдет несколько строк типа “pptp version 1.7.2” и т.д. - он у вас есть. Иначе вылетит что-нибудь типа “нет такого файла”, “неверная комманда”, “command not found”, “no such file or directory” и т.п.

Если у вас не оказалось pptp и вы не можете установить его средствами дистрибутива, т.к. вы ещё не настроили интернет - постарайтесь скачать пакет вручную на сайте дистрибутива и установить. Пакет должен называться pptp, pptp-linux или pptp-client, но может называться и по другому. Например, вот несколько адресов:

  • Ubuntu: http://packages.ubuntu.com/search?keywords=pptp-linux
  • Debian: http://packages.debian.org/search?keywords=pptp-linux
  • Archlinux: http://www.archlinux.org/packages/pptpclient

Теперь процесс настройки по шагам:

1) Необходимо отредактировать конфиг pptp (все действия производятся в окне терминала):

  • Предположим, что вы имеете настроенную средствами дистрибутива локальную сеть (т.е. ping vpn.mgn.ru даёт положительный результат)
  • Делаем резервную копию файла /etc/ppp/options: sudo cp /etc/ppp/options /etc/ppp/options.backup
  • Открываем конфиг на запись: sudo nano /etc/ppp/options
  • Пишем в него следующее (поменяйте ВАШ-VPN-ЛОГИН на свой vpn-логин):

local
lock
detach
persist
maxfail 10

mtu 1512
mru 1512

require-mppe-40
require-mppe-8
require-mppe

lcp-echo-interval 30
lcp-echo-failure 5

require-mschap-v2
refuse-pap
refuse-chap
refuse-mschap
refuse-eap

defaultroute

user ВАШ-VPN-ЛОГИН
noauth

Сохраняем и выходим из редактора nano (Ctrl+o затем Ctrl+x)

2) Теперь необходимо отредактировать файл /etc/ppp/chap-secrets, пишем туда:


ВАШ_VPN-ЛОГИН * ВАШ_ПАРОЛЬ *

Сохраняем. Далее в консоли выполняем:

sudo chmod 400 /etc/ppp/chap-secrets

3) Теперь завершающий шаг: при каждом подключении необходимо поднимать маршруты до впн-сервера и днс-серверов и запускать pptp-клиент. Мы запишем все эти действия в простейший скрипт, при запуске которого будет подниматься интернет. Этого вам хватит для того, чтобы выйти в интернет и начать осваивать linux в поисках более адекватного решения. Думаю самое адекватное решение - настройка через Network Manager (описана в начале статьи).

Итак, открываем редактор: nano ~/vpn.sh и пишем следующее:


sudo /sbin/route del default
sudo /sbin/route add -net 192.168.55.32 netmask 255.255.255.224 gw <ваш_шлюз>
sudo /sbin/route add -net 79.134.0.0 netmask 255.255.255.252 gw <ваш_шлюз>
# для 100-мбит локалки
sudo /sbin/route add -net 172.16.0.0 netmask 255.240.0.0 gw <ваш_шлюз>
sudo /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw <ваш_шлюз>
sudo pptp vpn.mgn.ru

Не забудьте заменить <ваш_шлюз> на адрес вашего основного шлюза. Его можно узнать у техподдержки провайдера, или, если вы знаете свой ip-адрес, заменив в этом адресе цифры после третьей точки на единицу.

Теперь необходимо дать скрипту права на выполнение:

chmod +x ~/vpn.sh

Запускать интернет следующей коммандой:

~/vpn.sh


Примечание для старых дистрибутивов: в старых ядрах (не скажу точно до какой версии) поддержка шифрования (MPPE) для ppp была отдельным модулем (а когда-то вообще требовалось накладывать патчи). Так что можно попробовать сделать find /lib/modules -name “*mppe*” и подгрузить найденный модуль. Пользователям более-менее современных дистрибутивов - не забивайте голову, примечание не для вас.

P.S. Может быть ещё для BSD-семейства описать процесс кто-то сможет?

P.P.S Опечатки и ошибки пишите в комментариях, или мне лично в конференции lug-mgn@conference.jabber.ru - буду править.

19.10.2010 - 13:17
По поводу mtu/mru. Магическое значение 1512 байт возникло из-за бага в ядреной реализации MPPE, когда в 2.6.15 его включили в upstream. Проявлял себя баг только, когда вы получали интернет с одного pptp и сами раздавали его по pptp клиентам. Если параметра mtu не было, пакеты ходить переставали, а в kern.log появлялись сообщения, о нехватке места для расшифровки пакета. В остальных случаях все работает без проблем (http://bugzilla.kernel.org/show_bug.cgi?id=7853). Багу 3 года, починили его или нет не знаю.

Если вы не собираетесь настраивать сервер, то ставить mtu=1512, как минимум, странно. Максимальный Ethernet пакет 1500 байт, плюс заголовок PPTP/GRE (точно размер не помню, вроде 28 байт, но возможно больше). Что это значит? Это значит, что все пакеты более 1472 гарантированно будут фрагментироваться. Проверить, когда начинается фрагментация можно с помощью ping:

# ping -s 1512 -c 1 -M do 192.168.x.y
PING 192.168.x.y (192.168.x.y) 1512(1540) bytes of data.
From 192.168.x.z icmp_seq=1 Frag needed and DF set (mtu = 1500)

# ping -s 576 -c 1 -M do 192.168.x.y
PING 192.168.x.y (192.168.x.y) 576(604) bytes of data.
584 bytes from 192.168.x.y: icmp_req=1 ttl=64 time=1.95 ms

С фрагментацией пакетов есть одна тонкость. В теории, пакет может содержать флаг DF = don't fragment. Этот флаг используется протоколом TCP, чтобы определить оптимальный размер MSS (PMTU discovery). В теории, если пакет не пролезает в MTU где-то по пути, вам должны ответить "Frag needed and DF set", в ответ на что размер пакета уменьшается.

К сожалению, не все об этом знают, в том числе среди администраторов. В результате пакеты частенько отбрасываются. Выглядит этот примерно так, удаленный хост пингуется, но все попытки применить его с пользой, файл скачать, например, заканчиваются неудачно. Как только в соединении появляется большой пакет, он тут же теряется и соединение рвется. Частично это лечится принудительным сбросом флага DF и/или редактированием MSS в исходящих пакетах. Смотрите man iptables (искать mss).

Может кому пригодится.

07.11.2010 - 19:01
как насчет network manager ? все заждались давно....
07.11.2010 - 21:42
Пусть кто-нибудь уже сделает скрины, у меня netcfg а не network manager.
RSS-материал RSS-материал