Дано:
ОС: Ubuntu 9.10 (AMD64)
IP: 10.2.*.*
Маска подсети: 255.255.255.0
Шлюз 10.2.*.1
DNS-сервер: 10.1.1.1
Тип аутентификации: MD5 CHAP (можно посмотреть в свойствах соединения)
Источники:
http://help.ubuntu.ru/wiki/настройка_сети_вручную
http://www.pixelbeat.org/cmdline_ru_RU.html
и конечно, эта ветка форума.
В установочном CD нет пакетов для поддержки VPN. Их следует выкачать заранее
с официального репозитория.
Необходимы следующие пакеты:
pptp-linux - собственно, поддержка VPN в Ubuntu.
network-manager-pptp - дополнение к Network Manager, выглядит как закладка VPN в настройках.
Однако, визуальная настройка для при статическом IP не очень-то получается,
всё равно приходиться править файлы настроек. Поэтому, пакет network-manager-pptp
можно и не качать, тем более, что он опирается на несколько других пакетов, часть
из которых тоже нет в установочном CD.
Если будете качать и настраивать через Network Manager, проверьте маршруты и попробуйте
добавить туда
10.1.1.1 10.2.*.1 255.255.255.255 UGH 0 0 0 eth0
может быть, всё нижеописанное и не понадобится.
Если всё же решили установить network-manager-pptp, то для его установки потребуется
выкачать заранее следующие пакеты (пишу в порядке установки, отражающей зависимости):
libidl0
liborbit2
gconf2-common
libgconf2-4
libglade2
libgnome-keyring0
Есть информация (я не проверял), что в KUbuntu очень удобно настраивать VPN
утилитой KVPNC, предварительно установив следующие пакеты:
sudo aptitude install pptp-linux
sudo aptitude install pptpd
sudo aptitude install kvpnc
Все пакеты можно найти через сайт http://packages.ubuntu.com/
и установить на свежеустановленной системе.
После этого приступаем к настройке. Опишу настройку "вручную",
визуальная настройка интуитивно понятна: вызываем Network Manager,
открываем закладку VPN, выбираем тип VPN (там их три) и вводим
параметры в соответствующие поля.
Перед началом настройки проверьте (route -n), что таблица
маршрутов пуста.
Остановите Network Manager (http://help.ubuntu.ru/wiki/отключение_network_manager_а).
Если после правки файлов и перезагрузки компьютера значок Network Manager в трее
сообщает "Интерфейс не обрабатывается", значит, специально его отключать не нужно.
Обычно, отключение автоматического запуска в Ubuntu 8.10, 9.04, 9.10 не требуется,
т. к. при наличии пользовательских настроек в файле /etc/network/interfaces
Network Manager не вмешивается в работу сети.
Открываем /etc/resolv.conf
В нём нужна лишь одна строчка:
nameserver 10.1.1.1
Если таковой нет, значит принудительно создаем файл и
прописываем в нём адреса наших DNS серверов.
Редактируем файл /etc/ppp/options.pptp:
ЗАМЕЧАНИЕ: В файле /etc/ppp/options находятся множество опций по умолчанию.
Проверьте этот файл прежде, чем править /etc/ppp/options.pptp
возможно, писать надо будет совсем немного.
Я привожу содержание файлов вместе с комментариями (#), можно копировать весь текст целиком в свои файлы.
CODE
# Lock the port (дословно: блокировать порт?)
# Использовать lock в стиле UUCP для последовательного устройства
lock
# Аутентификация
# We don't need the tunnel server to authenticate itself
# Не требовать удаленную сторону назвать себя
noauth
# Тип аутентификации (PAP, EAP, CHAP, MSCHAP или MSCHAP-V2)
# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# отсутствующее (или закомментированное) запрещение (refuse) означает использование
# того и иного типа аутентификации
# (вы можете убрать эти запрещения (refuse), если сервер не использует MPPE)
# в соответствии с выбранным типом пароли следует вписывать в один из следующих файлов:
# /etc/ppp/pap-secrets, /etc/ppp/eap-secrets, /etc/ppp/chap-secrets ...
refuse-pap
refuse-eap
#refuse-chap
refuse-mschap
refuse-mschap-v2
# Сжатие
# выключение протоколов сжатия
nobsdcomp
# не использовать deflate сжатие (хотя говорят с ним работает быстрее, не знаю - не проверял)
nodeflate
# Не отключаться когда соединение закрыто, пробовать открыть его снова
persist
# 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)
# Также, если у вас в соединении используется шифрование, то добавляем
# одну из строк, в зависимости от типа шифрования (снять # у нужной строки)
#require-mschap-v2
#require-mppe-40
#require-mppe-128
#require-mppe.
# 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
# }}}
# Использовать lock в стиле UUCP для последовательного устройства
lock
# Аутентификация
# We don't need the tunnel server to authenticate itself
# Не требовать удаленную сторону назвать себя
noauth
# Тип аутентификации (PAP, EAP, CHAP, MSCHAP или MSCHAP-V2)
# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# отсутствующее (или закомментированное) запрещение (refuse) означает использование
# того и иного типа аутентификации
# (вы можете убрать эти запрещения (refuse), если сервер не использует MPPE)
# в соответствии с выбранным типом пароли следует вписывать в один из следующих файлов:
# /etc/ppp/pap-secrets, /etc/ppp/eap-secrets, /etc/ppp/chap-secrets ...
refuse-pap
refuse-eap
#refuse-chap
refuse-mschap
refuse-mschap-v2
# Сжатие
# выключение протоколов сжатия
nobsdcomp
# не использовать deflate сжатие (хотя говорят с ним работает быстрее, не знаю - не проверял)
nodeflate
# Не отключаться когда соединение закрыто, пробовать открыть его снова
persist
# 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)
# Также, если у вас в соединении используется шифрование, то добавляем
# одну из строк, в зависимости от типа шифрования (снять # у нужной строки)
#require-mschap-v2
#require-mppe-40
#require-mppe-128
#require-mppe.
# 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
# }}}
Создаем файл подключения /etc/ppp/peers/<имя подключения>,
например: /etc/ppp/peers/Факториал-Интернет (как у меня) или /etc/ppp/peers/myvpn.
CODE
# Читать дополнительные настройки из options.pptp
file /etc/ppp/options.pptp
# Ваш логин
name <логин>
# Устанавливаем имя удаленного хоста
remotename PPTP
# Команда для соединения
pty "pptp vpn.454.ru --nolaunchpppd"
# Тип аутентификации. Помимо +chap может использоваться тип +pap и др.
# Относится к удалённому хосту (remotename),
# при указании нужно дописать пароль в файл /etc/ppp/*-secrets
# The remote system (PPTP) is required to authenticate itself
# but I couldn't find any suitable secret (password) for it to use to do so.
#+pap
#+chap
# При отсутствии связи всегда пытаемся подключиться
maxfail 0
# Узнаем о «самочувствии» удаленной стороны каждые 60 сек
# если не указывать этот параметр - он будет взят из
# файла /etc/ppp/options со значением в 30 с.
lcp-echo-interval 60
# Если удаленная сторона не ответила 4 раза – считаем что нас отключили
lcp-echo-failure 4
# Установить маршрут по умолчанию
defaultroute
# эта строчка нужна для создания маршрута по умолчанию
# аналог команды "sudo route add default dev ppp0"
# здесь что-то о том, что маршрут по умолчанию для локалки не нужен
# лучше вместо него поставить маршрут для тоннеля
# http://l4u.jinr.ru/~kras/docs/beta/admin/ch04s03s04.html
# Иными словами - интерфейс eth0 занимает дефолтовый маршрут
# и тоннелю, который создаётся позже, уже ничего не остаётся
# надо разрешить тоннелю занять дефолтовый маршрут
replacedefaultroute
# Дополнительный параметр для скриптов ip-up, ip-pre-up, ip-down
ipparam Факториал-Интернет
# Включить «Deflate» сжатие
# (в файле options.pptp не должно быть параметра nodeflate)
# или не надо использовать параметры из options.pptp
#deflate 15,15
# Максимальный размер передаваемого пакета
# (изменяют этот параметр обычно тогда, когда часто отключается соединение
# или не открываются некоторые сайты)
#mtu 1412
# Максимальный размер получаемого пакета
#mru 1412
file /etc/ppp/options.pptp
# Ваш логин
name <логин>
# Устанавливаем имя удаленного хоста
remotename PPTP
# Команда для соединения
pty "pptp vpn.454.ru --nolaunchpppd"
# Тип аутентификации. Помимо +chap может использоваться тип +pap и др.
# Относится к удалённому хосту (remotename),
# при указании нужно дописать пароль в файл /etc/ppp/*-secrets
# The remote system (PPTP) is required to authenticate itself
# but I couldn't find any suitable secret (password) for it to use to do so.
#+pap
#+chap
# При отсутствии связи всегда пытаемся подключиться
maxfail 0
# Узнаем о «самочувствии» удаленной стороны каждые 60 сек
# если не указывать этот параметр - он будет взят из
# файла /etc/ppp/options со значением в 30 с.
lcp-echo-interval 60
# Если удаленная сторона не ответила 4 раза – считаем что нас отключили
lcp-echo-failure 4
# Установить маршрут по умолчанию
defaultroute
# эта строчка нужна для создания маршрута по умолчанию
# аналог команды "sudo route add default dev ppp0"
# здесь что-то о том, что маршрут по умолчанию для локалки не нужен
# лучше вместо него поставить маршрут для тоннеля
# http://l4u.jinr.ru/~kras/docs/beta/admin/ch04s03s04.html
# Иными словами - интерфейс eth0 занимает дефолтовый маршрут
# и тоннелю, который создаётся позже, уже ничего не остаётся
# надо разрешить тоннелю занять дефолтовый маршрут
replacedefaultroute
# Дополнительный параметр для скриптов ip-up, ip-pre-up, ip-down
ipparam Факториал-Интернет
# Включить «Deflate» сжатие
# (в файле options.pptp не должно быть параметра nodeflate)
# или не надо использовать параметры из options.pptp
#deflate 15,15
# Максимальный размер передаваемого пакета
# (изменяют этот параметр обычно тогда, когда часто отключается соединение
# или не открываются некоторые сайты)
#mtu 1412
# Максимальный размер получаемого пакета
#mru 1412
Если в файле /etc/ppp/options.pptp определились с выбором типа
аутентификации, правим файл /etc/ppp/<тип аутентификации>-secrets.
Для Факториала это /etc/ppp/chap-secrets
Вставляем в конец файла строку:
CODE
<логин> PPTP <пароль> *
Внимание!!! Между словами не пробел, а Tab.
Формат строчки может меняться в разных версиях Linux,
для проверки смотрите строчку-пример в файле
/etc/ppp/<тип аутентификации>-secrets.
Тоннель настроен. Сконфигурируем сетевую карту.
Редактируем файл /etc/network/interfaces.
CODE
auto lo
iface lo inet loopback
# eth0 - интерфейс сетевого устройства, через которое
# строчка для привязки статического IP к интерфейсу
# ниже для этого случая нужно указать IP-адрес и маску подсети
iface eth0 inet static
address 10.2.*.*
netmask 255.255.255.0
gateway 10.2.*.1
auto eth0
#Строки для автоподключения VPN - можно не писать и включать вручную.
# ppp0 - интерфейс соединения по VPN
iface ppp0 inet ppp
# имя провайдера без кавычек
# название VPN-соединения, которое создано в папке /etc/ppp/peers/.
provider Факториал-Интернет
# Включить интерфейс eth0 ()
# без следующей строчки интерфейс ppp0 в маршрутах вообще не создаётся
pre-up ip link set eth0 up
# добавление недостающего маршрута
pre-up route add -net 10.1.1.1 netmask 255.255.255.255 gw 10.2.*.1 dev eth0
# подключается VPN-соединение, определяется с помощью ifconfig -a
# эту строчку советуют ставить после iface ...
auto ppp0
iface lo inet loopback
# eth0 - интерфейс сетевого устройства, через которое
# строчка для привязки статического IP к интерфейсу
# ниже для этого случая нужно указать IP-адрес и маску подсети
iface eth0 inet static
address 10.2.*.*
netmask 255.255.255.0
gateway 10.2.*.1
auto eth0
#Строки для автоподключения VPN - можно не писать и включать вручную.
# ppp0 - интерфейс соединения по VPN
iface ppp0 inet ppp
# имя провайдера без кавычек
# название VPN-соединения, которое создано в папке /etc/ppp/peers/.
provider Факториал-Интернет
# Включить интерфейс eth0 ()
# без следующей строчки интерфейс ppp0 в маршрутах вообще не создаётся
pre-up ip link set eth0 up
# добавление недостающего маршрута
pre-up route add -net 10.1.1.1 netmask 255.255.255.255 gw 10.2.*.1 dev eth0
# подключается VPN-соединение, определяется с помощью ifconfig -a
# эту строчку советуют ставить после iface ...
auto ppp0
После изменения файла /etc/network/interfaces необходимо перезапустить
сетевые подключения командой:
sudo /etc/init.d/networking restart
Выполнение этой команды должно происходить без ошибок.
Её удобно использовать для проверки настроек.
Если ошибки есть – то скорее всего в файле /etc/network/interfaces
есть опечатки.
Совет: ошибка пишется вместе с номером строки, где она произошла,
так что сразу смотрим на сроку номер х и делаем всё как надо.
На заметку:
Следующая ошибка связана с местом команды auto ppp0 или auto eth0
в файле /etc/network/interfaces:
/etc/network/interfaces:34: misplaced option
ifdown: couldn't read interfaces file "/etc/network/interfaces"
Замечание:
В связи с заменой маршрута по умолчанию строчка
pre-up route add -net 10.1.1.1 netmask 255.255.255.255 gw 10.2.*.1 dev eth0
работает корректно только при загрузке компьютера, для чистой таблицы маршрутов.
Повторные запуски sudo /etc/init.d/networking restart вызовут ошибки добавления
и удаления маршрутов. Надо доработать файл /etc/network/interfaces в плане
удаления маршрутов при выключении соединения.
Из-за подобной недоработки предлагаю пока тестировать сеть без строк автозапуска
VPN в /etc/network/interfaces. Если всё будет в порядке: добавите эти строки и
и при перезагрузке будете иметь автоматический VPN.
Неожиданно заметил интересный эффект: чтобы при включенном VPN-подключении можно было пользоваться местной
локальной сетью, DC++, Jabber и др. к "моей" таблице маршрутов уже ничего не надо добавлять.
Проверяем интерфейсы
ifconfig -a
или
ip link show
Команда должна показать два интерфейса lo0 и eth0
(если дописали автоподключение, то все три: lo0, eth0, ppp0).
Если так и есть – все хорошо. Сеть настроена. Сейчас должен
идти пинг на шлюз и PPTP-сервер. Проверим:
ping -c3 10.1.1.1 - шлюз
ping -c3 10.2.*.1 - PPTP-сервер
Если не идет пинг на шлюз – проверьте подключен ли кабель,
если на шлюз пинг есть а на PPTP сервер нет – смотрим:
правильно ли прописана маршрутизация:
route -n
Если в файле /etc/network/interfaces не вписывать строки для автоподключения VPN,
то будет создана следующая таблица маршрутов:
CODE
10.2.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 10.2.*.1 0.0.0.0 UG 100 0 0 eth0
для работы локалки, без интернета, этого совершенно достаточно
последняя строчка - тот самый дефолтовый маршрут, занятый eth0.
После подключения тоннеля командой "sudo pon Факториал-Интернет" получаем следующее:
CODE
172.16.1.11 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.1.1.2 10.2.*.1 255.255.255.255 UGH 0 0 0 eth0
10.2.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
# здесь дефолтовый маршрут для eth0 уже заменён на ppp0
# проблема в том, что через шлюз 10.2.*.1 идёт только 10.1.1.2,
# но не 10.1.1.1, преобразующийся в "белый" IP 172.16.1.11
# нет маршрута 10.1.1.1 -> 172.16.1.11 -> 10.2.*.1
# добавим его командой "sudo route add -host 10.1.1.1 gw 10.2.*.1"
Работающая таблица маршрутов будет выглядеть так:
CODE
172.16.1.11 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.1.1.2 10.2.*.1 255.255.255.255 UGH 0 0 0 eth0
10.1.1.1 10.2.*.1 255.255.255.255 UGH 0 0 0 eth0
10.2.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
При настройке VPN, в процессе проб и ошибок перед каждой перезагрузкой
сети проверяйте через "ip link show" отсутствие тоннеля ppp0
иначе будут создаваться новые тоннели, что внесёт путаницу.
Тоннели, созданные на предыдущем шаге, закрывайте через poff.
Если не переждать разъединения или не отключить тоннель, то
будут появляться подключения по нарастающей [ppp0, ppp1, ppp2...].
Если решили сделать автоподключение VPN, то работающая таблица маршрутов
должна возникнуть сразу же после перезагрузки сети командой
sudo /etc/init.d/networking restart.
Если все хорошо, пингуется как шлюз так и PPTP сервер,
устраивает таблица маршрутизации:
запускаем браузер и проверяем работу интернета.
Если интернет всё-таки не заработал, проверим настройки командой
pon Факториал-Интернет debug dump logfd 2 nodetach
выход - Ctrl+C
С её помощью можно увидеть, какие параметры из каких файлов взялись
и взялись ли вообще. Будет написан так же результат проверки пароля
сервером (вдруг ошиблись в написании) или выборе протокола.
Для ручного включения-выключения тоннеля VPN
существуют следующие команды:
Включение:
sudo pon Факториал-Интернет
Выключение:
sudo poff Факториал-Интернет
Комментариев нет:
Отправить комментарий