Виртуальное сетевой устройство с криптованием

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение Olej » 16 мар 2012, 03:14

А посмотрите ка в исходниках ядра такие вещи (файлы) как:
linux/Documentation/networking/bonding.txt
The Linux bonding driver provides a method for aggregating
multiple network interfaces into a single logical "bonded" interface.
The behavior of the bonded interfaces depends upon the mode; generally
speaking, modes provide either hot standby or load balancing services.
Additionally, link integrity monitoring may be performed.
linux/Documentation/networking/ifenslave.c
* ifenslave.c: Configure network interfaces for parallel routing.
*
* This program controls the Linux implementation of running multiple
* network interfaces in parallel.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение Olej » 16 мар 2012, 03:33

Кстати, вот вам ещё исходники CiscoSystemsVPNClient - это мной подправленный вариант, он собирается пол 2.6.32, 2.6.35, и я ним 1/2 года активно пользовался.
Там немного.
Посмотрите что они там в модуле наворотили, задачи то сходные. Может чего подскажет.

P.S. это я вам подбросил на предмет: а). они манипулируют с подменой интерфейсов, б). делалось это Cisco ещё для ядра 2.6.29 или около того, и дальше они его не правили, б). поэтому они используют явно группы API не из числа тех, которые появились только в 2.6.36 ... посмотрите, может что подскажет?
Вложения
vpnclient-path.tgz
(40.3 КБ) 447 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение Olej » 16 мар 2012, 15:30

kit_D писал(а):Под 3.2.9 кернел компилируется без изменений?
Что за p2p1 интерфейс?
Хороший вопрос! :mrgreen:
viewtopic.php?f=18&t=1623

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение kit_D » 16 мар 2012, 16:35

Вы вероятно намекаете на RX_HANDLER_ANOTHER ? Стоит попробовать.
Выкладываю последние изменения в модуле. Действительно подправив немного rx_handler_result_t handle_frame тоже работает. Часть кода соответственно ушла в небытие.
Похоже, что по какой то причине проблема с отключение WiFi сети тоже отпала - не уверен почему.
Вложения
crypto2.tar.gz
(6.02 КБ) 561 скачивание

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение kit_D » 16 мар 2012, 16:47

Поговорив с заказчиками, стало ясно что виртульное устройство для криптования не нужно как таковое. Ну оно наверное и к лучшему, т.к., как мне кажется, в существующем подходе предвиделись проблемы с мультикастом. Т.о. архитектура меняется полностью, хотя цель остается та же - шифрование исходящего трафика + дешифрование входящего.

Кстати, заказчик говорит, что в виндовс версии они использовали NDIS Intermediate Driver http://en.wikipedia.org/wiki/Network_Dr ... cification - смотрите всередине страницы). Вот аналог этого подхода и надо сделать.

Мне, как не знатоку, видится 2 подхода:

1) Для вохдящего трафика мы используем ту же rx_handler_result_t handle_frame() для регистрации хука на wlan0 интерфейсе. Для исходящего - попробую переопределить ndo_start_xmit функцию из net_device_ops установленной для wlan0 на свою, в которой я буде дешифровать, а потом для полученного фрейма вызывать родную ndo_start_xmit, определенную для wlan0 изначально

2) Смотреть в сторону хуков нетфильтра - тема для меня новая, тем интереснее будет.

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение kit_D » 16 мар 2012, 16:51

А посмотрите ка в исходниках ядра такие вещи (файлы) как:
linux/Documentation/networking/bonding.txt
Ну да, это я видел. Там также используется netdev_rx_handler_register(). Спасибо.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение Olej » 16 мар 2012, 17:32

kit_D писал(а): Мне, как не знатоку, видится 2 подхода:

1) Для вохдящего трафика мы используем ту же rx_handler_result_t handle_frame() для регистрации хука на wlan0 интерфейсе. Для исходящего - попробую переопределить ndo_start_xmit функцию из net_device_ops установленной для wlan0 на свою, в которой я буде дешифровать, а потом для полученного фрейма вызывать родную ndo_start_xmit, определенную для wlan0 изначально

2) Смотреть в сторону хуков нетфильтра - тема для меня новая, тем интереснее будет.
Только это уже другая задача, и чтоб не сваливать всё в кучу, если у вас возникнет желание её обсуждать - заведите рядом новую тему ... скажем "криптование потока сетевого интерфейса".
Ок?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение Olej » 16 мар 2012, 19:00

kit_D писал(а): Кроме того я уже давно пользуюсь wireshark - гуи для tcpdump. Весьма удобно.
А насчет ключей - их подбирать не надо, надо только указать имя интерфейса. В случае с tcpdump:
tcpdump -i crypto
tcpdump -i wlan0
Только wireshark, как мне кажется, GUI не к tcpdump, а к /usr/sbin/dumpcap.
Но вот тут у меня возник вопрос, может кто сталкивался?

1. в Fedora 12 (с ядром 3.0.9 ;-) ) wireshark замечательно работал:
Wireshark.png
Wireshark.png (81.75 КБ) 7854 просмотра
2. но в Fedora 16 в VM, запуск wireshark заканчивается окошком:
wireshark-err.png
wireshark-err.png (13.14 КБ) 7852 просмотра
Сначала я грешил на то, что делаю запуск wireshark удалённо на X11 в LAN, по ssh, как-то так:

Код: Выделить всё

[olej@notebook ~]$ ssh -X olej@192.168.1.20
Address 192.168.1.20 maps to nvidia, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
olej@192.168.1.20's password: 
Last login: Fri Mar 16 14:51:46 2012 from notebook
/usr/bin/xauth:  file /home/olej/.Xauthority does not exist
[olej@nvidia ~]$ wireshark
Но и окно wireshark и окно ошибки прорисовывается на удалённом дисплее X11...

3. посмотрел локально... там та же история:

Код: Выделить всё

[olej@nvidia 16]$ dumpcap
bash: /usr/sbin/dumpcap: Отказано в доступе
[olej@nvidia 16]$ ls -l /usr/sbin/dumpcap
-rwxr-x---. 1 root wireshark 67856 янв.  11 10:35 /usr/sbin/dumpcap
[olej@nvidia 16]$ sudo cat /etc/group | head -n5
root:x:0:olej
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
- о-ба-на :-o - получается, что wireshark теперь можно выполнять только как root (и он так локально выполняется, но с предупреждением о грядущих неприятностях) ... или от имени группы bin? и почему так странно (числом) отображается группа bin? посмотрел прежнюю установку (Fedora 12), которая нормально стартовала:

Код: Выделить всё

[olej@notebook 16]$ ls -l /usr/sbin/dumpcap 
-rwxr-xr-x 1 root root 60908 Ноя 24  2010 /usr/sbin/dumpcap
- но это ж немного другое дело???

Или я чего-то очевидного не вижу? глаз замылен? или там в задумке был какой-то скрытый смысл?

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение kit_D » 16 мар 2012, 19:06

Конечно, wireshark можно выполнять только только рутом, так же как и tcpdump. Они оба используют такую вещь, которая если я не ошибаюсь называется BPF.

kit_D
Писатель
Сообщения: 52
Зарегистрирован: 13 мар 2012, 13:14
Откуда: Харьков
Контактная информация:

Re: Виртуальное сетевой устройство с криптованием

Непрочитанное сообщение kit_D » 16 мар 2012, 19:07

Только это уже другая задача, и чтоб не сваливать всё в кучу, если у вас возникнет желание её обсуждать - заведите рядом новую тему ... скажем "криптование потока сетевого интерфейса".
Ок?
Новая тема создана: Криптование потока сетевого интерфейса
Добро пожаловать: viewtopic.php?f=18&t=1624&start=0

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей