Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

Keikenna0709

Ubuntu

Рекомендованные сообщения

Здравствуйте. Как настроить vpn соединение для Ubuntu 12.04?

Настройка Билайн Интернет в Ubuntu 12.04 на HP ProLiant MicroServer

 

Заметка по настройке сети Билайн-Интернет (быв. Корбина-Интернет) в Петербурге

Пошаговый, ручной способ, для лучшего понимания взаимодействия частей.

Девиз: пакет не знаешь куда идти? - иди на шлюз по умолчанию.

 

Чистый установленный сервер Ubuntu 12.04.

В принципе. методика применима к серверу Ubuntu 11.10, Ubuntu 11.04, Ubuntu 10.10.

Железо: HP Proliant Microserver, версия N40L.

Сервер будет использоваться как роутер домашней сети, сервер резервирования, сервер разработки.

Т.к. сеть интернет недоступна из коробки, ее надо настроить. Сервер устанавливался с образа на флешке, подготовленного встроенным в Ubuntu средством "Создание загрузочного диска".

Сложностью здесь может быть то, что требуемые пакеты для нормальной работы Билайн-Интернет, надо скачивать из сети Интернет.

Требуются пакеты:

1. Для PPTP VPN - pptp-linux

2. Для L2TP VPN - xl2tpd

 

Я обошел эту проблему первоначальным временным подключением сервера к обычному настольному компьютеру с Ubuntu 11.10, на котором дополнительно установил адаптер USB-Ethernet (или вторую сетевую плату). Сеть между ними я временно настроил со статическими IP адресами. На настольном компьютере произвел настройки, предоставляющие доступ в Интернет серверу (IP mascarade) через настроенное соединение на настольном компьютере. У сервера адресом шлюза по-умолчанию был выбран IP настольного компьютера.

Есть и другой способ, можно создать собственный загрузочный диск с необходимыми пакетами, перебрав диск Ubuntu 12.04.

Можно также перенести эти файлы на флешке, предварительно их загрузив тем или иным способом.

Есть и самый интересный способ, - использовать локальный репозиторий Ubuntu, которые поддерживает Beeline Интернет на своих серверах. У них есть локальный FTP сервер, по адресу 195.14.50.21 (см. Ресурсы п. 5), там же и репозитории пакетов Ubuntu.

 

Итак, временные настройки на настольном компьютере, обеспечивающие NAT для сервера:

$sudo -s

$echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf

$sysctl -p

$sudo iptables -t nat -I POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

 

 

$sudo iptables-save >/etc/iptables.conf

 

 

 

Настройки на сервере, в файле /etc/network/interfaces, добавил:

 

auto eth0

iface eth0 inet static

address 192.168.1.1

netmask 255.255.255.0

gateway 192.168.1.2

 

server$ sudo ifconfig eth0 up

 

Добавил маршрут по умолчанию, на сервере:

server$ route add default gw 192.168.1.2

 

Проверил и перепроверил соединения:

server$ ping 192.168.1.2

desktop$ ping 192.168.1.1

server$ ping www.google.com

 

Скачал требуемые пакеты

server$ sudo apt-get install pptp-linux xl2tpd

 

Заодно русифицировал консоль:

?

$ sudo apt-get install console-cyrillic

$ sudo dpkg-reconfigure console-cyrillic

$ sudo dpkg-reconfigure console-setup

Включить настройку консоли при загрузке. Для этого в файл /etc/initramfs-tools/initramfs.conf необходимо добавить параметр FRAMEBUFFER=Y. В результате будут показываться шрифты, приветствия на русском языке.

Обновить initramfs, чтобы в него добавились нужные параметры:

sudo update-initramfs -u

 

далее в файл /etc/rc.local добавляет строку:

/etc/init.d/console-cyrillic start

Перезагрузился.

 

Переименование сетевых интерфейсов в Ubuntu 12.04

 

Для удобства восприятия сетевых интерфейсов на сервере, сделаем переименование невнятных eth, в что-то более адекватное, например - интерфейс к провайдеру - district или beeline, интерфейс к домашней сети - home.

Это также позволит писать более-менее универсальные правила iptables.

 

Переименование делается на основе mac-адресов, сетевых плат в файле:

$sudo nano /etc/udev/rules.d/70-persistent-net.rules

Для строки сетевой платы (у меня usb-ethernet), я изменил только имя на beeline (быв. eth0).

Для встроенной сетевой платы, я задал имя home (быв. eth1).

Также изменил и /etc/network/interfaces

 

