понедельник, 27 апреля 2009 г.

Настройка GPRS (Sony Ericsson K530i) в Linux (Debian)

Собственно, писать тут особо нечего. Есть описания вариантов настройки различных телефонов. Есть и превосходная статья, которая описывает полностью все аспекты настройки GPRS-подключения в Linux.

Вот эти источники, которыми воспользовался я:
  1. Настройка GPRS-internet для Sony Ericsson. FAQ
  2. Настройка GPRS-internet для новых телефонов Sony Ericsson, платформа А200. FAQ
  3. Подключение GPRS/EDGE в GNU/Linux
Теперь я кратко пробегусь по процессу настройки, чтобы его не забыть. Я не собираюсь использовать его в качестве основного подключения, только в качестве аварийного (надеюсь, что воспользоваться не придётся).

1. Во-первых, настроим сам телефон.

1.1. Заходим в меню: Параметры -> Связь -> USB Интернет -> Уч. зап. данн. USB -> Новая уч. запись -> Данные PS

1.2. В ответ на запрос "Имя:" вводим имя подключения: "Мегафон".

1.3. Далее в трёх текстовых полях экрана "Нов. уч. запись PS" вводим:
1.3.1. "Точка доступа" - вводим "internet",
1.3.2. "Имя пользоват." - вводим "gdata",
1.3.3. "Пароль" - вводим "gdata".

1.4. После создания записи выделим её и нажмём кнопку "Выбрать".

1.5. Заходим в меню: Параметры -> Связь -> Передача данных -> Уч.записи данных -> выбираем "Мегафон" и жмём кнопку "Измен." Проверим параметры:
1.5.1. "Точка доступа" - должно быть "internet",
1.5.2. "Имя пользоват." - должно быть "gdata",
1.5.3. "Пароль" - должно быть "gdata",
1.5.4. "Запрос пароля" - должно быть "Отключено",
1.5.5. "Разреш. вызовы" - должно быть "Автоматически",
1.5.6. "Адрес IP" - должно быть "...",
1.5.7. "Адрес DNS" - должно быть "...",
1.5.8. "Аутентификация" - отмечаем галочкой только вариант "Нет",
1.5.9. "Сжатие данных" - должно быть "Отключено",
1.5.10. "Сжатие заголов." - должно быть "Отключено".

1.6. Заходим в меню: Параметры -> Связь -> Передача данных -> Парам. Интернет -> выбираем "Мегафон".

1.7. Заходим в меню: Параметры -> Связь -> Передача данных -> Параметры Java -> выбираем "Мегафон".

1.8. Заходим в меню: Параметры -> Связь -> Передача данных -> Пар.поток.воспр. -> выбираем "Мегафон".

2. Во-вторых настроим компьютер.

2.1. Установим пакет resolvconf:
# aptitude install resolvconf
2.2. Настроим опции демона pppd для подключения точка-точка через модем /etc/ppp/peers/megafon:
/dev/ttyACM0 115200
# отключаем сжатие данных
nobsdcomp
nodeflate
novj
novjccomp
nopcomp
noaccomp
nodeflate
# команда для установки соединения
connect '/usr/sbin/chat -v -f /etc/chatscripts/megafon'
noauth
# автоматическое получение сетевых настроек
noipdefault
usepeerdns
defaultroute
ttyACM0 соответствует имени файла устройства - телефона.

2.3. Настроим chat-сценарий /etc/chatscripts/megafon:
TIMEOUT         5
ECHO            ON
ABORT           '\nBUSY\r'
ABORT           '\nERROR\r'
ABORT           '\nNO ANSWER\r'
ABORT           '\nNO CARRIER\r'
ABORT           '\nNO DIALTONE\r'
ABORT           '\nRINGING\r\n\r\nRINGING\r'
''              \rAT
TIMEOUT         12
OK              ATE1
OK              'AT+cgdcont=1,"IP","internet"'
OK              ATD*99#
CONNECT         ''
2.4. Теперь, по желанию, можно прописать автоматическое подключение при загрузке системы в файле /etc/network/interfaces:
auto megafon
iface megafon inet ppp
  provider megafon
Для подключения соединения можно ввести команду pon megafon от пользователя root, для отключения - poff megafon.

понедельник, 20 апреля 2009 г.

Расширения Firefox, которыми я пользуюсь

В Интернете можно найти массу заметок, рассказывающих о том, какими расширениями Firefox пользуется их автор. Не буду оригинален и тоже напишу такую заметку. Может быть вы найдёте здесь для себя нечто новое.

1. AdBlock Plus - вырезание рекламных баннеров. Можно добавлять подписки на списки блокировки (я пользуюсь подпиской на список Morpeh Rus List + EasyList) или добавлять свои фильтры.

