Про использование GSM/3G/4G-модемов в 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
На этом всё. Приятной работы!
morbo 2012-06-10 08:01:59 (#)
auto ufanet
iface ufanet inet ppp
provider ufanet
И всё нормально работает. Правда это не ppp через gprs-модем, а ppp через pptp-client. Но это, по моему, не существенно.