iface beeline inet dhcp

 

 

iface home inet static

address 192.168.3.1

netmask 255.255.255.0

 

auto home

auto beeline

 

 

Для моей домашней сети выбран диапазон 192.168.3.1/24

 

после перезагрузки, команда ifconfig выводит: beeline Link encap:Ethernet HWaddr .... ... home Link encap:Ethernet HWaddr .... ... Т.е. в системе получилось два понятных сразу, по их назначению, интерфейса. Гут. Это становится актуально при наличии многих интерфейсов, виртуальных бриджей и пр.

Позже, тоже самое проделал и для домашнего компьютера.

 

Настройка VPN PPTP Билайн-Интернет в Ubuntu 12.04

Вначале начал настраивать PPTP соединение, как более легкое и отработанное. Это туннель через соединение точка-точка (PtP)

Сервер VPN - vpn.internet.beeline.ru

Должен быть открыт порт PPTP - 1723.

MTU PPTP - 1460, MSS PPTP - 1452, MRU - 1500.

 

Особенностью подключения является то, что при получении IP-адреса через локальную (районную) сеть, также устанавливается шлюз по-умолчанию. Но этот шлюз, не обеспечивает доступ в Интернет, однако можно получить доступ к районными ресурсам провайдера.

Вот вывод команды, после загрузки и поднятия интерфейса beeline.

$sudo route -n

 

Таблица маршрутизации ядра протокола IP

 

здесь 10.123.240.1 - шлюз по-умолчанию. У меня beeline, у вас может быть eth0, eth1 или иное, если делали переименование.

 

Также, автоматически сервер VPN не становиться доступным, т.е.

$ ping vpn.internet.beeline.ru

не отрабатывает в моей системе.

 

Т.к. подразумевается что в системе должен быть один шлюз по умолчанию, а при подключении к pptp создается правильный шлюз, то старых районных шлюз все рекомендуют удалить. Что мы и проделаем ниже. Можно удалить до подключения ppp, а можно после.

$ ip route del default

 

Также на форумах Beeline Интернет настоятельно советуют настроить таблицу маршрутов, следующим образом - указать доступ к vpn-серверам, dns-серверам через шлюз (он же шлюз по-умолчанию) полученный нами по DHCP.

Очень странно, что не все эти маршруты не передаются автоматически в dhcp - запросе. А они передаются, только хитрым способом (см. ресурсы п.2). Для этого надо настроить еще клиент dhcp, через /etc/dhcp/dhclient.conf.

 

 

# Добавляем маршрут от районного шлюза к впн-серверу и к днс-серверам

# Обратите внимание шлюз, который нам выдал DHCP-сервер, в данном примере это 10.123.240.1 (районный шлюз).

 

Добавлю DNS-адрес, актуальный для моих условий Петербурга. У Вас может быть свои DNS-серверы, это можно выяснить у тех. поддержки.

$ sudo ip route add 85.21.192.3 via 10.123.240.1 dev beeline

или route add -host 85.21.192.3 gw 10.123.240.1

после добавления маршрута к dns серверу, команда route стала способна показывать dns-адреса маршрутов.

 

C VPN сервером сложнее, он не один, а их много, а выдает их адреса, один vpn.internet.beeline.ru

Для того, чтобы имя vpn сервера, было доступно, после добавления маршрута к DNS-серверу, добавляем маршрут по умолчанию через районный шлюз, а там пусть шлюз разбирается. Главное dns-сервер доступен.

$ sudo ip route add default via 10.123.240.1 dev beeline

 

В принципе, остальные маршруты не нужны для функционирования Интернет.

 

 

в папке /etc/ppp/peers создадим настройку для нашего соединения VPN, назовем ее beeline. В результате, мы сможем управлять соединением, с помощью команд вида, pon beeline и poff beeline, из под рута.

$ sudo touch /etc/ppp/peers/beeline

 

Заполним настройку beeline, для этого отредактируем ее:

$ sudo nano /etc/ppp/peers/beeline

Внесем следующее:

# Настройка подключения к провайдеру Beeline Интернет

# сервер: микросервер

# 15 марта 2012

name {мой логин}

remotename beeline

# Строка опции linkname передается в скрипты ip-up, ip-pre-up and ip-down

# может быть использована для создания скрипта, выполняющегося исключительно,

# только для этого соединения

linkname beeline-pptp

 

 

# Тип авторизации не eap и не pap, т.е. либо chap либо chap+MD5

refuse-eap

refuse-pap

