В этой статье я расскажу как настроить мобильный интернет (GPRS/EDGE/UMTS/etc), когда в округе лишь безысходность и нет других средств доступа в Сеть :( Хотя, справедливости ради, надо отметить, что связь третьего поколения (в России это, фактически, синоним UMTS) заставляет задуматься о «нужности» классического «проводного» интернета.
Итак, для настройки соединения требуются пакеты bluez и wvdial, а также описание подключения.
Начинать настройку не стоит без, собственно, конфигурационного файла подключения /etc/wvdial.conf.
Для Мегафон-Москва он выглядит так:
[Dialer Defaults]
Modem = /dev/rfcomm0
Baud = 57600
Init = ATZ
Init2 = AT+CGDCONT=1,"IP","internet"
Dial Command = ATM1L3DT
Phone = *99#
Username = ''
Password = ''
New PPPD = yes
Сначала ищем bluetooth-устройство с сервисом «Dial-Up Networking», из вывода узнаём номер канала, соответствующего этому сервису, а также адрес устройства:
$ sdptool search DUN
Далее определяем его в системе:
$ rfcomm connect rfcomm0 [адрес] [канал]
И, наконец, создаём туннель:
$ sudo wvdial
Убеждаемся, что в системе появился новый интерфейс ppp0:
$ ifconfig ppp0
Всё, теперь можно сёрфить. Да, много ручной работы, но это же UNIX-way, он позволяет обнаружить неисправность или «кривую» логику работы максимально быстро. А чтобы автоматизировать рутинный труд, люди придумали скрипты. Далее представлен скрипт, названный мной «blueconn», для подключения к интернету в одну команду.
#!/bin/bash
CFG="$HOME/.mywvdial.conf"
if [ "$USER" != "root" ] ; then
echo "ERROR: Run script as superuser"
exit 1
fi
echo "Searching for device with DUN service..."
SRCHRES="$(sdptool search DUN)"
CHAN=$(echo "$SRCHRES" | grep "Channel:" | head -n 1 | awk '{ print $2 }')
if [ -z "$CHAN" ] ; then
echo "ERROR: Cannot find device with Dial-Up Networking service"
exit 1
fi
ADDR=$(echo "$SRCHRES" | grep "Searching for DUN on " | head -n 1 | awk '{ print $5 }')
if [ -z "$ADDR" ] ; then
echo "ERROR: Cannot get device address"
exit 1
fi
echo "$ADDR (channel $CHAN) found. Trying to connect..."
(rfcomm connect rfcomm0 $ADDR $CHAN >& /dev/null) &
sleep 6
CONNPID=$(jobs -p)
if [ -z "$CONNPID" ] ; then
echo "ERROR: Cannot connect to device"
exit 1
fi
echo "Connected. Opening tunnel..."
wvdial -C $CFG
Теперь пара примечаний по использованию. Как видно из кода, скрипт использует конфигурационный файл соединения, лежащий в домашней папке — ~/.mywvdial.conf, что позволяет каждому пользователю иметь свои настройки подключения, поэтому перед использованием скопируйте /etc/wvdial.conf в «хомяк» под именем .wvdial.conf (sic!). А чтобы каждый пользователь мог находить скрипт без указания полного пути до него, скопируйте скрипт, к примеру, в /usr/local/bin (и не забудьте сделать его исполняемым).
После этого подключение будет происходить в одну команду:
$ sudo blueconn