Некоторые из этих изменений - результат изменений в ядре, и поэтому в ipchains есть отличия от ipfwadm.
Многие параметры были повторно переопределены: заглавные буквы теперь указывают команду, а строчные буквы теперь указывают опцию.
Поддерживаются произвольные цепочки, так даже встроенные цепочки обозначаются именами вместо флажков (напр. "input" вместо "-I").
"-k" опция исчезла: используйте "! -y'.
"-b" опция фактически вставляет/добавляет/удаляет два правила, скорее чем одно правило `bidirectional'.
"-b" опцию можно использовать с "-C", чтобы сделать две проверки (в каждом направлении).
"-x" опция в "-l" была заменена на "-v".
Больше не поддерживаются множественные порты источника и адресата. Однако можно воспользоваться возможностью отрицать диапазоны портов.
Интерфейсы могут быть определены только именем (не адресом). Старая семантика заменена в ядре 2.1.
Фрагменты проверяются, не разрешены автоматически.
Explicit accounting chains have been done away with.
Могут быть проверены произвольные протоколы над IP.
Изменено старое поведение соответствий SYN и ACK (который предварительно игнорировались для не-TCP пакетов); опция SYN не допустима для не-TCP-специфичных правил.
Счетчики на 32-разрядных машинах теперь 64-разрядные, а не 32-разрядные.
Поддерживаются обратные опции.
Поддерживаются ICMP коды.
Поддерживаются уайлдкарты интерфейсов.
Исправлены манипуляции с TOS: старый код ядра просто зависал при (неправильном) управлении битом `Must Be Zero' TOS; теперь в этом и аналогичных случаях ipchains возвращает ошибку.