2008-05-21

Nokia N810 и интернет через компьютер

Когда я выбирал и покупал Nokia N 810, руководствовался несколькими пожеланиями:
1) большой экран, на котором удобно смотреть видео и читать книги;
2) привычный Linux на борту (кстати основанный на Debian, а значит убунтологи там почти как дома). Удобные программы (включая любимую консоль) и ощущение свободы. На аппарат немедленно водворились Pidgin и Mplayer;
3) отсутствие телефонного модуля (предпочитаю небольшой телефон с bluetooth и GPRS носить отдельно).
Все это я получил, и был очень рад такому делу. Но, как и многие до меня, через денек стал задаваться вопросом: неужели устанавливать программы из репозитариев мне придется только через WiFi (бегая в поисках точки по городу) или GPRS (отстегивая денежки на телефон)? Ни то ни другое мне не нравится. Линукс приучил меня к бесплатности софта, а тут — такая засада! Нечестно!
Размышляя об этом, и поглядывая на прилагающийся в комплекте USB-шнур, подумал — наверняка есть способ организовать доступ в интернет через «Большой Настольный Компьютер». Перерыл полинтернета. Наткнулся на несколько советов и рекомендаций. Сталкиваясь с затруднениями и вопросами, копая глубже и экспериментируя я пришел к просветлению по поводу темы данной заметки. Чем и хотел бы с вами поделиться.
Итак, нам потребуется: аппарат Nokia N 810, USB-шнур из комплекта, БНК с Ubuntu, маленький бубен. Начинаем шаманить!

РАБОТАЕМ С NOKIA N 810
Для начала устанавливаем на устройство маленькую утилиту, позволяющую удобно становиться root. Называется она becomeroot. Кидаем deb-пакет на Nokia и запускаем. У меня установилось без проблем.
Далее находим в меню и запускаем консоль. В консоли пишем:
sudo gainroot
- и вуаля! - становимся суперпользователем.
Теперь нам потребуется поправить пару файлов в режиме root. Я покажу, как они выглядат у меня сейчас. Первое — это
vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto usb0
iface usb0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
Что мы видим? Настроено сетевое подключение через USB, прописан IP, маска сети и шлюз. Шлюзом будет IP usb-соединения на БНК. До этого мы еще дойдем.
У кого-нибудь возникает вопрос: а почему 192.168.2.2 а не 0.2? А потому, дорогие мои, что в локальных и корпоративных сетях, с которыми я сталкивался, 192.168.0.0 и 1,0 часто используются.
Далее:
vi /etc/resolv.conf
nameserver 192.168.2.1
Опять же прописан IP usb-соединения на БНК.
Далее:
insmod /mnt/initfs/lib/modules/2.6.21-omap1/g_ether.ko
Здесь два момента. Первый — возможно, что вместо «2.6.21-omap1» у вас будет другая версия. Подкорректируйте строку. Второе — лично у меня вывод этой команды в перый раз показывает, что устройство занято и операция не выполнена. Зато во второй раз всегда срабатывает.
И наконец —
ifup usb0
Теперь, чтобы убедиться, что устройство готово, пингуемся:
ping 192.168.2.2
Если пинг проходит нормально — значит все сделано правильно. Теперь приступаем к БНК.

РАБОТАЕМ С БОЛЬШИМ НАСТОЛЬНЫМ КОМПЬЮТЕРОМ
vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
address 192.168.0.1
netmask 255.255.255.0

allow-hotplug usb0
mapping hotplug
script grep
map usb0

iface usb0 inet static
address 192.168.2.1
netmask 255.255.255.0
up echo 1 > /proc/sys/net/ipv4/ip_forward
up iptables —P FORWARD ACCEPT
up iptables —A POSTROUTING —t nat —j MASQUERADE —s 192.168.2.0/24
down echo 0 > /proc/sys/net/ipv4/ip_forward
down iptables —t nat —F POSTROUTING

Здесь нас касается код, начиная с «allow-hotplug usb0». Выше — это ваши сетевые настройки, и если у вас сеть работает хорошо, то, как в анекдоте «ничего не трогай ничего не меняй». Только добавить то, что касается usb0. Как видно, кроме настроек сетевого интерфейса по шнуру USB, здесь прописаны команды, открывающие для соединяющегося по USB устройства выход во внешний мир. Внесли изменения? Сохранили?
Теперь самое ответственное. Если у вас есть барабан или хотя бы бонго — то желательно сделать дробь. На крайний случай — можно использовать табуретку.
Nokia уже подготовлена и пинг прошел. Подключаем ее шнуром к БНК. Не торопитесь включать содениение usb0 на БНК. Сначала нужно убедиться что подключился нужный нам модуль. Для этого потребуется команда
lsmod | grep usbnet
Если модуль подключился — кричим «Аллилуйя». Потому что без него ничего не выйдет. Я не знаю, что там идет по умолчанию при установке Ubuntu. Когда устанавливал Ubuntu на БНК, моя нокия была подключена к нему через USB и постоянно пинговала его
ping 192.168.2.1
Возможно, что это включило модуль usbnet при установке, а может быть он и так есть. Не знаю. Можете написать в комментах, как с этим обстоит дело, буду рад поправиться.
Если «Аллилуйя» прозвучало — идем дальше. Теперь поднимаем соединение:
sudo ifup usb0
После этого с БНК «ping 192.168.2.2», а с нокии соответственно «ping 192.168.2.1» должны пройти. Если все ок — поздравляю, вы в сети.

И КОЕ ЧТО ЕЩЕ
Моя корпоративная сеть использует прокси сервер с авторизацией. Поэтому, чтобы получить доступ в интернет, в консоли на Nokia N 810 я дополнительно пишу:
export http_proxy=http://Имя:Пароль@имя_или_IP_прокси:порт_прокси
Дома же мой провайдер несколько иначе строит свою политику, поэтому предыдущая команда не поможет. Поможет другое: перед тем, как поднимать сетевое соединение на Nokia, мне нужно прописать DNS сервера провайдера:
vi /etc/resolv.conf
nameserver 192.168.2.1
nameserver IP_DNS1
nameserver IP_DNS2
Конечно я не прописываю заново все каждый раз, а просто комментирую
# то, что мне в данный момент не нужно
Умные парни давно написали скрипты, которые автоматизируют эти манипуляции. Они молодцы. А мне неохота.

И НАПОСЛЕДОК
Не ожидайте, что сможете лезть в браузер и идти на любимые странички. Возможно, после большого бубна и это рализуемо, но уж коли у вас под рукой БНК — можно ведь и на нем поработать, верно? Зачем же тогда такое соединение? Читай сначала — для реализации установки программ из репозитариев. Иначе говоря, в режиме root теперь можно сделать
apt-get update
apt-get install mplayer pidgin

Спасибо за внимание!