Совершенно неожиданно понадобилось настроить VPN-подключение (Cisco IPSec) на Nokia N9 – первом (и, похоже, последнем) смартфоне Nokia на MeeGo. В отличие от бизнес-смартфонов на Symbian, встроенного VPN-клиента на N9 не оказалось, в Ovi Store тоже ничего по слову VPN не нашлось. Пришлось браться за напильник и допиливать искалеченный Debian, каковым является MeeGo Harmattan 1.2, под свои нужды. В результате следующих действий получился более-менее пригодный к использованию VPN-клиент:
- получаем доступ к устройству по ssh
- устанавливаем средства разработки
- скачиваем, собираем и устанавливаем vpnc
- создаем скрипты для установки/разрыва VPN-соединения и ярлыки для их запуска на рабочем столе
Более подробно о каждом шаге:
Получение доступа к устройству по SSH
Для дальнейших действий понадобится доступ к командной строке – можно использовать встроенный терминал, но гораздо удобнее работать через ssh на нормальной хардварной клавиатуре:
- включаем в настройках безопасности режим разработчика – смартфон скачает и установит нужные пакеты и, возможно, захочет перезагрузиться; после этого на рабочем столе появляется иконка терминала, запускается sshd
- там же в настройках появляется список метапакетов для разработки – устанавливаем Utilities, в состав этого пакета входит wget
- запускаем терминал – по умолчанию все запускается под пользователем user, для получения рутового доступа используем команду devel-su и пароль по умолчанию rootme
- из-под рута задаем пароль пользователю user, потому что под рутом sshd не пускает
- командой ip addr узнаем айпишник устройства
- готово – ssh user@<айпишник> и мы на устройстве с правами пользователя
Установка средств разработки
Чтобы собрать vpnc, нужны как минимум gcc и make, которые изначально на устройстве отсутствуют, плюс пакеты с заголовочными файлами. В предустановленных репозитариях ничего этого нет, поэтому придется подключать дополнительные. Обширный список репозитариев есть на http://forum.allnokia.ru/viewtopic.php?t=82475 (и еще много полезной информации по MeeGo), для наших целей достаточно 2 основных:
devel-su
(парольrootme
)vi /etc/apt/sources.list.d/nick.list
- добавляем строчки
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/ ./
- сохраняем, выходим, запускаем
apt-get update
- запускаем
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 прямо на телефоне:
devel-su
(если еще не под рутом)wget http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.3.tar.gz
tar xzf vpnc-0.5.3.tar.gz
cd vpnc-0.5.3
- из-за отсутствия нужных модулей perl не получится собрать man-страницы (они нам особо и не нужны), поэтому придется в Makefile закомментировать все, что относится к man
make && make install
После выполнения make install, если в Makefile пути не менялись, vpnc окажется в /usr/local/sbin, а его конфиг по умолчанию в /etc/vpnc/default.conf.
Для Maemo (как, впрочем, и для Android) есть стандартный GUI для vpnc – vpnc-gui, но он сделан на GTK, и собрать его под MeeGo весьма проблематично (по крайней мере, я не смог). Поэтому продолжаем пилить дальше.
Скрипты
В принципе, уже на данном этапе можно подключаться к VPN из командной строки, но это не очень удобно в повседневном использовании :) Поэтому для удобства пользователя делаем следующее:
- прописываем параметры подключения в /etc/vpnc/default.conf (параметры подробно расписаны в выводе vpnc –long-help)
- в /usr/bin ложим скрипты vpn-on и vpn-off следующего содержания:
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.