Очень долгое время, для того чтобы пользоваться интернетом, который мне раздается через этот самый kerio vpn client мне нужно было держать отдельный компьютер, с windows на борту, в качестве прокси. Это была единственная машина, за которой приходилось тщательно следить, обновлять антивирусы и т.д. Почему windows? Да потому что вышеупомянутая софтина была только под эту ОС. Почему прокси? Да потому что, kvc как-то странно устанавливает сетевое соединение, что в инет могли выходить только локально установленные приложения… Так или иначе настроить из этой винды шлюз не получалось.
Но недавно узнал, что появился выход для меня (а может быть и еще для кого-то, кто прочтет эту статью)
Итак, начнем.
Состоит софтина из ядерного модуля и сетевого демона, который, собственно, и устанавливает соединение.
На сайте kerio можно скачать готовые *.deb пакеты для Ubuntu/Debian ( download.kerio.com/archive/download.php ). Устанавливать их очень просто, к тому же к ним прилагается инструкция по установке и настройке.
Но мне нужно было все установить и настроить на машине с Gentoo, т.к. домашний роутер у меня под ней крутится.
К счастью по той же ссылке можно скачать и исходники модуля (как потом выяснилось, в deb-пакете тоже были исходники).
Итак, скачиваем исходникик (kvnet kernel module source). Распаковываем его и переходим в каталог kvnet/drivers/vpn/linux.
Здесь мы видим исходники и Makefile из которого ничего полезного извлечь не удастся. После непродолжительного гугления было найдено решение (т.к. в синтаксисе Makefile я ничего не понимаю, то гугление требовалось) на форуме kerio:
Нужно Makefile привести к следующему виду:
Теперь по команде make собирается ядерный модуль. Остается только его загрузить, для чего мы проделываем следующую последовательность действий:
Модуль должен загрузиться без каких-либо проблем (пробовал на ядрах 2.6.27 — 2.6.30).
Теперь займемся демоном. По той же ссылке, что была приведена в начале статьи качаем файл kerio-kvc_6.6.0-5729-1_i386.deb
Распаковываем его. Далее распаковываем появившийся файл data.tar.gz
Оттуда сразу переносим файлы usr/lib/libkvnet.o и /usr/sbin/kvpnsvc в соответствующие директории. После этого создаем конфигурационный файл /etc/kerio-kvc.conf вот такого содержания:
Как генерировать пароль и фингерпринт я к сожалению не знаю, а позаимствовал конфиг с виртуальной машины с ubuntu, на которой я первоначально проводил испытания. Там настройка производилась следующей командой: dpkg-reconfigure kerio-kvc, после чего в интерактивном режиме я вводил ип сервера, логин и пароль, а ксорился пароль и запрашивался фингерпринт сервера автоматически.
Как только у меня появится соотвествующая информация, я тут же добавлю ее в статью.
Конфиг написали, теперь пробуем запускать:
Демон вывалился с ошибкой
kvpncsvc: symbol lookup error: ./kvpncsvc: undefined symbol: gzopen64
Решение было найдено также на форуме kerio. Необходим открыть файл kvpncsvc в hex-редакторе и найти строчку содержащую gzopen64. Последние 2 символа нужно убрать. Т.е. вместо байтов 36 34 вписать 00 00. После этого все запустится ровно.
Следует обратить внимание на то, что демон создает папку с логами в той директории, в которой его запустили.
К тому же программисты из kerio при написании демона были в своем репертуаре. Демон при соединении должен сам установить шлюз по умолчанию из тех настроек, что он получит с сервера, иначе он просто откажется маршрутизировать что либо через свое соединение. Возможно я что-то недопонимаю, но когда я устанавливал соединение и выставлял необходимый шлюз вручную, то инета у меня не было, а в логах демон говорил, что не может маршрутизировать пакеты. Поэтому перед запуском демона надо удалить шлюз по умолчанию (и прописать нужные маршруты, чтобы локалка работала).
Проблема маршрутов была решена добавлением их в файл /etc/conf.d/net
А для запуска демона были созданы следующие файлы:
/sbin/kerio_start:
/etc/init.d/kerio
Нужно сделать эти файлы исполняемыми и можно запускать соединение
Но недавно узнал, что появился выход для меня (а может быть и еще для кого-то, кто прочтет эту статью)
Итак, начнем.
Состоит софтина из ядерного модуля и сетевого демона, который, собственно, и устанавливает соединение.
На сайте kerio можно скачать готовые *.deb пакеты для Ubuntu/Debian ( download.kerio.com/archive/download.php ). Устанавливать их очень просто, к тому же к ним прилагается инструкция по установке и настройке.
Но мне нужно было все установить и настроить на машине с Gentoo, т.к. домашний роутер у меня под ней крутится.
Установка
К счастью по той же ссылке можно скачать и исходники модуля (как потом выяснилось, в deb-пакете тоже были исходники).
Итак, скачиваем исходникик (kvnet kernel module source). Распаковываем его и переходим в каталог kvnet/drivers/vpn/linux.
Здесь мы видим исходники и Makefile из которого ничего полезного извлечь не удастся. После непродолжительного гугления было найдено решение (т.к. в синтаксисе Makefile я ничего не понимаю, то гугление требовалось) на форуме kerio:
Нужно Makefile привести к следующему виду:
obj-m += kvnet.o
KDIR:= /lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
kvnet-objs := \
init.o \
io_dev.o \
io_read.o \
io_write.o \
net_dev.o \
queue.o \
vnet.o \
utils.o
EXTRA_CFLAGS += -O -Wall -DMODULE -DWINNT=0 -DDBG=0 -D_LINUX
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
-rm -f *.o *.ko *.cmd *.flags *.mod.c
Теперь по команде make собирается ядерный модуль. Остается только его загрузить, для чего мы проделываем следующую последовательность действий:
- создаем директорию /lib/modules/тут.версия.вашего.ядра/kernel/net/kvnet
- копируем в нее файл kvnet.ko
- depmod -a
- modprobe kvnet
Модуль должен загрузиться без каких-либо проблем (пробовал на ядрах 2.6.27 — 2.6.30).
Теперь займемся демоном. По той же ссылке, что была приведена в начале статьи качаем файл kerio-kvc_6.6.0-5729-1_i386.deb
Распаковываем его. Далее распаковываем появившийся файл data.tar.gz
Оттуда сразу переносим файлы usr/lib/libkvnet.o и /usr/sbin/kvpnsvc в соответствующие директории. После этого создаем конфигурационный файл /etc/kerio-kvc.conf вот такого содержания:
<config> <connections> <connection type="persistent"> <server>ип. сервера</server> <port>4090</port> <username>имя пользователя</username> <password>XOR:пароль в ксоре</password> <fingerprint>фингерпринт сервера</fingerprint> <active>1</active> </connection> </connections> </config>
Как генерировать пароль и фингерпринт я к сожалению не знаю, а позаимствовал конфиг с виртуальной машины с ubuntu, на которой я первоначально проводил испытания. Там настройка производилась следующей командой: dpkg-reconfigure kerio-kvc, после чего в интерактивном режиме я вводил ип сервера, логин и пароль, а ксорился пароль и запрашивался фингерпринт сервера автоматически.
Как только у меня появится соотвествующая информация, я тут же добавлю ее в статью.
Конфиг написали, теперь пробуем запускать:
kvpnsvc
Демон вывалился с ошибкой
kvpncsvc: symbol lookup error: ./kvpncsvc: undefined symbol: gzopen64
Решение было найдено также на форуме kerio. Необходим открыть файл kvpncsvc в hex-редакторе и найти строчку содержащую gzopen64. Последние 2 символа нужно убрать. Т.е. вместо байтов 36 34 вписать 00 00. После этого все запустится ровно.
Следует обратить внимание на то, что демон создает папку с логами в той директории, в которой его запустили.
К тому же программисты из kerio при написании демона были в своем репертуаре. Демон при соединении должен сам установить шлюз по умолчанию из тех настроек, что он получит с сервера, иначе он просто откажется маршрутизировать что либо через свое соединение. Возможно я что-то недопонимаю, но когда я устанавливал соединение и выставлял необходимый шлюз вручную, то инета у меня не было, а в логах демон говорил, что не может маршрутизировать пакеты. Поэтому перед запуском демона надо удалить шлюз по умолчанию (и прописать нужные маршруты, чтобы локалка работала).
Проблема маршрутов была решена добавлением их в файл /etc/conf.d/net
А для запуска демона были созданы следующие файлы:
/sbin/kerio_start:
#!/bin/bash
route del default
modprobe kvnet
cd /var/log/kvnet
kvpncsvc
/etc/init.d/kerio
#!/sbin/runscript
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
need net
}
start() {
ebegin "Startung Kerio VPN Client Daemon"
start-stop-daemon --start --quiet --chuid root --exec /sbin/start_kerio
eend 0
}
stop() {
ebegin "Stopping Kerio VPN Client Daemon"
start-stop-daemon --stop --quiet --user dconnect --retry 5 --signal 9 --exec kvpncsvc
eend 0
}
Нужно сделать эти файлы исполняемыми и можно запускать соединение
/etc/init.d/kerio start