#Устанавливать шлюз по умолчанию для соединения ppp defaultroute

 

# Заменить существующий шлюз по-умолчанию

# в журнале отражается как

# microserver pppd[2294]: replacing old default route to beeline [10.123.240.1]

# после отключения восстанавливается, удобно

# В этой конфигурации сделано так, а в L2TP несколько иначе

replacedefaultroute

 

 

# Использовать DNS-адреса, получаемые через PPP

# но можно не использовать, а прописать DNS сервера вручную в домашнем dhcp-сервере

usepeerdns

 

# Поддержание постоянного соединения, если оно рвется, то демон пытается соединиться

persist

# столько раз он пытается и только тогда выключается

maxfail 20

 

 

mtu 1476

pty "pptp vpn.internet.beeline.ru --nolaunchpppd"

 

 

# Не требовать от билайна того, что он билайн

noauth

# Возможно пригодится, - бесценный опыт из Интернета, собранный долгими мучениями пользователей

#nomppe

#nomppc

#sync

#lock

#nobsdcomp

#nodeflate

#nopcomp

#noaccomp

#updetach

 

где {мой логин} - это имя пользователя выданное провайдером Beeline, совпадает с именем Личного кабинета в Beeline. Пароль будет указан в другом файле

 

Указываем пароль для соединения

$ sudo nano /etc/ppp/chap-secrets

{мой логин} beeline {мой пароль}

 

Все. Теперь можно устанавливать тестовое соединение с Интернет. под sudo. Superuser DO.

# pon beeline

Чтобы отключиться:

# poff beeline

 

Чтобы просмотреть статистику подключения:

# pppstats

 

Быстро проверить результат выполнения (несколько последних строк вывода pppd)

# plog

 

 

 

Чтобы контролировать процесс установки соединения, надо выбрать вторую виртуальную консоль на сервере (alt+F2), войти в систему и выполнить команду:

 

 

$ tail -f /var/log/syslog

 

 

Команда будет показывать хвост журнала syslog, до тех пор, пока не нажмете Ctrl-C.

Alt+F1 - переключиться на первую консоль.

 

$ sudo ifconfig

Среди списка интерфейсов ищем обычно ppp0, и смотрим его IP адрес.

 

Следующее, не нужно делать, если опция replacedefaultroute нормально отрабатывает.

Удаляем маршрут по-умолчанию, установленный на интерфейс eth0:

$ sudo ip route del default

Далее, добавляем маршрут по умолчанию:

route add default gw {IP-адрес}

К примеру, у меня был IP-адрес 176.14.13.105, соотв. добавление маршрута выглядело так:

route add default gw 176.14.13.105

либо с использование команды ip (новый способ)

ip route add default via 176.14.13.105 dev ppp0

 

либо так:

ip route add default dev ppp0

 

Итак, после подъема соединения pon beeline (beeline - это имя для ppp peer), я делаю две команды:

ip route del default

ip route add default dev ppp0

 

 

Проверка соединения:

$ sudo ping www.google.com

Должно работать, при синтаксически верных файлах и правильных паролях. PPtP - для доступа в Интернет, более менее отработанная технология.

 

После отключения от Интернет, надо восстановить маршрут по умолчанию, у меня через beeline.

$ sudo ip route add default via ..... dev beeline

автоматически восстанавливается, если работает опция replacedefaultroute.

 

 

 

Для автоматического поднятия соединения вносим в файл /etc/network/interfaces, запись относительно ppp

 

 

# Подключение сети Интернет при загрузке и заодно переименовываем интерфейс в internet

iface ppp9 inet ppp

provider beeline

# делаем так, что vpn-подключение всегда создает интерфейс вида: ppp9

# это для того, чтобы другие ppp соединения имели возможность выбрать номер 0-8.

unit 9

# Также строка для выполнения, команд после поднятия интерфейса ppp9

post-up ip link set dev ppp9 down && ip link set dev ppp9 name "internet" && ip link set dev internet up && ip route add default dev internet

 

 

auto ppp9

 

 

после перезагрузки видим четкие и понятные интерфейсы

$ ifconfig

lo ...

beeline ...

home ...

ppp9 ...

 

иногда интернет отваливается, можно поднять ifup ppp9, а остановить ifdown ppp9.

 

 

 

 

 

 

Настройка L2TP соединения. УЖЕ НАСТРОЕНО.

L2TP сервер VPN - tp.internet.beeline.ru

L2TP - 1701, MTU L2TP 1460, MSS L2TP - 1460

 

