| 
 | |
|  | 
Дело в том, что в ядре Linux, модель маршрутизации и адресации IPv4 (замечательные особенности которой описывает этот HOWTO) строилась на основе Базы Политик Маршрутизации (RPDB -- Routing Policy Database). К сожалению, модель IPv6 в Linux была реализована совершенно иным образом. Хотя они используют совместно некоторые средства, но основа основ -- RPDB, не принимает участия в адресации и маршрутизации IPv6.
Надеюсь, что такое положение дел наверняка изменится, надо только подождать.
FIXME: : Ждем ваших замечаний и предложений по этому поводу, может кто-то работает над этим?
ip6tables имеет возможность пометить пакеты:
# ip6tables -A PREROUTING -i eth0 -t mangle -p tcp -j MARK --mark 1        
        
        Но тем не менее, это крайне слабое утешение, поскольку пакет пройдет мимо RPDB.
      Для передачи по сетям IPv4, трафик IPv6 обычно инкапсулируется в SIT-туннель. За дополнительной информацией по созданию такого рода туннелей, обращайтесь к разделу Тоннелирование IPv6. Это позволяет выполнять фильтрацию IPv4-пакетов, которые, в качестве полезной нагрузки, несут пакеты IPv6.
Следующий фильтр отберет все пакеты IPv6, инкапсулированные в IPv4:
# tc filter add dev $DEV parent 10:0 protocol ip prio 10 u32 \
            match ip protocol 41 0xff flowid 42:42        
        
        Продолжим в том же духе. Предположим, что пакеты IPv6 передаются по сети IPv4, и не имеют 
        набора опций. Тогда, для обнаружения пакетов ICMPv6 можно использовать следующий фильтр. 
        0x3a (58) -- Next-Header для ICMPv6.
        # tc filter add dev $DEV parent 10:0 protocol ip prio 10 u32 \
           match ip protocol 41 0xff \
           match u8 0x05 0x0f at 0 \
           match u8 0x3a 0xff at 26 \
           flowid 42:42        
        
        Фильтрация по адресу получателя потребует от нас дополнительных усилий. Например,
        следующий фильтр отбирает пакеты с адресом получателя 3ffe:202c:ffff:32:230:4fff:fe08:358d:
        # tc filter add dev $DEV parent 10:0 protocol ip prio 10 u32 \
            match ip protocol 41 0xff \
            match u8 0x05 0x0f at 0 \
            match u8 0x3f 0xff at 44 \
            match u8 0xfe 0xff at 45 \
            match u8 0x20 0xff at 46 \
            match u8 0x2c 0xff at 47 \
            match u8 0xff 0xff at 48 \
            match u8 0xff 0xff at 49 \
            match u8 0x00 0xff at 50 \
            match u8 0x32 0xff at 51 \
            match u8 0x02 0xff at 52 \
            match u8 0x30 0xff at 53 \
            match u8 0x4f 0xff at 54 \
            match u8 0xff 0xff at 55 \
            match u8 0xfe 0xff at 56 \
            match u8 0x08 0xff at 57 \
            match u8 0x35 0xff at 58 \
            match u8 0x8d 0xff at 59 \
            flowid 10:13        
        
        Эту же методику можно использовать для отбора по адресу подсети, например 2001::
        # tc filter add dev $DEV parent 10:0 protocol ip prio 10 u32 \
            match ip protocol 41 0xff \
            match u8 0x05 0x0f at 0 \
            match u8 0x20 0xff at 28 \
            match u8 0x01 0xff at 29 \
            flowid 10:13        
        
      | Назад | В начало документа | Вперед | 
| Хеш-фильтры. | К началу раздела | Параметры настройки сети в ядре. | 
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |