Использование 3G-модема в Linux без wvdial и network manager

Сотовая связь #GSM

Материал упоминает устаревшие версии и утилиты: старая версия Ubuntu. Проверьте актуальность для вашей системы.

MooSE 2012-06-10 00:55:43 Про использование GSM/3G-модемов в Linux написано уже много, но почти все руководства предполагают использование утилит wvdial или network manager для подключения. Эти утилиты позволяют существенно упростить процесс подключения, однако при их использовании невозможно полностью управлять опциями pppd, хотя это бывает необходимо (например при подключении нескольких модемов и/или когда надо "привязывать" подключения к конкретному ppp-интерфейсу).

Далее будет показано как можно настроить подключение к интернету с использованием GSM/3G-модема в дистрибутивах Debian/Ubutnu без использования вспомогательных утилит.

Начальные условия: сервер под управлением Ubuntu 12.04, модем Huawei E171 с симкой оператора "Мегафон", доступный в системе как "/dev/ttyUSB0".

Задача: подключиться к интернету используя только pppd и привязать соединение к интерфейсу ppp100.

Переходим к решению задачи. Обычно для дозвона пишут свой chat-скрипт, и почему-то не многие знают что в поставке pppd уже есть chat-скрипт для GSM/3G-модемов, доступный в большинстве дистрибутивов Linux как "/etc/chatscripts/gprs". Поэтому часть с написанием этого скрипта можно пропустить и сразу приступить к описанию подключения в pppd. Для этого создадим файл "/etc/ppp/peers/Megafon" следующего содержания:


# Используемое для подключения устройство
/dev/ttyUSB0

# chat-скрипт
# В параметре "-T" передаётся имя точки доступа
connect '/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet'

# Надо ли менять маршрут по умолчанию
# Закомментируйте если не надо
defaultroute

# Использовать ли DNS-сервера провайдера
# Закомментируйте если не надо
usepeerdns

# Номер ppp-интерфейса (в данном случае будет ppp100)
unit 100

# Подключаться в случае обрыва
persist

# Перепосылать пакеты авторизации каждые 60 секунд
# Позволяет избежать обрыва соединения при отсутствии трафика
chap-interval 60

# Идентификатор соединения, используемый для поиска паролей в соответствующих файлах,
# А так же передаваемый ip-up и ip-down-скриптам
ipparam Megafon

# Имя пользователя (пароль описывается в файле "/etc/ppp/chap-secrets")
user "gdata"

# Отключаем любое сжатие
nopcomp
novjccomp
nobsdcomp
nodeflate
noaccomp

# Правильная обработка обрывов соединения
lcp-echo-interval 2
lcp-echo-failure 3

# IP адрес мы будем получать от провайдера, а не назначать сами
noipdefault

Теперь вписываем в файл "/etc/ppp/chap-secrets" следующие строки


"gdata"         Megafon         "gdata"

И подключаемся командой:


pon Megafon

Соответственно отключиться можно командой:


poff Megafon

Чтобы соедиение устанавливалось автоматически при загрузке нужно добавить запись в файл "/etc/network/interfaces". Согласно документации она должна выглядеть вот так:


auto Megafon
iface Megafon inet ppp
        provider Megafon

Однако в утилите ifup есть баг, который приводит к тому, что сразу после успешного подключения pppd получает SIGHUP и соединение рвётся. Ошибка эта очень древняя и судя по сообщениям на форумах и баг-трэкерам дистрибутивов надеяться на её исправление в ближайшем будущем не стоит. Поэтому используем небольшой хак: опишем интерфейс не как ppp, а как manual:


auto Megafon
iface Megafon inet manual
       pre-up /usr/bin/pon Megafon
       pre-down /usr/bin/poff Megafon

На этом всё. Приятной работы!

Тэги: 3g, pppd, e171, мегафон

Оценка статьи 0

Комментарии

Пока комментариев нет.