Особенности: у нас есть подключение ethernet к локальной (районной) сети Beeline Интернет (быв. Корбина). Адрес IPv4 получается динамически, через DHCP. Интернет доступен через l2tp сервер. Протокол рукопожатия - простой CHAP. Существуют проблемы с правильной настройкой подключения в Linux, с таблицей маршрутизации. Например, соединение vpn есть, а интернета нет.

Протокол DHCP сообщает нам адрес шлюза, но через него мы не можем выйти в Интернет, надо поднимать l2tp соединение, так уж устроено в Билайн-Интернет.

При каждом обращении по адресу tp.internet.beeline.ru выдается какой-либо vpn сервер, с собственными адресом. Т.е. похоже какой-то балансировщик нагрузки. Это исключает возможность статически прописать все IP-адреса vpn-серверов.

 

Настройка L2TP долго не давалась, пока не были выяснены все нюансы подключения, обходы багов и пр., основная засада от корбины-билайна.

 

Куда я вносил изменения:

1. /etc/dhcp/dhclient.conf

2. /etc/network/interfaces

3. /etc/xl2tpd/xl2tpd.conf

4. /etc/ppp/options.xl2tpd

5. /etc/ppp/options

6. /etc/ppp/ip-up.d/delroute

7. /etc/ppp/chap-secrets

 

Итак, после установки пакета xl2tpd.

 

root@microserver:~# xl2tpd -v

xl2tpd version: xl2tpd-1.3.1

 

Видим, на сервере Ubuntu 12.04 установлена версия 1.3.1 демона xl2tpd.

 

Порядок действий и ручных проверок подключения по протоколу L2TP

Предварительно.

Отключен интерфейс beeline. В файле /etc/network/interfaces

минимально задано, для начала:

iface beeline inet dhcp

Таблица маршрутов пустая, за исключением маршрута в home. Маршрута по умолчанию - нет, у меня он удаляется автоматически при поднятии home. Если он есть, его надо удалить, чтобы он не мешался при поднятии интерфейса beeline.

 

1. Открываем дополнительную консоль, на которой исполняем команду просмотра хвоста системного журнала. Тут мы будем наблюдать за ходом подключения:

$ tail -f /var/log/syslog

 

2. Поднимаем Ethernet-интерфейс beeline.

$ sudo ifup beeline

 

В консоли наблюдаем получение IP-адреса по DHCP.

Распечатываем таблицу маршрутов:

$ ip route

 

Видим, что получены различные маршруты.

 

Просматриваем содержимое файла /etc/resolv.conf

$ cat /etc/resolv.conf

Видим серверы имен, полученные по dchp и внесенные сюда командой ifup, через вызов resolvconf.

Записываем на бумаге их.

 

3. Начинаем проверку доступности L2TP-сервера. Делаем ping.

$ ping tp.internet.beeline.ru

Видим доступность L2TP-сервера, потому что работает маршрут по-умолчанию, через районный шлюз.

 

4. Делаем пинг, до DNS серверов.

Видимо их доступность, потому что работает маршрут по-умолчанию, через районный шлюз.

 

5. Начинаем вносить маршруты до DNS-серверов в таблицу маршрутизации.

ip route add 85.21.192.3 via 10.123.240.1

ip route add 213.234.192.8 via 10.123.240.1

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

 

 

6. Делаем пинг, до L2TP сервера. Несколько раз. При работающем маршруте по-умолчанию

$ ping tp.internet.beeline.ru

 

$ ping tp.internet.beeline.ru

 

Видим, что каждый раз IP-адрес L2TP сервера меняется, но они кучкуются в одной подсетке.

 

7. Добавляем маршрут к выявленной подсетке серверов в таблицу маршрутизации, через районный шлюз

ip route add 83.102.254.0/24 via 10.123.240.1

 

8. Удаляем маршрут по-умолчанию

ip route del default

 

9. Проверяем доступность L2TP-серверов, при удаленном маршруте по-умолчанию.

$ ping tp.internet.beeline.ru

Видим, что DNS-имя L2TP-сервера, переводится в IP-адрес. Каждый раз новый, как ранее.

Т.е. при отключенном маршруте по умолчанию, L2TP-сервер доступен. DNS-сервера доступны. Мы теперь можем использовать доменное имя L2TP-сервера в конфигурационных файлах.

 

10. Готовим урезанные версии конфигурационных файлов демона xl2tpd, для целей ручного тестирования и поднятия туннеля.

 

Файлы конфигураций xl2tpd находятся:

/etc/xl2tpd/xl2tpd.conf

/etc/ppp/options.xl2tpd

 

Редактируем, основываясь на прочтении man xl2tpd.conf

Временно исключаем ряд опций: redial

Временно добавляем ряд опций отладки: debug network, debug tunnel

 

 

$ sudo nano /etc/xl2tpd/xl2tpd.conf

 

[global]

access control = yes

port = 1701

auth file = /etc/ppp/chap-secrets

debug network = yes

debug tunnel = yes

 

 

[lac beeline]

lns = tp.internet.beeline.ru

require chap = yes

name = <ваш логин>

ppp debug = yes

pppoptfile = /etc/ppp/options.xl2tpd

tx bps = 1000000000

autodial = yes

 

 

lac - L2TP Access Concentrator (LAC)

lns - L2TP Network Server (LNS)

Замените строчку <ваш логин> на свой, он совпадает с логином для входа в личный кабинет.

На моем тарифе, опция tx bps роли не играет. Без нее тоже работает.

 

{:content:}nbsp; sudo nano /etc/ppp/options.xl2tpd

 

# Опции для L2TP подключения к Beeline Интернет

# сервер: микросервер

# Дата изменения:

unit 8

name <ваш_логин>

remotename = l2tp

linkname = beeline-l2tp

connect /bin/true

noauth

defaultroute

 

Небольшой такой, компактный файл опций. Все нужное, ничего лишнего, для начала

Опция defaultroute - определяет, что туннель ppp8 будет установлен как маршрут по-умолчанию в таблице маршрутизации. Здесь важно, чтобы в таблице маршрутизации, перед установлением соединения l2tp, не было маршрута по умолчанию, иначе pppd не станет устанавливать маршрут по-умолчанию.

Опция linkname используется в скрипте delroute в папке /etc/ppp/ip-up.d/ ,

чтобы выполниться только когда поднимается соединение l2tp.

 

Можно добавить опцию, mtu 1460. У меня, без этой опции скорость на отдачу низкая. Есть еще mru 1460.

 

 

 

11. Исправляем цепляющиеся опции pppd, которые присоединяются к нашим опциям из файла /etc/ppp/options

 

Особенность, в том, что демон pppd присоединяет файл /etc/ppp/options к конфигурации /etc/ppp/options.l2tp

 

Просмотр опций которые присоединяются:

egrep -v '#|^ * /etc/ppp/options

 

Вот что я оставил: asyncmap 0 xonxoff lock hide-password lcp-echo-interval 30 lcp-echo-failure 4 noipx

12. Теперь основная проблема pppd (см. Ресурсы. п.8) у провайдера Билайн (быв. Корбина)

 

Цитата: "Распространённая ошибка при настройке бывает в том, что после поднятия ppp0 не указывают маршрут до vpn-сервера, поэтому ppp0 генерирует гигабайты tx bytes. "

 

В ручном режиме, я исправлял так, после установления соединения. Если успевал.

$sudo ip route del 83.102.254.204 dev ppp8

где 83.102.254.204 IP-адрес L2TP сервера

 

13. Создаем файл, в пути /etc/ppp/ip-up.d/delroute для обхода особенности с паразитным маршрутом

Сразу делаем его исполняемым, чтобы не забыть.

$ sudo chmod +x /etc/ppp/ip-up.d/delroute

 

Редактируем:

$ sudo nano /etc/ppp/ip-up.d/delroute

 

 

#!/bin/sh

# Скрипт для удаления паразитного маршрута

# env > /tmp/env.vpn

if [ $LINKNAME = "beeline-l2tp" ]; then

ip route del $5 dev $1

echo "Выполнен delroute" >> /var/log/syslog

echo "5 параметр:" $5 >> /var/log/syslog

echo "1 параметр:" $1 >> /var/log/syslog

else

echo "Не выполнен delroute" >> /var/log/syslog

fi

exit 0

 

 

В этом скрипте, одно условие, которое выполняется, когда исполняются наши опции из файла /etc/ppp/options.xl2tpd. Опция linkname и играет роль условия при котором этот скрипт будет выполнен.

Параметры $LINKNAME, $5,$1 передаются в скрипт демоном. $LINKNAME, устанавливается опцией linkname, $1 - это имя вновь создаваемого интерфейса ppp. По умолчанию, ppp0, но можно изменить опцией pppd - unit. Я себе сделал unit 8.

На основе имени линка, я определяю, что подключение L2TP и соответственно удаляю паразитный маршрут, для всех остальных ppp-соединений ничего не случается.

Ранее используемая опция ipparam не работает у меня, в ней не передаются параметры.

 

 

14. Редактируем файл /etc/ppp/chap-secrets

Вносим имя пользователя (логин) и пароль

 

$ sudo nano /etc/ppp/chap-secrets

 

 

<ваш логин> l2tp <пароль>

 

Заменить <ваш логин> вашим именем пользователя (договора), а <пароль> паролем. У билайн имя пользователя выглядит приблизительно так - 0123456789.

 

 

15. Установка соединения и разрыв соединения L2TP, посредством service

service - команда управления сервисами SysV init.

Файл относящийся к xl2tpd находится в /etc/init.d/xl2tpd. Он исполняемый.

 

$ sudo service xl2tpd start

Сервис автоматически начнет устанавливать соединение pppd. В консоли наблюдаем за ходом выполнения.

 

Например, я забыл сделать файл delroute исполняемым, в результате паразитный маршрут не удалялся, Интернета не было. При этом быстрый рост счетчика TX на интерфейсе ppp0. За пару минут, он достигал значения 4 гигабайта и соединение разрывалось.

Т.к. у меня установлено только однократное подключение, в памяти оставался висеть демон xl2tpd.

 

Останавливал я его командой.

$ sudo service xl2tpd stop

 

После этого, все было чисто.

 

Разрывом - установкой соединения можно управлять и не останавливая demon xl2tpd, через pipe /var/run/l2tp-control

 

Из документации к xl2tpd, команды выполняются следующим образом, при правах суперпользователя:

echo "t tp.internet.beeline.ru" >/var/run/xl2tpd/l2tp-control

echo "c beeline" > /var/run/xl2tpd/l2tp-control

echo "d beeline" >/var/run/xl2tpd/l2tp-control

 

beeline - это мой настроенный LAC указанный в файле /etc/xl2tpd/xl2tpd.conf

 

Цитата:

"

t <host> - create a tunnel to <host>

c <tid> or <entry> - originate an l2tp call on the tunnel identified locally by <tid>, or dial the entry <entry>

h <cid> - hang up a call with the local identifier <cid>

d <tid> or <entry> - disconnect the tunnel locally identified by <tid> or a lac entry <entry>

"

 

Если отключить опцию autodial в /etc/xl2tpd/xl2tpd.conf , то можно запустить демона xl2tpd без автоподключения, а подключение выполнять по требованию.

 

 

В принципе это все позволяет создать в ppp/peers новое подключение и управлять им через pon / poff, но надо умудриться.

 

Как-то, случился у меня CHAP authentication failed: Authentication failed, минут 10 не мог понять, причину отказа. Оказалось кончились деньги на счете. Воспользовался доверительным платежем. Инет подключился, с небольшой задержкой. Пополнил через Интернет. Очень удобно.

Хотелось бы в логах видеть причину CHAP Authentication failed. Например сообщение: деньги кончились.

 

Иногда случается:

 

Connection terminated.

Mar 22 23:17:47 microserver xl2tpd[7997]: network_thread: recv packet from 83.102.254.x, size = 88, tunnel = 21415, call = 22037 ref=0 refhim=0

Mar 22 23:17:47 microserver xl2tpd[7997]: handle_avps: don't know how to handle atribute 46.

Mar 22 23:17:47 microserver xl2tpd[7997]: handle_avps: don't know how to handle atribute 104.

Mar 22 23:17:47 microserver xl2tpd[7997]: control_finish: Connection closed to 83.102.254.x, serial 1 (Locally generated disconnect)

 

Лечиться это у меня обычно либо перезапуском демона xl2tpd, либо установление нового туннеля: echo "t tp.internet.beeline.ru" >/var/run/xl2tpd/l2tp-control и последующим соединение: echo "c beeline" > /var/run/xl2tpd/l2tp-control

 

 

Для окончательно включения функции NAT и транзита пакетов, отредактируем:

$sudo nano /etc/sysctl.conf

net.ipv4.ip_forward=1

 

Осталось настроить iptables, чтобы при загрузке они пополнялись правильными правилами.

итак, у меня

home - интерфейс домашней сети

beeline - интерфейс провайдера

ppp9 - интерфейс к сети Интернет через VPN PPTP

ppp8 - интерфейс к сети Интернет, через VPN L2TP

 

Минимально необходимые команды, для обеспечения интернетом домашней сети, при 2 типах подключения:

iptables -t nat -I POSTROUTING -o ppp9 -j MASQUERADE

iptables -t nat -I POSTROUTING -o ppp8 -j MASQUERADE

iptables -t nat -I POSTROUTING -o beeline -j MASQUERADE

 

iptables -A FORWARD -i home -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i ppp8 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i ppp9 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i beeline -m state --state RELATED,ESTABLISHED -j ACCEPT

 

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

 

 

Последние 5 правила добавляются по умолчанию в таблицу "фильтр", опция -t filter. Однако, без них работает с перебоями, то страницы не открываются, то долго, одни сайты легко, другие задумчиво.

Если еще упростить,для одного соединения то:

iptables -t nat -I POSTROUTING -o ppp8 -j MASQUERADE

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

 

 

 

Опционально, пока не проработано окончательно.

Определим место хранения настроек iptables в /etc/default/iptables

Сохранение

$sudo iptables-save > /etc/defualt/iptables

Восстановление

$sudo iptables-restore < /etc/defualt/iptables

 

 

Обеспечение автоматического подъема соединения L2TP при загрузке микросервера

 

В этом разделе, я настроил автоматическое установление соединения посредством создания "работ" Upstart. Upstart , в Ubuntu, - основная подсистема инициализации сервисов. У меня есть статья на тему Upstart.

Файл /etc/init/internet.conf создаем с правами суперпользователя

 

$ sudo nano /etc/init/internet.conf

 

# Работа по поднятию соединения с Интернет Билайн через VPN

# сервер: микросервер

# Дата изменения: 24 марта 2012

 

 

author "gimmor.blogspot.com"

description "управление соединением с Интернет Билайн"

 

 

exec /usr/sbin/xl2tpd -c /etc/xl2tpd/xl2tpd.conf

expect fork

 

 

pre-start script

test -d /var/run/xl2tpd || mkdir -p /var/run/xl2tpd

end script

 

 

post-start script

iptables -t nat -I POSTROUTING -o ppp8 -j MASQUERADE

end script

 

 

pre-start script

# нет пока

end script

 

 

post-stop script

iptables -t nat -D POSTROUTING -o ppp8 -j MASQUERADE

end script

 

 

# Сервис пытается запуститься после поднятия beeline

start on net-device-up IFACE=beeline

stop on net-device-down IFACE=beeline

 

 

В последних двух строчках в параметре IFACE надо указать свое актуальное имя интерфейса провайдера, если оно не изменено на beeline. У меня изменено.

Важная опция в файле: expect fork, она позволяет системе Upstart правильно получить PID демона xl2tpd, чтобы корректно управлять запуском/остановкой службы internet.

 

 

 

Также надо не забыть отключить запуск сервиса xl2tpd через службу SysV.

sudo chmod -x /etc/init.d/xl2tpd

для избежания конфликта и недоразумений.

 

При этом в файле /etc/network/interfaces, устанавливаются правильные маршруты, для корректного последующего поднятия ppp8 (xl2tpd L2TP PPP).

 

iface beeline inet dhcp

post-up iptables -t nat -I POSTROUTING -o beeline -j MASQUERADE

post-up iptables -t filter -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

post-up ip route del default

post-up ip route add 85.21.192.3 via 10.123.240.1

post-up ip route add 213.234.192.8 via 10.123.240.1

post-up ip route add 83.102.254.0/24 via 10.123.240.1

post-up ip route add 224/4 via 10.123.240.1

 

Также, в /etc/network/interfaces , убрать строку auto ppp9, относящуюся к PPTP, чтобы оно не поднималось автоматически и не вступало в конфликт с ppp8.

 

После перезагрузки - работает. Соединение устанавливается автоматически. При всех входящих, - баланс на лицевом счете положительный и пр, кабель физически подключен.

 

В результате:

- автоматическое поднятие соединения L2TP во время загрузки микросервера

- управление остановкой службы internet, посредством стандартной команды: $sudo stop internet

- управление запуском службы internet, посредством стандартной команды: $ sudo start internet

- получение состояния службы internet, посредством стандартной команды: $ sudo status internet

Надо заметить, из-за особенностей серверов Билайна, перезапуск службы internet командой initctl reload internet, не всегда, а в большинстве случаев всегда, не срабатывает. Я это понимаю так, что на сервере Билайна не окончательно отключается туннель. В результате в журнал сыпятся сообщения вида:

 

 

Mar 24 07:04:08 microserver xl2tpd[2628]: Can not find tunnel 28736 (refhim=0)

Mar 24 07:04:08 microserver xl2tpd[2628]: network_thread: unable to find call or tunnel to handle packet. call = 0, tunnel = 28736 Dumping.

