Cisco VPN клиент для Nokia N9 (MeeGo Harmattan 1.2)

Совершенно неожиданно понадобилось настроить VPN-подключение (Cisco IPSec) на Nokia N9 – первом (и, похоже, последнем) смартфоне Nokia на MeeGo. В отличие от бизнес-смартфонов на Symbian, встроенного VPN-клиента на N9 не оказалось, в Ovi Store тоже ничего по слову VPN не нашлось. Пришлось браться за напильник и допиливать искалеченный Debian, каковым является MeeGo Harmattan 1.2, под свои нужды. В результате следующих действий получился более-менее пригодный к использованию VPN-клиент:

  1. получаем доступ к устройству по ssh
  2. устанавливаем средства разработки
  3. скачиваем, собираем и устанавливаем vpnc
  4. создаем скрипты для установки/разрыва VPN-соединения и ярлыки для их запуска на рабочем столе

Более подробно о каждом шаге:

Получение доступа к устройству по SSH

Для дальнейших действий понадобится доступ к командной строке – можно использовать встроенный терминал, но гораздо удобнее работать через ssh на нормальной хардварной клавиатуре:

  1. включаем в настройках безопасности режим разработчика – смартфон скачает и установит нужные пакеты и, возможно, захочет перезагрузиться; после этого на рабочем столе появляется иконка терминала, запускается sshd
  2. там же в настройках появляется список метапакетов для разработки – устанавливаем Utilities, в состав этого пакета входит wget
  3. запускаем терминал – по умолчанию все запускается под пользователем user, для получения рутового доступа используем команду devel-su и пароль по умолчанию rootme
  4. из-под рута задаем пароль пользователю user, потому что под рутом sshd не пускает
  5. командой ip addr узнаем айпишник устройства
  6. готово – ssh user@<айпишник> и мы на устройстве с правами пользователя

Установка средств разработки

Чтобы собрать vpnc, нужны как минимум gcc и make, которые изначально на устройстве отсутствуют, плюс пакеты с заголовочными файлами. В предустановленных репозитариях ничего этого нет, поэтому придется подключать дополнительные. Обширный список репозитариев есть на http://forum.allnokia.ru/viewtopic.php?t=82475 (и еще много полезной информации по MeeGo), для наших целей достаточно 2 основных:

  1. devel-su (пароль rootme)
  2. vi /etc/apt/sources.list.d/nick.list
  3. добавляем строчки
    deb http://harmattan-dev.nokia.com/ harmattan/sdk free non-free
    deb http://repo.pub.meego.com/home:/rzr:/harmattan/MeeGo_1.2_Harmattan_Maemo.org_MeeGo_1.2_Harmattan_standard/ ./
  4. сохраняем, выходим, запускаем apt-get update
  5. запускаем apt-get gcc make libc-dev libc6-dev libgcrypt-dev libssl-dev (и далее по вкусу)

Если все хорошо, apt-get установит все нужные пакеты. Ни в коем случае нельзя соглашаться с предложениями удалить какой-нибудь пакет – система может потерять работоспособность!

Установка vpnc

Стандартный open-source IPSec VPN-клиент для Linux – vpnc. Странно, что в репозитариях не нашлось уже собранного пакета для MeeGo – есть только для предка этой ОС, Maemo, но эти пакеты не ставятся на MeeGo из-за зависимостей. Поэтому пришлось компилировать vpnc прямо на телефоне:

  1. devel-su (если еще не под рутом)
  2. wget http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.3.tar.gz
  3. tar xzf  vpnc-0.5.3.tar.gz
  4. cd vpnc-0.5.3
  5. из-за отсутствия нужных модулей perl не получится собрать man-страницы (они нам особо и не нужны), поэтому придется в Makefile закомментировать все, что относится к man
  6. make && make install

После выполнения make install, если в Makefile пути не менялись, vpnc окажется в /usr/local/sbin, а его конфиг по умолчанию в /etc/vpnc/default.conf.

Для Maemo (как, впрочем, и для Android) есть стандартный GUI для vpnc – vpnc-gui, но он сделан на GTK, и собрать его под MeeGo весьма проблематично (по крайней мере, я не смог). Поэтому продолжаем пилить дальше.

Скрипты

В принципе, уже на данном этапе можно подключаться к VPN из командной строки, но это не очень удобно в повседневном использовании  :) Поэтому для удобства пользователя делаем следующее:

  1. прописываем параметры подключения в /etc/vpnc/default.conf (параметры подробно расписаны в выводе vpnc –long-help)
  2. в /usr/bin ложим скрипты vpn-on и vpn-off следующего содержания:
  3. vpn-on:

    #!/bin/sh
    /bin/develsh -c /usr/local/sbin/vpnc
    if [ "$?" = "0" ]; then
     echo "Connected!"
    else
     echo "ERROR!"
    fi
    sleep 3

    vpn-off:

    #!/bin/sh
    /bin/kill `/bin/cat /var/run/vpnc/pid`
    if [ "$?" = "0" ]; then
     echo "Disconnected."
    else
     echo "ERROR"
    fi
    sleep 3

Следует обратить внимание, что если запускать vpnc из-под user или root, то у него не хватит прав или на чтение конфига, или на доступ к tun-устройству. Поэтому в скрипте vpn-on запускать его приходится через develsh, которому все это разрешается. Такая вот в Harmattan система безопасности. После успешного запуска PID vpnc записывается в файлик /var/run/vpnc/pid, что мы и используем в vpn-off.

Ярлыки

После выполнения предыдущего шага можно подключаться/отключаться к VPN, набирая в командной строке vpn-on/vpn-off. Но чтобы делать это одним касанием пальца, надо бы создать ярлыки на рабочем столе. Ярлыки в MeeGo лежат в /usr/share/applications, поэтому создадим два файлика:

/usr/share/applications/vpn-on.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=0.1
Type=Application
Name=VPN On
Icon=icon-l-email
Exec=/usr/bin/meego-terminal -e /usr/bin/vpn-on
Categories=Office;X-MeeGo;X-Messages;Email;
OnlyShowIn=X-MeeGo;

/usr/share/applications/vpn-off.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=0.1
Type=Application
Name=VPN Off
Icon=icon-l-email
Exec=/usr/bin/meego-terminal -e /usr/bin/vpn-off
Categories=Office;X-MeeGo;X-Messages;Email;
OnlyShowIn=X-MeeGo;

После этого на рабочем столе появятся иконки с соответствующими названиями, при запуске которых будет открываться терминал с вводом/выводом наших скриптов. После завершения работы скрипта терминал закрывается. Все, можно пользоваться (не забыв отключить режим разработчика, ни к чему оставлять открытым доступ к телефону по SSH). Единственное неудобство  - нет индикации состояния подключения к VPN, но тут, боюсь, средствами командной строки не обойдешься.

Конечно, в идеале все это надо бы сложить в установочный пакет и выложить в общедоступный репозитарий, но ни времени, ни навыков создания deb-пакетов не было. Здесь лежит архив со всеми скриптами и уже скомпилированным vpnc (надо только сделать make install в папке с исходниками vpnc и разложить скрипты в /usr/bin и /usr/share/applications). Компилировалось на Nokia N9 со всеми обновлениями по состоянию на 21.11.2011.

Запись опубликована в рубрике Linux, Nokia, VPN. Добавьте в закладки постоянную ссылку.

Добавить комментарий