В ветки FreeBSD 8-STABLE (http://svn.freebsd.org/viewvc/base?view=revision&revision=20...) и 7-STABLE (http://svn.freebsd.org/viewvc/base?view=revision&revision=21...) был добавлен новый узел NetGraph под названием ng_patch. С помощью ng_patch появилась возможность редактирования произвольных полей в заголовках IP-пакетов. Пример использования нового узла можно посмотреть в данной заметке (http://nuclight.livejournal.com/126002.html).
URL: http://nuclight.livejournal.com/126002.html
Новость: http://www.opennet.me/opennews/art.shtml?num=27324
Это типа как:# iptables -t mangle -A POSTROUTING -j TOS --set-tos 0x10
# iptables -t mangle -A POSTROUTING -j TTL --ttl-set 128?
это типа как-то так:
>Зато, в отличие от других решений (в том числе на других ОС), эта нода позволяет производить последовательность операций над произвольными байтами пакета, не только ToS или TTL
Это изменение любого байтика и битика в пакете.
Как в данных, так и в заголовке.
Причем, все это в ядре.Так тоже можно менять, через divert передавать пакет своей программе, например.
Но это юзерленд, что не тру.
В ядре - кошернее)Вместе с модулем ng_bpf это дает возможность выловить и изменить любой пакет.
Возможности открываются огромные.
Например, в асечном пакете можно изменять текст "я тебя люблю" на "иди в попу!!" =)Оно, конечно, не всем надо (особенно, приведенный пример).
Но если кому-то надо что-то менять на лету, штатный ядерный способ им понравится)
>NB: Только учтите, что это средство - в стиле Unix, и позволяет админу прострелить себе ногу. Хитро поигравшись значениями, можно так изменить пакет, что на выходном пути IP-стека ядро свалится в панику или будут какие-нибудь еще непредсказуемые результаты.Что-то не айс.
А ядру какое дело, что там транзитом летает? Если даже что-то будет в этом плане не айс, то это скорее будет относиться к текущему модулю и пролечится по факту выявления возможностей прослтрелить ногу.
Вроде и раньше можно было, судя по man ipfw
Менять нельзя было. Только находить соответствие по iptos/ipttl в пакете.
>Менять нельзя было. Только находить соответствие по iptos/ipttl в пакете.Можно было добавлять свои флаги. Если не ошибаюсь, начиная с 7-ки.
tag / untag / tagged ?
Эти теги существуют только пока пакет в ядре - они не меняли состав заголовков пакета. Как только он виходит из системы теги теряются.
>Например, в асечном пакете можно изменять текст "я тебя люблю" на "иди в попу!!" =)а есть реально важные применения?