Ну что же, надо подождать минут 3-4 и потом запускать start.

 

 

Первоначально, между запуском и остановкой службы internet, надо делать паузу, чтобы дать время процессам завершиться.

 

И всё равно, это не позволяет вовремя получить сообщение на клиенте о пропадании сети Интернет. :-(.

 

Конфигурация - не окончательное, еще не используется автоматическое поднятие при разрыве ppp-соединения. при наличии поднятого туннеля (опции redial в /etc/xl2tpd/xl2tpd.conf). Просто, пока не решил, как микросервер будет это обрабатывать.

 

 

Мы затронули изменениями файлы, каждый файл содержит строчку-метку "микросервер", которая, в дальнейшем позволяет этот файл направить на резервное копирование.

 

Также можно создать собственный пакет конфигурации, для быстрого развертывания. Пока не сделал.

 

И да, перезагрузка в Ubuntu - помогает.

Часто после манипуляций с подключениями на сервере, начинают не открываться страницы на клиенте. Для исправления, на клиенте, переподключаюсь. Сетевой интерфейс обновляет dns и пр., и пропадания проходят.

 

 

 

Опционально. Локальные репозитории Beeline Интернет

Укажем маршрут до сервера с репозитариями Beeline Интернет:

$sudo ip route add 195.14.50.21 via РАЙОННЫЙ_ШЛЮЗ

заменить РАЙОННЫЙ_ШЛЮЗ IP-адресом собственного районного шлюза, получаемого по dhcp (default gateway)

2. Исправляем список репозиториев

$sudo cp /etc/apt/soources.list /etc/apt/sources.list.orig

$sudo nano /etc/apt/sources.list

 

Содержимое файла должно быть таким, для версии сервера 12.04 LTS (precise):

deb http://195.14.50.21/pub/Linux/ubuntu/ precise main restricted

deb http://195.14.50.21/pub/Linux/ubuntu/ precise-updates main restricted

deb http://195.14.50.21/pub/Linux/ubuntu/ precise universe

deb http://195.14.50.21/pub/Linux/ubuntu/ precise-updates universe

deb http://195.14.50.21/pub/Linux/ubuntu/ precise multiverse

deb http://195.14.50.21/pub/Linux/ubuntu/ precise-updates multiverse

deb http://195.14.50.21/pub/Linux/ubuntu/ precise-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu precise partner

deb http://195.14.50.21/pub/Linux/ubuntu precise-security main restricted

deb http://195.14.50.21/pub/Linux/ubuntu precise-security universe

deb http://195.14.50.21/pub/Linux/ubuntu precise-security multiverse

 

Обновляем репозитарии:

$sudo apt-get update

Обновляем пакеты, если есть обновления

$sudo apt-get upgrade

 

 

 

Выводы

Обеспечить стабильный Интернет посредством протоколов PPP - это трудная, почти не выполнимая задача. То что оно как-то работает, при этом влияющих факторов - море, это чудо. Отсюда проистекает и то понимание, что соединение может рваться по причинам, которые нам не ведомы в момент настройки и предусмотреть реакцию на них заранее сложно.

 

 

 

 

 

 

Ресурсы

1. В. Федорчук. Настройка сетевых интерфейсов с помощью IPROUTE 2, http://www.opennet.r...route2.txt.html

2. Получение полных маршрутов сети Beeline через DHCP. http://homenet.beeli...howtopic=297786

3. Скрипт помощник vpn. http://help.ubuntu.r...D0%BF%D1%82_vpn

4. Документация Ubuntu. Настройка сети в ручную. http://help.ubuntu.r...%BD%D1%83%D1%8E

5. Локальные репозитории Ubuntu в Beeline Интернет. http://president.syt...korbinyi-ubuntu

6. По теме, от пользователя услуг Yorick. http://yorick.homeli...rotokol/#more-5

7. Подключения к Internet Beeline (Corbina) в Debian GNU/Linux 6 по протоколу l2tp. http://www.opennet.r...info/2539.shtml

8. О проблеме демона PPPD, в приложении к Корбине (а теперь и Билайн). http://homenet.beeli...showtopic=69646

 

Автор: Dmitriy

Источник

image.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Роутер хороший 2500-3000р стоит

и не надо геморроя с терминалом, и конфигами

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Роутер хороший 2500-3000р стоит

и не надо геморроя с терминалом, и конфигами

хороший роутер для билайна столько не стоит:facepalm:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах