Модуль ядра Linux. Виртуальный сетевой интерфейс.

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

Модератор: Olej

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

Re: Модуль ядра Linux. Виртуальный сетевой интерфейс.

Непрочитанное сообщение Olej » 16 фев 2013, 00:07

mcrandy писал(а): Поэтому я хочу сейчас понять, возможно ли как то увеличивать пересылаемый пакет? Или за ранее уменьшить его максимальный размер для последующего увеличения? Или увеличить, а потом раздробить механизмом ip fragmentation?
Для отработки этих и других возникающих вопросов очень полезно, как мне подумалось, создать тестовую задачу несколько в другой постановке:
- не создавать новый виртуальный интерфейс в дополнение к существующим
- а загружая модуль указывать существующий интерфейс, на который "сядет" загружаемый модуль
- с тем, что он станет шифровать каждый уходящий фрейм с этого интерфейса, и дешифровать каждый приходящий фрейм на этот интерфейс.
Это был бы сильно полезный пример (не перегруженный деталями), который позволял бы работать над вашим, или любыми самыми разными вопросами шифрования.

Для объяснения конкретного:

- положим у меня в VM (я начально предлагаю отрабатывать сетевые модули только в VM ... в VirtualBox, например) имеются интерфейсы (p2p1 - это интерфейс в LAN, а p7p1 - это интерфейс к хосту VirtualBox):

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

[olej@fedora ~]$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: p2p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:87:ea:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.137/24 brd 192.168.1.255 scope global p2p1
    inet6 fe80::a00:27ff:fe87:ea29/64 scope link
       valid_lft forever preferred_lft forever
3: p7p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:08:9a:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.3/32 brd 192.168.56.3 scope global p7p1
    inet6 fe80::a00:27ff:fe08:9abd/64 scope link
       valid_lft forever preferred_lft forever
- вот хотелось бы иметь такой модуль:

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

[olej@fedora crypt]$ sudo insmod crypt.ko link=p7p1 debug=1
- после чего весь исходящий трафик p7p1 шифровался, а входящий симметрично дешифровался...

- и сетевой обмен был бы прозрачен с таким интерфейсом (таким IP) только с хостов, где также загружен такой же модуль crypt.ko, а обмен с любых других хостов создавал бы ошибку.

P.S. Я попробовал "по-быстрому" набросать такой модуль, но с первой попытки, в лёт, так не получилось...
И проблема в том: как установить функцию-фильтр для исходящих пакетов, которая бы срабатывала для каждого фрейма прежде, чем вызывается функция из таблицы операций ndo_start_xmit для этого фрейма (для модификации перед передачей).

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

Re: Модуль ядра Linux. Виртуальный сетевой интерфейс.

Непрочитанное сообщение Olej » 02 ноя 2015, 14:18

Сильно освежённое описание всё той же темы (код остался практически неизменным, но объяснения подробные) - "Виртуальный сетевой интерфейс".
Вложения
virtnet1_07.odt
(72.75 КБ) 286 скачиваний
virt-net1.tgz
(7.86 КБ) 285 скачиваний

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

Re: Модуль ядра Linux. Виртуальный сетевой интерфейс.

Непрочитанное сообщение Olej » 14 ноя 2015, 19:37

Olej писал(а):Сильно освежённое описание всё той же темы (код остался практически неизменным, но объяснения подробные) - "Виртуальный сетевой интерфейс".
И второй вариант, относительно реализации на сетевом уровне.
Вложения
virtnet2_03.odt
(114.52 КБ) 285 скачиваний
virt-net2.tgz
(7.79 КБ) 282 скачивания

Ответить

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

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

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