2. Flashblock - заменяет все Flash-объекты на странице на кнопки, при нажатии которых соответствующий Flash-объект будет запущен. Можно создавать белые списки сайтов, Flash-объекты с которых будут отображаться всегда.

3. NoScript - позволяет отключить выполнение Java-скриптов, можно создать список доверенных сайтов, скрипты с которых будут выполняться всегда.

4. ImgLikeOpera - картинки как в Опере.

Позволяет отключить загрузку:
1. всех картинок,
2. картинок с других сайтов, кроме текущего,
3. любых картинок, кроме уже находящихся в кэше
Или можно включить показ всех картинок.

В любом из трёх режимов можно указать через контекстное меню загрузить определённую картинку. Можно создавать списки сайтов или страниц, картинки с которых будут отображаться всегда.

5. Tabs Open Relative - помещает вновь открытые страницы справа от текущей вкладки, а не на крайней правой вкладке.

6. Session Manager - позволяет сохранять открытые вкладки при перезапусках и сбоях программы, а также сохранять и восстанавливать сессии по требованию. Насколько я понимаю, необходимость в этом расширении отпала, т.к. подобная функциональность встроена в Firefox, начиная с третьей версии.

7. ScrapBook - позволяет сохранять части веб-страниц в отдельный каталог в профиле Firefox. Можно организовывать сохранённые фрагменты в подкаталоги, снабжать и описаниями, выполнять слияние страниц, удалять из них произвольные фрагменты. Вместе с каждым сохранённым фрагментом сохраняется и ссылка на оригинальную страницу. Доступна функция поиска по тексту вырезок.

8. UnPlug - умеет находить на странице внедрённые объекты (Flash-ролики, flv-видеофрагменты, Java-апплеты), позволяя сохранить их на диск.

9. Extended Statusbar - показывает в строке статуса скорость, процент, время и объём загрузки страницы (как в Опере).

10. Foxmarks Bookmark Synchronizer - синхронизирует закладки между несколькими компьютерами, храня закладки на FTP-сервере в интернете. Можно использовать свой собственный сервер.

11. Download Statusbar - представляет собой простенький менеджер закачек. Показывает состояние загрузок в дополнительной строке над строкой статуса, оттуда же можно приостанавливать, запускать вновь и отменять закачки.

12. Gmail Notifier - показывает количество новых сообщений в почтовом ящике на GMail.

13. Russian Spellchecking Dictionary - словарь для проверки русской орфографии. Русские сборки Firefox для Windows уже включают его, но в Firefox (Iceweasel) из репозитория Debian русского словаря нет.

суббота, 18 апреля 2009 г.

QEmu и настройка сети

Наконец-то мне удалось настроить сеть. Сейчас я расскажу, каким образом это у меня получилось.

Во-первых, я решил включить виртуальную машину в реальную локальную Ethernet-сеть, объединив мостом tap-интерфейс и eth-интерфейс. Для настройки сетевого интерфейса и мостового объединения интерфейсов нам понадобятся два пакета - соответственно uml-utilities и bridge-utils. Установим их с помощью команды:
# aptitude install uml-utilities bridge-utils
Загрузим в ядро модули bridge и tun:
# modprobe bridge
# modprobe tun
В принципе подгружать эти модули совсем не обязательно, т.к. они автоматически будут загружены командами brctl и tunctl при необходимости. Тем не менее, я таким образом просто решил заранее удостовериться, что возможные дальнейшие ошибки не связаны с отсутствием модулей или невозможностью загрузить их в ядро.

Теперь отредактируем правила демона udev. При настройке эмулятора qemu я добавил в систему группу kqemu и дал ей права на доступ к устройству /dev/kqemu, создаваемому модулем ядра kqemu для более быстрой эмуляции виртуальной машины. Теперь нужно дать права на запись в устройство /dev/net/tun группе kqemu. Нужное нам правило находится в файле /etc/udev/rules.d/91-permissions.rules, в нём необходимо заменить строчку
KERNEL=="tun",                  MODE="0666"
на строчку
KERNEL=="tun",                  MODE="0660",    GROUP="kqemu"
Затем нужно перезапустить udev, чтобы внесённые изменения вступили в силу:
# /etc/init.d/udev restart
По непонятным причинам это не оказало действия на устройство и я остановил и запустил udev снова, на сей раз отдельными командами:
# /etc/init.d/udev stop
# /etc/init.d/udev start
Теперь займёмся настройкой моста и сетевого интерфейса, в файле /etc/network/interfaces пропишем настройку моста br0 и виртуального интерфейса tap0:
auto tap0
iface tap0 inet static
  up ifconfig tap0 up
  down ifconfig tap0 down
  tunctl_user stupin

auto br0
iface br0 inet dhcp
  bridge_ports eth1 tap0
  bridge_fd 9
  bridge_hello 2
  bridge_maxage 12
  bridge_stp off
Строчка tunctl_user указывает имя пользователя, которому будет принадлежать этот интерфейс.

Теперь перезапустим настройку сети:
# /etc/init.d/networking restart
Если посмотреть список активных интерфейсов с помощью команды ifconfig, то можно увидеть 4 интерфейса: локальный петлевой интерфейс lo, интерфейс моста br0, получивший сетевые настройки по DHCP и два ненастроенных интерфейса: eth1 и tap0. eth1 соответствует реальной сетевой карте, а tap0 - виртуальному Ethernet-интерфейсу.

Теперь можно запустить виртуальную машину и настроить в ней сеть. К сожалению с помощью QEmulator'а нужные настройки через меню задать не получается, но зато можно воспользоваться, например, такой командой:
$ qemu -M pc -m 128 -no-kqemu -no-acpi -hda /home/stupin/netbsd-disk.bin -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -boot c
Фактически я скопировал её из QEmulator'а и подправил опции для второго сетевого интерфейса, указав имя интерфейса, с которым должна быть связана виртуальная машина.

В виртуальной машине указываем получение настроек сетевого интерфейса по DHCP. Поскольку у меня в локальной сети настроен DHCP-сервер, я сразу же смог выйти в виртуальной машине в сеть.

При перезагрузке всплыли кое-какие проблемы. Система запускает с помощью сценария /etc/init.d/uml-utilities некий uml-switch. Сначала я подумал, что именно этот uml-switch заменяет группу-владельца устройства /dev/net/tun на группу uml-net, в результате чего запущенная виртуальная машина не может получить доступ к устройству и сеть не работает.

Тут можно было поступить несколькими способами. Во-первых, можно включить себя в группу uml-net, тогда проблема будет обойдена. Во-вторых, можно поменять группу-владельца в файле /etc/default/uml-utilities, указав нужную в переменной UML_SWITCH_USER. И наконец, можно просто отключить uml-switch, указав в переменной UML_SWITCH_START значение false. Я выбрал именно последний способ, поскольку я даже не знаю что такое uml-switch, то он мне вряд-ли нужен. Однако и это не повлияло на групповую принадлежность устройства /dev/net/tun!

Я был озадачен и лучшая мысль, которая пришла мне в голову - это прогрепать каталог /etc/ на упоминание слова tun. И поиск дал результат. В файле /etc/network/if-pre-up.d/uml-utilities обнаруились такие строчки:
#
# why the hell does this need to be done?
#
chown root:uml-net /dev/net/tun
chmod 660 /dev/net/tun
Действительно, какого чёрта это необходимо делать? Я потратил уйму времени на правильную настройку, а тут какой-то умник соорудил костыль, из-за которого у меня ничего не работает! Сносим эти строчки и пробуем перезагрузить машину снова. На этот раз после перезагрузки всё окончательно наладилось.

Обновлено 23 апреля 2009 года.

четверг, 2 апреля 2009 г.

VPN-подключение к Уфанет и локальные ресурсы через Ethernet

Примерно в середине февраля стало известно, что Уфанет плавно модернизирует свою сеть и теперь у некоторых абонентов локальные ресурсы стали доступны без VPN-подключения. По неофициальной информации от сотрудников Уфанет локальные ресурсы доступны без VPN-подключения тем абонентам, которые по DHCP получают адреса из диапазона 10.160.0.0-10.191.255.255 (10.160.0.0/11). Проверьте адрес, который вам выдаёт DHCP-сервер, возможно вы один из счастливчиков :)

У меня стали спрашивать, как бы переделать два VPN-подключения на новую схему, чтобы можно было обойтись одним подключением, а локальный трафик направить через Ethernet. Я решил написать второй вариант настройки, однако проверить я его не могу, поэтому работоспособность не гарантирую (впрочем, как и раньше). Если что не получается - вам придётся приложить усилия к наладке самостоятельно, я по мере возможности постараюсь помочь.

Для настройки двух VPN-соединений нам понадобятся пакеты pptp-linux, resolvconf, iproute, ifupdown, bind9-host. Их можно установить командой:
# aptitude install pptp-linux resolvconf iproute bind9-host
ifupdown входит в минимальную поставку системы, поэтому в установке не нуждается.

1. Настроим сетевые интерфейсы.

Настроим локальный петлевой интерфейс, Ethernet-интерфейс Уфанет, и автоматическое подключение внешнего VPN-соединения.

/etc/network/interfaces:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto iunlim
iface iunlim inet ppp
provider iunlim

Добавляем в файл конфигурации DHCP-клиента /etc/dhcp3/dhclient.conf новую секцию, связанную с интерфейсом eth0:
interface "eth0" {
  script "/root/bin/dhclient-ufanet";
}
Вам может понадобиться заменить в файлах инициализации интерфейс eth0 (выше он выделен жирным шрифтом) на тот, к которому подключен Ethernet-кабель Уфанет.

Копируем сценарий, выполняющийся по умолчанию, в каталог /root/bin/ под именем dhclient-ufanet:
# mkdir /root/bin/
# cp /sbin/dhclient-script /root/bin/dhclient-ufanet
Заменяем в скопированном сценарии строчки следующего вида в двух местах:
for router in $new_routers; do
  route add default dev $interface gw $router $metric_arg
done
на блок:
for router in $new_routers; do
  ip route add 81.30.176.0/20 via $router dev $interface src $new_ip_address table main
  ip route add 81.30.192.0/19 via $router dev $interface src $new_ip_address table main
  ip route add 89.189.128.0/19 via $router dev $interface src $new_ip_address table main
  ip route add 77.79.128.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 92.50.128.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.0.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.128.0/21 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.136.0/22 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.140.0/23 via $router dev $interface src $new_ip_address table main
  ip route add 79.140.24.0/22 via $router dev $interface src $new_ip_address table main
  ip route add 79.140.16.0/21 via $router dev $interface src $new_ip_address table main
  ip route add 172.16.0.0/12 via $router dev $interface src $new_ip_address table main
  ip route add 10.0.0.0/8 via $router dev $interface src $new_ip_address table main

  ip route add default via $router dev $interface src $new_ip_address table lunlim
  ip rule add from $new_ip_address table lunlim
done
2. Настроим приоритеты DNS-серверов.

DNS-серверы на интерфейсе ppp должны быть приоритетнее DNS-серверов на интерфейсе Ethernet, поэтому в файле /etc/resolvconf/interface-order строчку ppp* поместим перед eth*.

/etc/resolvconf/interface-order:
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
ppp*
eth*
ath*
wlan*
*
3. Создадим таблицы маршрутизации.

Добавим две таблицы с именами lunlim и iunlim, которые будут содержать маршруты ответственные за работу ответного трафика соединений устанавливаемых снаружи.

/etc/iproute2/rt_tables:
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

201     iunlim
202     lunlim
4. Настроим VPN-соединение.

Зададим опции для PPP-соединения.

/etc/ppp/options:
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
usepeerdns
Зададим опции для PPTP-соединения.

/etc/ppp/options.pptp:
lock
noauth
nobsdcomp
nodeflate
persist
maxfail 0
В файле /etc/ppp/chap-secrets пропишем логин и пароль на подключение к VPN-серверу Уфанет.

/etc/ppp/chap-secrets:
# Secrets for authentication using CHAP
# client           server          secret     IP addresses
freedom_login      vpn.ufanet.ru   password   *
freedom_login - это логин на подключение по тарифу "Свобода".
password - это соответствующий пароль на подключение.

Ваш логин необходимо прописать также в файле /etc/ppp/peers/iunlim далее по тексту (он выделен жирным шрифтом).

Файл /etc/ppp/peers/iunlim задаёт настройки подключения по безлимитному тарифу "Свобода" и привязывает его к интерфейсу ppp0.

/etc/ppp/peers/iunlim:
pty "pptp vpn.ufanet.ru --nolaunchpppd"
name freedom_login
remotename vpn.ufanet.ru
file /etc/ppp/options.pptp
ipparam iunlim
unit 0
В скрипте /etc/ppp/ip-up.d/route происходит добавление маршрутов маршрутов к нелокальным узлам на внешнем соединении.

/etc/ppp/ip-up.d/route:
#!/bin/sh

case "$PPP_IPPARAM" in
  iunlim)
    ip route add 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add default dev $PPP_IFACE src $PPP_LOCAL table main

    ip route add default dev $PPP_IFACE src $PPP_LOCAL table iunlim
    ip rule add from $PPP_LOCAL table iunlim
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-up.d/route
В скрипте /etc/ppp/ip-down.d/route происходит удаление маршрутов к нелокальным узлам на внешнем соединении.

/etc/ppp/ip-down.d/route:
#!/bin/sh

case "$PPP_IPPARAM" in
  iunlim)
    ip route del 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del default dev $PPP_IFACE src $PPP_LOCAL table main

    ip route del default dev $PPP_IFACE src $PPP_LOCAL table iunlim
    ip rule del from $PPP_LOCAL table iunlim
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-down.d/route
Для ручного включения и отключения соединения можно пользоваться командами:
pon iunlim - включить безлимитный интернет,
poff iunlim - отключить безлимитный интернет,

В файле /etc/network/interfaces настроена автоматическая установка VPN-соединения. Можете изменить настройки в этом файле по своему желанию - оставить соединение или отключить его. При этом вы всегда сможете установить или разорвать соединение вручную, командами описанными выше.

Ссылка на исходную статью: Два VPN-подключения к Уфанет

Обновлено 6 апреля 2009 года.