пятница, 19 ноября 2010 г.

Skype и Genius iSlim 310 в Linux

Как то я упустил настройку камеры Genius iSlim 310 в Linux для Skype. Исправляюсь =).

lsusb для этой камеры выдает следующую информацию:

Bus 002 Device 003: ID 093a:2625 Pixart Imaging, Inc.

Для камер Pixart в Linux используются драйверы gspca. Необходимо справить всего один файл в драйвере, а точнее добавить одну строчку нужным нам Diviсe ID. Вот маленький файл patch:

--- drivers/media/video/gspca/pac7302.c 2010-05-17 01:17:36.000000000 +0400
+++ drivers/media/video/gspca/pac7302.c.new 2010-11-19 11:19:32.000000000 +0300
@@ -1200,6 +1200,7 @@
{USB_DEVICE(0x093a, 0x2621)},
{USB_DEVICE(0x093a, 0x2622), .driver_info = FL_VFLIP},
{USB_DEVICE(0x093a, 0x2624), .driver_info = FL_VFLIP},
+ {USB_DEVICE(0x093a, 0x2625)},
{USB_DEVICE(0x093a, 0x2626)},
{USB_DEVICE(0x093a, 0x2628)},
{USB_DEVICE(0x093a, 0x2629), .driver_info = FL_VFLIP},


После обновления ядра, скайп запускаем через LD_PRELOAD:

#LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

Вот и все =).

пятница, 12 ноября 2010 г.

l2tp - окончание

Не радостное окончание получилось =). IPsec работает но настройка его с NAT-ами дело не благодарное. L2TP как сервер работает отлично, а как клиент - ощущение двойственное.

L2TP в качестве клиента под linux испытаны xl2tpd, rp-l2tpd, openl2tp. Все 3 программы в качестве клиента не могут поддерживать постоянное соединение. Жить с ними можно но не интересно =). Наиболее вменяемый клиент xl2tpd. Варианты с GUI не рассматривал.

По всей видимости останусь жить с openvpn =).

среда, 10 ноября 2010 г.

xl2tpd - клиент

Настройка xl2tpd в качестве клиента выполняется аналогично с серверной частью через файл /etc/xl2tpd/xl2tpd.conf

[global]
access control = yes

[lns local]
; Это серверная секция, для клиента может отсутствовать.

[lac l2test]
; lac - клиентская секция, l2test - имя туннеля.
;Соответственно может быть несколько lac секций с разными туннелями.

; Указываем адрес сервера
lns = vpn.net.local

; Автоматически поднимать тунель при старте xl2tpd
autodial = yes
; Пересоединение при разрыве связи
redial = yes
; Перед повторным соединением сделать задержку в сколько то секунд
redial timeout = 60

; Максимальное количество попыток пересоединений с сервером.
; Или я не понимаю документацию или она не работает или все плохо =)
; max redials = 100

; Требовать chap
require chap = yes
; Отказаться от pap
refuse pap = yes
; Не требовать доказательств =)
require authentication = no
; Имя пользователя
name = l2test
; Файл опций для pppd. Если уже настраивали сервер, то опции взять с сервера.
pppoptfile = /etc/ppp/options.l2tpd.lac


Далее стартуем xl2tpd, он соединяется по нашему тунелю и запускает pppd.

Что не так - не так, то что если сервер в момент запуска xl2tpd на клиенте не доступен, то туннель ни когда сам по себе не поднимется. Но это пол беды, хуже то, что если в процессе работы теряется связь с сервером, то туннель обратно самостоятельно не поднимется. Вот тут и вступает вопрос с опцией max redial - какую бы цифру я не ставил, редайл делается один раз и больше попыток соединения не происходит. Найти решение я не смог =(. При этом все версии 1.2.4, 1.2.6-r1 и 1.2.7 ведут себя абсолютно одинаково. Осталось только обратиться к разработчикам =).

l2tp и ipsec - кому оно надо?

В процессе настройки l2tp и ipsec прочитал много документации о работе этого счастья через NAT. Дело в том, что ipsec без танцев с бубном работает только при отсутствии между клиентом и сревером трансляции адресов. Не буду вдаваться в подробности реализации ipsec но факт остается фактом. Обеспечить сервер белым ip адресом без трансляции не составляет труда, а вот обеспечить им клиента, почти невозможно. В первую очередь я на это попался при соединении через мобильный интернет МТС, потом домашний провайдер с их домовой сетью и т.д..

Фактически получается, учитывая реалии жизни, что решение с ipsec не возможно применить как универсальное. По хорошему на этом надо ставить жирную точку, но работа проделана =). Самое обидное, что результат категорически отрицательный. Это касается не только ipsec но и клиентской части l2tp реализованой под linux.

вторник, 2 ноября 2010 г.

ipsec - openswan

Как уже говорилось в "l2tp - начало" мы настраиваем связку l2tp с минимальным шифрованием ipsec. Вариантов у шифрования при использовании ipsec достаточно много, меня, как всегда, интересует простейший вариант и минимальные телодвижения, так как основная проблема заключается в первоначальной настройке. После того, как будет запущен самый простой вариант уже есть смысл и возможность углубляться в дебри =), а пока настроим ipsec OpenSwan с шифрованием по ключевой фразе - PSK.

После установки пакета openswan необходимо настроить 2 конфигурационных файла:

# /etc/ipsec/ipsec.conf
version 2.0 # conforms to second version of ipsec.conf specification

config setup
# Включаем NAT-T, иначе через трансляцию и межсетевые экраны это работать
# не будет. На межсетевом экране необходимо разрешить пакеты UDP к нашему
# серверу по портам 500 (ipsec) и 4500 (nat traversal)
nat_traversal=yes
# Перечислены серые сети из которых можно подключиться по ipsec
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
nhelpers=0

conn l2tp-psk
# Авторизация пуде произвоидтся по ключевой фарзе
authby=secret
# Отключаем PFS в первой фазе =).
pfs=no
# Соединения будут добавляться по мере присоединения клиентов
auto=add
# Отключаем попытку договориться о смене ключей
rekey=no
# Внутренний ip адрес сервера ipsec/l2tp
left=192.168.1.10
# IP-адрес сервера в интернет за NAT
leftid=2.2.2.2
# Протокол l2tp на сервере
leftprotoport=17/0 на стороне сервера
# Маршрут сервера по умолчанию
leftnexthop=192.168.100.1
#
# Настройки для клиента протокола l2tp.
#
right=%any
rightprotoport=17/1701
rightsubnet=vhost:%priv,%no
#Disable Opportunistic Encryption
include /etc/ipsec/ipsec.d/examples/no_oe.conf


Осталось записать ключевую фразу в файл с секретом:

#/etc/ipsec/ipsec.secrets
: PSK "123456"


После этого стартуем сервисы /etc/init.d/ipsec и /etc/init.d/xl2tpd. После этого можно пробовать соединиться клиентом встроенным в Windows 7, но не сразу =). Несмотря на то, что в Windows встроен достаточно хороший клиент для vpn, при работе с ipsec через nat, необходимо добавить ключ реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent\AssumeUDPEncapsulationContextOnSendRule и установить значение REG_DWORD равным 2. Таким образом мы сообщаем Ipsec в Windows что сервер и клиент ipsec могут находиться за NAT. Последнее, что необходимо настроить, это добавить ключевую фразу. Это делается в свойствах соединения, на вкладке "Безопасность" под кнопкой "Дополнительные параметры". Впишите предварительный ключ, такой же, как и указанный в /etc/ipsec/ipsec.secrets.

На этом все настройки закончены и можно пользоваться. =)