Для отработки этих и других возникающих вопросов очень полезно, как мне подумалось, создать тестовую задачу несколько в другой постановке: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
- и сетевой обмен был бы прозрачен с таким интерфейсом (таким IP) только с хостов, где также загружен такой же модуль crypt.ko, а обмен с любых других хостов создавал бы ошибку.
P.S. Я попробовал "по-быстрому" набросать такой модуль, но с первой попытки, в лёт, так не получилось...
И проблема в том: как установить функцию-фильтр для исходящих пакетов, которая бы срабатывала для каждого фрейма прежде, чем вызывается функция из таблицы операций ndo_start_xmit для этого фрейма (для модификации перед передачей).