Представляет собой набор инструментов, позволяющий работать с большими списками (sets) IP-адресов и/или портов. Поддерживается возможность динамического обновления списков при прохождении пакетов через правила netfilter.
В версии ipset 4 и более ранних поддерживалась работа только с семейством адресов IPv4, однако начиная с пятой версии реализована также и поддержка IPv6.
в современных ядрах поддержка ipset присутствует штатно с 2.6.39, для более старых ядер необходимо делать сборку вручную.
ipset состоит из следующих элементов:
Показать
* Модуль ядра ip_set, обеспечивающий базовый инструментарий работы со списками записей, который используется модулями расширений.
* Модули расширений, определяющие конкретные структуры записей и методы работы с ними, например, ip_set_hash_ip (тип данных hash: ip), ip_set_bitmap_port (тип данных bitmap: port) и т. д.
* Userspace-утилита ipset, позволяющая выполнять различные операции со списками и записями в них:
------Создание, удаление, переименование, вывод, очистка списков.
------Добавление и удаление записей из списков, проверка наличия записи в списке.
------Вывод справочной информации по работе со списками различного типа.
* Модули расширений для утилиты ipset, соответствующие модулям расширений в ядре, например, ipset_hash_ip (тип данных hash: ip), ipset_bitmap_port (тип данных bitmap: port) и т. д. Каждый такой модуль отвечает за обеспечение интерфейса между «своим» модулем ядра и конечным пользователем, в частности, проверку корректности вводимых и форматирование выводимых данных, а также вывод справочной информации по допустимым командам и параметрам. В ранних версиях ipset (до 4 включительно) такие модули выделялись в виде подгружаемых библиотек, однако в современных версиях ipset они статически включаются в основной бинарник, поэтому разделение существует лишь в исходном коде.
* Модуль netfilter xt_set (критерий set и действие SET), а также соответствующие модули (библиотеки) iptables (libxt_set и libxt_SET). Критерий set позволяет проверять различные параметры пакета (IP/MAC-адреса, TCP/UDP-порты источника и/или получателя) на предмет нахождения или отсутствия в списке. Действие SET позволяет добавлять или удалять записи из списка на основании указанных параметров пакета.
* Модули расширений, определяющие конкретные структуры записей и методы работы с ними, например, ip_set_hash_ip (тип данных hash: ip), ip_set_bitmap_port (тип данных bitmap: port) и т. д.
* Userspace-утилита ipset, позволяющая выполнять различные операции со списками и записями в них:
------Создание, удаление, переименование, вывод, очистка списков.
------Добавление и удаление записей из списков, проверка наличия записи в списке.
------Вывод справочной информации по работе со списками различного типа.
* Модули расширений для утилиты ipset, соответствующие модулям расширений в ядре, например, ipset_hash_ip (тип данных hash: ip), ipset_bitmap_port (тип данных bitmap: port) и т. д. Каждый такой модуль отвечает за обеспечение интерфейса между «своим» модулем ядра и конечным пользователем, в частности, проверку корректности вводимых и форматирование выводимых данных, а также вывод справочной информации по допустимым командам и параметрам. В ранних версиях ipset (до 4 включительно) такие модули выделялись в виде подгружаемых библиотек, однако в современных версиях ipset они статически включаются в основной бинарник, поэтому разделение существует лишь в исходном коде.
* Модуль netfilter xt_set (критерий set и действие SET), а также соответствующие модули (библиотеки) iptables (libxt_set и libxt_SET). Критерий set позволяет проверять различные параметры пакета (IP/MAC-адреса, TCP/UDP-порты источника и/или получателя) на предмет нахождения или отсутствия в списке. Действие SET позволяет добавлять или удалять записи из списка на основании указанных параметров пакета.
Викиучебник ipset
Аналогичная документация в источника ОС
Debian ipset(8)
archlinux ipset(8)
Пример утилит, которые могут использоваться с ipset — iptables (Ubuntu / Debian), firewalld (CentOS / Red Hat).
Пакеты в Debian
Показать
ipset -Для наборов IP-адресов ядра
libipset-dev - Файлы разработки для наборов IP-адресов
ipset-persistent - Загрузчик во время загрузки правил netfilter, плагин ipset
libipset13 -для наборов IP-адресов
libcorkipset-dev -C для хранения наборов/карт IP-адресов (файлы разработки)
libcorkipset-doc -C для хранения наборов/карт IP-адресов (файлы документации)
libcorkipset-utils -C для хранения наборов/карт IP-адресов (служебные файлы)
libcorkipset1 -C для хранения наборов/карт IP-адресов
libipset-dev - Файлы разработки для наборов IP-адресов
ipset-persistent - Загрузчик во время загрузки правил netfilter, плагин ipset
libipset13 -для наборов IP-адресов
libcorkipset-dev -C для хранения наборов/карт IP-адресов (файлы разработки)
libcorkipset-doc -C для хранения наборов/карт IP-адресов (файлы документации)
libcorkipset-utils -C для хранения наборов/карт IP-адресов (служебные файлы)
libcorkipset1 -C для хранения наборов/карт IP-адресов
Код: Выделить всё
ipset -N newlist nethash
Код: Выделить всё
ipset -A newlist 192.168.1.0/24
Код: Выделить всё
ipset -A newlist 192.168.2.0/24
Код: Выделить всё
iptables -I INPUT -m set --match-set newlist src -j DROP
Блокировка списка сетей
Создаем новый «набор» сетевых адресов. создаст новый «хэш» набор сетевых адресов с названием «myset».
Код: Выделить всё
ipset create myset hash:net
Код: Выделить всё
ipset -N myset nethash
Код: Выделить всё
ipset add myset 14.144.0.0/12
Код: Выделить всё
ipset add myset 27.8.0.0/13
Код: Выделить всё
ipset add myset 58.16.0.0/15
Код: Выделить всё
ipset add myset 1.1.1.0/24
Код: Выделить всё
iptables -I INPUT -m set --match-set myset src -j DROP
Создания нового «набора» IP-адресов. Команда создаст новый «хеш» набор IP-адресов с именем «myset-ip».
Код: Выделить всё
ipset create myset-ip hash:ip
Код: Выделить всё
ipset -N myset-ip iphash
Код: Выделить всё
ipset add myset-ip 192.153.1.1
Код: Выделить всё
ipset add myset-ip 192.210.2.2
Код: Выделить всё
iptables -I INPUT -m set --match-set myset-ip src -j DROP
Созданный ipset хранится в памяти и исчезнет после перезагрузки.
Чтобы сделать ipset постоянным, необходимо сделать следующее
Сохранить ipset в /etc/ipset.conf
Код: Выделить всё
ipset save > /etc/ipset.conf
просмотра наборов:
Код: Выделить всё
ipset list
Код: Выделить всё
ipset -L
Код: Выделить всё
ipset destroy myset
Код: Выделить всё
ipset -X myset
Код: Выделить всё
ipset destroy
Тип содержимого: текст/html; кодировка=UTF-8
IPSET
Раздел: (8)
Обновлено: 25 июня 2015 г.
НАЗВАНИЕ
ipset --- инструмент администрирования наборов IP-адресов
КРАТКОЕ ОПИСАНИЕ
ipset [ ПАРАМЕТРЫ ] КОМАНДА [ COMMAND-OPTIONS ]
ipset [ OPTIONS ] COMMAND [ COMMAND-OPTIONS ]
КОМАНДЫ := { создать | добавить | удалить | протестировать | уничтожить | перечислить | сохранить | восстановить | очистить | переименовать | поменять местами | справка | версия | - }
COMMANDS := { create | add | del | test | destroy | list | save | restore | flush | rename | swap | help | version | - }
ПАРАМЕТРЫ := { -существующий | -вывод { обычный | сохранить | xml } | -тихий | -разрешить(резвол днс) | -сортировка | -имя | -краткий | -имя файла }
OPTIONS := { -exist | -output { plain | save | xml } | json } | -quiet | -resolve | -sorted | -name | -terse | -file filename }
ipset создать ИМЯ-НАБОРА ИМЯ-ТИПА [ СОЗДАТЬ-ПАРАМЕТРЫ ]
ipset create SETNAME TYPENAME [ CREATE-OPTIONS ]
ipset добавить ИМЯ-НАБОРА ДОБАВИТЬ ЗАПИСЬ [ ДОБАВИТЬ ПАРАМЕТРЫ ]
ipset add SETNAME ADD-ENTRY [ ADD-OPTIONS ]
ipset удалить ИМЯ-НАБОРА УДАЛИТЬ-ЗАПИСЬ [ УДАЛИТЬ-ПАРАМЕТРЫ ]
ipset del SETNAME DEL-ENTRY [ DEL-OPTIONS ]
ipset тест ИМЯ-НАБОРА ТЕСТ [ ПАРАМЕТРЫ ТЕСТИРОВАНИЯ ]
ipset test SETNAME TEST-ENTRY [ TEST-OPTIONS ]
ipset уничтожить [ ИМЯ-НАБОРА ]
ipset destroy [ SETNAME ]
ipset список [ ИМЯ-НАБОРА ]
ipset list [ SETNAME ]
ipset сохранить [ ИМЯ-НАБОРА ]
ipset save [ SETNAME ]
ipset восстановление
ipset restore
ipset сброс [ ИМЯ-НАБОРА ]
ipset flush [ SETNAME ]
ipset переименовать ИМЯ-НАБОРА-С ИМЯ-НАБОРА-НА
ipset rename SETNAME-FROM SETNAME-TO
ipset поменять ИМЯ-НАБОРА-С ИМЯ-НАБОРА-НА
ipset swap SETNAME-FROM SETNAME-TO
ipset справка [ тип ИМЯ ]
ipset help [ TYPENAME ]
ipset Версия
ipset version
ipset -
ОПИСАНИЕ
ipset используется для настройки, обслуживания и проверки так называемых наборов IP-адресов в ядре Linux. В зависимости от типа набора, набор IP-адресов может содержать IP-адреса (v4/v6), номера портов (TCP/UDP), пары IP-адресов и MAC-адресов, пары IP-адресов и номеров портов и т.д. Смотрите определения типов наборов ниже.
Совпадения Iptables и цели, ссылающиеся на наборы, создают ссылки, которые защищают данные наборы в ядре. Набор не может быть уничтожен, пока есть хоть одна ссылка, указывающая на него.
ОПЦИИ
Параметры, которые распознаются ipset, можно разделить на несколько различных групп.
КОМАНДЫ
Эти параметры определяют желаемое действие для выполнения. В командной строке можно указать только одно из них, если ниже не указано иное. Для всех длинных версий названий команд необходимо использовать только достаточное количество букв, чтобы ipset можно было отличить от всех других команд. Анализатор ipset следует приведенному здесь порядку при поиске кратчайшего совпадения в длинных именах команд.
n, create SETNAME TYPENAME [ CREATE-OPTIONS ]
Создайте набор, идентифицируемый с помощью setname и указанного типа. Для этого типа могут потребоваться параметры, зависящие от типа. Если указан параметр -exist, ipset игнорирует ошибку, возникающую в противном случае, когда один и тот же набор (параметры setname и create идентичны) уже существует.
add SETNAME ADD-ENTRY [ ADD-OPTIONS ]
Добавьте данную запись в набор. Если указан параметр -exist, ipset игнорирует, если запись уже добавлена в набор.
del SETNAME DEL-ENTRY [ DEL-OPTIONS ]
Удалить запись из набора. Если задан параметр -exist, а записи нет в наборе (возможно, срок действия уже истек), то команда игнорируется.
test SETNAME TEST-ENTRY [ TEST-OPTIONS ]
Проверьте, есть ли запись в наборе или нет. Номер статуса выхода равен нулю, если проверяемая запись есть в наборе, и отличен от нуля, если она отсутствует в наборе.
x, destroy [ SETNAME ]
Уничтожьте указанный набор или все наборы, если ни один из них не указан.
Если на набор есть ссылки, то ничего не делается и ни один набор не уничтожается.
list [ SETNAME ] [ OPTIONS ]
Укажите данные заголовка и записи для указанного набора или для всех наборов, если ни один из них не указан.
Параметр -resolve можно использовать для принудительного поиска по имени (который может быть медленным).
Если выбрана опция -sorted, записи отображаются в списке/сохраняются отсортированными (что может быть медленным процессом).
Опция -output может использоваться для управления форматом списка: обычный, сохранить/plain, save или xml. (По умолчанию используется обычный plain).
Если указано имя -name параметра, то будут перечислены только имена существующих наборов.
Если указан параметр "краткий" -terse, то будут перечислены только имена наборов и заголовки.
Выходные данные выводятся в стандартный вывод, параметр -file можно использовать для указания имени файла вместо стандартного вывода.
save [ SETNAME ]
Сохраните заданный набор или все наборы, если ни один из них не задан в стандартном режиме вывода, в формате, который может быть прочитан при восстановлении restore.
Параметр -file можно использовать для указания имени файла вместо стандартного вывода.
restore
Восстановите сохраненный сеанс, сгенерированный с помощью save. Сохраненный сеанс может быть загружен из stdin или можно использовать option -file для указания имени файла вместо stdin.
Обратите внимание, что существующие наборы и элементы не удаляются с помощью restore, если это не указано в файле восстановления. В режиме восстановления разрешены все команды, за исключением списка, справки, версии,/list, help, version интерактивного режима и самого восстановления restore.
flush [ SETNAME ]
Очистите все записи из указанного набора или очистите все наборы, если ни один из них не указан.
e, переименуйте SETNAME-ИЗ SETNAME-В
e, rename SETNAME-FROM SETNAME-TO
Переименуйте набор. Набор, указанный с помощью SETNAME-TO, не должен существовать.
w, поменять SETNAME-С SETNAME-НА
w, swap SETNAME-FROM SETNAME-TO
Поменяйте местами содержимое двух наборов, или, другими словами, поменяйте названия двух наборов. Указанные наборы должны существовать, и можно менять только совместимые типы наборов.
help [ TYPENAME ]
Отобразить справку и установите справку для конкретного типа, если указано имя типа.
version
Отобразить версию программы
-
Если в качестве команды указано тире, то ipset переходит в простой интерактивный режим, и команды считываются со стандартного ввода. Интерактивный режим можно завершить, введя псевдокоманду quit.
ДРУГИЕ ОПЦИИ
Можно указать следующие дополнительные параметры. Длинные названия параметров сокращать нельзя.
-!, -exist
Игнорируйте ошибки, когда требуется создать точно такой же набор, или когда добавляется уже добавленная запись, или когда удаляется отсутствующая запись.
-o, -output { plain | save | xml | json }
Выберите формат вывода для команды список list.
-q, -quiet
Подавите любой вывод в stdout, и stderr. ipset все равно завершит работу с ошибкой, если не сможет продолжить.
-r, -resolve
При выводе списков наборов необходимо использовать поиск по именам. Программа попытается отобразить записи IP, преобразованные в имена хостов, что требует медленного slow поиска по DNS.
-s, -sorted
Отсортированные выходные данные. При перечислении или сохранении наборов записи отображаются в отсортированном виде.
-n, -name
Перечислите только имена существующих наборов, т.е. исключите перечисление заголовков и членов набора.
-t, -terse
Перечислите имена наборов и заголовки, т.е. исключите перечисление членов набора.
-f, -file filename
Укажите имя файла для печати вместо стандартного вывода (команды списка list или save сохранения) или для чтения из него вместо стандартного ввода (команда восстановления restore).
ВВЕДЕНИЕ
Тип набора включает в себя метод хранения, с помощью которого хранятся данные, и типы данных, которые хранятся в наборе. Таким образом, параметр TYPENAME команды create соответствует синтаксису
ИМЯ ТИПА := метод:тип данных[,тип данных[,тип данных]]
TYPENAME := method:datatype[,datatype[,datatype]]
где текущим списком методов являются bitmap, hash и list, а возможными типами данных являются ip, net, mac, port и iface. Размерность набора равна количеству типов данных в его названии.
При добавлении, удалении или тестировании записей в наборе для входных параметров команд должен использоваться один и тот же синтаксис данных, разделенный запятыми, т.е.
ipset add foo ipaddr,portnum,ipaddr
Если вместо IP-адресов или номеров служб используются имена хостов или служб с тире в названии, то имя хоста или службы должно быть заключено в квадратные скобки. Пример:
ipset добавляет foo [тест-имя_хоста],[ftp-данные]
ipset add foo [test-hostname],[ftp-data]
В случае имен хостов распознаватель DNS вызывается внутри ipset, но если он возвращает несколько IP-адресов, используется только первый из них.
Типы bitmap и list используют хранилище фиксированного размера.
Типы hash используют хэш для хранения элементов. Во избежание коллизий в хэше используется ограниченное количество цепочек, и если они исчерпаны, то при добавлении записей командой ipset выполняется удвоение размера хэша.
Когда записи добавляются с помощью установленного SET целевого параметра iptables/ip6tables, размер хэша фиксируется, и набор не будет дублироваться, даже если новая запись не может быть добавлена в набор.
ОБЩИЕ ПАРАМЕТРЫ СОЗДАНИЯ И ДОБАВЛЕНИЯ
Таймаут/timeout
Все типы наборов поддерживают необязательный параметр timeout при создании набора и добавлении записей.
Значение параметра timeout для команды create означает значение тайм-аута по умолчанию (в секундах) для новых записей.
Если набор создан с поддержкой тайм-аута, то тот же параметр тайм-аута можно использовать для указания значений тайм-аута, отличных от значений по умолчанию, при добавлении записей.
Нулевое значение тайм-аута означает, что запись добавляется в набор постоянно.
Значение тайм-аута для уже добавленных элементов можно изменить, повторно добавив элемент с помощью параметра -exist.
Максимально возможное значение тайм-аута равно 2147483 (в секундах).
Пример:
ipset создает тестовый хэш: тайм-аут ip-адреса 300
ipset create test hash:ip timeout 300
ipset добавляет тест 192.168.0.1 тайм-аут 60
ipset add test 192.168.0.1 timeout 60
ipset -существует, добавляет тест 192.168.0.1 тайм-аут 600
ipset -exist add test 192.168.0.1 timeout 600
При перечислении набора количество записей, напечатанных в заголовке, может быть больше, чем указанное количество записей для наборов с расширениями тайм-аута: количество записей в наборе обновляется при добавлении/удалении элементов в набор и периодически, когда сборщик мусора удаляет записи с истекшим временем ожидания.
счетчики, пакеты, байты/counters, packets, bytes
Все типы наборов поддерживают опцию дополнительных счетчиков/counters при создании набора.
Если опция указана, то набор создается с поддержкой счетчиков/counters пакетов/packets и байтов/bytes на элемент.
Счетчики пакетов/packets и байтов/bytes обнуляются при (повторном) добавлении элементов в набор, если только значения счетчика пакетов/packets и байтов/bytes явно не указаны в параметрах "Пакеты/packets и байты/bytes".
Пример, когда элемент добавляется в набор с ненулевыми значениями счетчика:
ipset создает хэш foo:ip-счетчики
ipset create foo hash:ip counters
ipset добавляют пакеты foo 192.168.1.1 размером 42 байта 1024
ipset add foo 192.168.1.1 packets 42 bytes 1024
комментарий/comment
Все типы наборов поддерживают необязательное расширение для комментариев/comment. Включение этого расширения для ipset позволяет добавлять к записи ipset произвольную строку.
Эта строка полностью игнорируется как ядром, так и самим ipset и предназначена исключительно для удобства документирования причины существования записи.
Комментарии не должны содержать кавычек, а обычный escape-символ (\) не имеет значения.
Например, следующая команда shell является недопустимой:
ipset добавляет комментарий foo 1.1.1.1 "этот комментарий является \"плохим\"".
ipset add foo 1.1.1.1 comment "this comment is \"bad\""
В приведенном выше примере ваша оболочка, конечно же, не будет использовать кавычки, и ipset увидит кавычки в аргументе для комментария, что приведет к ошибке синтаксического анализа. Если вы пишете свою собственную систему, вам следует избегать создания комментариев, содержащих кавычки, если вы не хотите нарушать "ipset save/сохранение" и "ipset restore/восстановление", тем не менее, ядро не будет препятствовать вам в этом.
Следующее вполне приемлемо:
ipset создает хэш foo:ip-комментарий
ipset create foo hash:ip comment
ipset добавляет комментарий foo 192.168.1.1/24 "разрешить доступ к общему ресурсу SMB на \\\файловом сервере\\"
ipset add foo 192.168.1.1/24 comment "allow access to SMB share on \\\\fileserv\\"
вышеприведенное будет выглядеть следующим образом: "разрешить доступ к общему ресурсу SMB на \\файловом сервере\".
the above would appear as: "allow access to SMB share on \\fileserv\"
skbinfo, skbmark, skbprio, skbqueue
информация skb, отметка skb, приоритет skb, очередь skb
Все типы наборов поддерживают дополнительное расширение skbinfo. Это расширение позволяет сохранять метаинформацию (метку брандмауэра, класс tc и очередь оборудования) для каждой записи и сопоставлять ее с пакетами, используя параметр SET netfilter target с параметром --map-set. формат параметра skbmark: MARK или MARK/MASK, где MARK и MASK - это 32-битные шестнадцатеричные числа с префиксом 0x.
Если указан только mark, используется маска 0xffffffff. параметр skbprio имеет формат класса tc: MAJOR:MINOR, где major/старшие и minor/второстепенные числа являются шестнадцатеричными без префикса 0x.
Параметр skbqueue - это просто десятичное число.
ipset создает хэш foo:ip skbinfo
ipset create foo hash:ip skbinfo
установить ip-адрес, добавить foo skbmark 0x1111/0xff00ffff skbprio 1:10 skbqueue 10
ipset add foo skbmark 0x1111/0xff00ffff skbprio 1:10 skbqueue 10
ipset add foo 192.168.0.1 skbmark 0x1111/0xff00ffff skbprio 1:10 skbqueue 10
hashsize/размер хэша
Этот параметр действителен для команды create для всех наборов типов хэша/hash. Он определяет начальный размер хэша/hash для набора, значение по умолчанию равно 1024. Размер хэша должен быть в степени двойки, ядро автоматически округляет значения, отличные от двух, до первого правильного значения.
Пример:
ipset создает тестовый хэш: размер ip-хэша 1536
ipset create test hash:ip hashsize 1536
maxelem/макселем
Этот параметр действителен для команды create для всех наборов хэш-типов/hash. Он определяет максимальное количество элементов, которое может храниться в наборе, по умолчанию 65536.
Пример:
ipset создает тестовый хэш: ip maxelem 2048.
ipset create test hash:ip maxelem 2048.
bucket size
размер корзины
Этот параметр действителен для команды create для всех наборов типов хэша. Он определяет максимальное количество элементов, которые могут храниться в корзине хэша. Возможные значения - любое четное число в диапазоне от 2 до 14, по умолчанию используется значение 14. Установка меньшего значения вынуждает ipset создавать хэши большего размера, что потребляет больше памяти, но обеспечивает большую скорость сопоставления в наборе.
Пример:
ipset создать тестовый хэш:размер ip-корзины 2
ipset create test hash:ip bucketsize 2
семейство/family { inet | inet6 }
Этот параметр действителен для команды create для всех наборов типов хэша/hash, за исключением hash:mac. Он определяет семейство протоколов IP-адресов, которые будут сохранены в наборе. По умолчанию используется inet, то есть IPv4.
Для семейства inet можно добавить или удалить несколько записей, указав диапазон или сеть IPv4-адресов в части IP-адреса записи:
ipaddr := { ip | fromaddr-toaddr | ip/cidr }
netaddr := { fromaddr-toaddr | ip/cidr }
Пример:
ipset создает тестовый хэш:семейство ip-адресов inet6
ipset create test hash:ip family inet6
nomatch не совпадающие/не соответствующие
Типы наборов хэшей/hash, которые могут хранить данные сетевого/net типа (например, хэш:*net*), поддерживают необязательную опцию nomatch при добавлении записей. При сопоставлении элементов в наборе записи, помеченные как не совпадающие/не соответствующие/nomatch, пропускаются, как если бы они не были добавлены в набор, что позволяет создавать наборы с исключениями. Смотрите пример в разделе hash type hash:net ниже.
При проверке элементов с помощью ipset учитываются флаги несоответствия/nomatch. Если требуется проверить наличие элемента, помеченного как nomatch, в наборе, то для этого флага должно быть указано значение.
forceadd/принудительное добавление
Все типы наборов хэшей/hash поддерживают необязательный параметр forceadd при создании набора. Когда наборы, созданные с помощью этого параметра, становятся полными, следующее добавление к набору может завершиться успешно и удалить случайную запись из набора.
ipset создает хэш foo:ip forceadd
ipset create foo hash:ip forceadd
wildcard /подстановочный знак
Этот флаг действителен при добавлении элементов в хэш:net,iface. Если флаг установлен, то при сравнении с этим элементом используется сопоставление префикса. Например, элемент, содержащий имя интерфейса "eth", будет соответствовать любому имени с этим префиксом.
УСТАНОВЛЕННЫЕ ТИПЫ
ipset поддерживает следующие типы данных (в скобках приведены названия согласно терминологии устаревшей версии ipset 4):
bitmap:ip (ipmap) — полный перечень IP-адресов.
Тип набора bitmap:ip использует диапазон памяти для хранения либо хост-адресов IPv4 (по умолчанию), либо сетевых адресов IPv4. Набор типа bitmap:ip может содержать до 65536 записей.
ОПЦИИ-СОЗДАНИЯ := диапазон от ip-адреса до ip-адреса|cidr [ cidr сетевой маски ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := range fromip-toip|ip/cidr [ netmask cidr ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ ЗАПИСЬ := { ip | fromip-toip | ip/cidr }
ADD-ENTRY := { ip | fromip-toip | ip/cidr }
ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := { ip | fromip-toip | ip/cidr }
DEL-ENTRY := { ip | fromip-toip | ip/cidr }
ТЕСТОВАЯ ЗАПИСЬ := ip
TEST-ENTRY := ip
Обязательные параметры создания/create:
диапазон от ip-до ip|ip/cidr
range fromip-toip|ip/cidr
Создайте набор из указанного включающего диапазона адресов, выраженного в диапазоне адресов IPv4 или сети. Размер диапазона (в записях) не может превышать максимального значения в 65536 элементов.
Необязательные параметры создания/create:
маски-сети cidr
netmask cidr
Если указан необязательный параметр netmask, в наборе будут сохранены сетевые адреса вместо IP-адресов хостов.
Значение префикса cidr должно быть в диапазоне от 1 до 32. IP-адрес будет указан в наборе, если в наборе можно найти сетевой адрес, полученный в результате маскировки адреса указанной маской сети.
Тип bitmap:ip поддерживает добавление или удаление нескольких записей одной командой.
Примеры:
ipset создает битовую карту foo: диапазон ip-адресов 192.168.0.0/16
ipset create foo bitmap:ip range 192.168.0.0/16
ipset добавляет foo 192.168.1/24
ipset add foo 192.168.1/24
ipset тестирует foo 192.168.1.1
ipset test foo 192.168.1.1
bitmap:ip,mac (macipmap) — полный перечень IP-адресов, причем вместе с каждым IP-адресом может быть сохранен MAC-адрес.
Набор данных типа bitmap:ip, mac использует диапазон памяти для хранения пар IPv4 и MAC-адресов. Набор данных типа bitmap:ip,mac может содержать до 65536 записей.
СОЗДАТЬ-ПАРАМЕТРЫ := диапазон от ip-до ip-адреса|cidr [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := range fromip-toip|ip/cidr [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ip[,macaddr]
ADD-ENTRY := ip[,macaddr]
ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ip[,macaddr]
DEL-ENTRY := ip[,macaddr]
ТЕСТОВЫЙ ВВОД := ip[,macaddr]
TEST-ENTRY := ip[,macaddr]
Обязательные параметры для использования при создании типа набора bitmap:ip,mac, тип установки:
диапазон от ip-до ip-адреса|cidr
range fromip-toip|ip/cidr
Создайте набор из указанного включающего диапазона адресов, выраженного в диапазоне адресов IPv4 или сети. Размер диапазона не может превышать максимального значения в 65536 записей.
Тип bitmap:ip,mac является исключительным в том смысле, что часть MAC может быть опущена при добавлении/удалении/тестировании (adding/deleting/testing) записей в наборе.
Если мы добавим запись без указанного MAC-адреса, то при первом сопоставлении записи ядром, оно автоматически заполнит недостающий MAC-адрес MAC-адресом из пакета. MAC-адрес источника используется, если запись совпадает с параметром src для параметра set match, а MAC-адрес назначения используется, если доступен, и запись совпадает с параметром dst. Если для ввода было указано значение тайм-аута, таймер сработает после завершения сопоставления IP- и MAC-адресов.
Для наборов типа bitmap:ip,mac требуются два параметра src/dst в модулях ядра set match и SET target netfilter. Что касается совпадений по MAC-адресам назначения, смотрите КОММЕНТАРИИ ниже.
Примеры:
ipset создает foo bitmap:ip,mac диапазон 192.168.0.0/16
ipset create foo bitmap:ip,mac range 192.168.0.0/16
ipset добавляет foo 192.168.1.1,12:34:56:78:9A:BC
ipset add foo 192.168.1.1,12:34:56:78:9A:BC
ipset проверяет foo 192.168.1.1
ipset test foo 192.168.1.1
bitmap:port /bitmap:порт (portmap) — полный перечень портов.
Тип набора bitmap:port использует диапазон памяти для хранения номеров портов, и такой набор может содержать до 65536 портов.
СОЗДАТЬ-ПАРАМЕТРЫ := диапазон от порта к порту [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := range fromport-toport [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ ЗАПИСЬ := { [proto:]порт | [proto:]из порта в порт }
ADD-ENTRY := { [proto:]port | [proto:]fromport-toport }
ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ВВОД := { [proto:]порт | [proto:]из порта в порт }
DEL-ENTRY := { [proto:]port | [proto:]fromport-toport }
ТЕСТОВЫЙ ВВОД := [proto:]порт
TEST-ENTRY := [proto:]port
Обязательные параметры для использования при создании bitmap:port установки:
диапазон [proto:] от порта к порту
range [proto:]fromport-toport
Создайте набор из указанного включающего диапазона портов.
Модули ядра set match и SET target netfilter интерпретируют сохраненные номера как номера портов TCP или UDP.
proto необходимо указывать только в том случае, если используется имя службы, и это имя не существует в качестве службы TCP. Протокол никогда не сохраняется в наборе, только номер порта службы.
Примеры:
ipset создать foo bitmap:port диапазон портов 0-1024
ipset create foo bitmap:port range 0-1024
ipset добавить foo 80
ipset add foo 80
ipset тестировать foo 80
ipset test foo 80
ipset удалить foo udp:[macon-udp]-[tn-tl-w2]
ipset del foo udp:[macon-udp]-[tn-tl-w2]
hash:ip /хэш:ip (iphash) — выборочный перечень IP-адресов (либо IP-подсетей с одинаковой маской).
Тип набора hash:ip использует хэш для хранения IP-адресов хостов (по умолчанию) или сетевых адресов. IP-адрес с нулевым значением не может быть сохранен в наборе типа hash:ip.
СОЗДАНИЕ-ОПЦИИ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ значение максимального значения ] [ сетевая маска cidr ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ netmask cidr ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ netmask cidr ] [ bitmask mask ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ipaddr
ADD-ENTRY := ipaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr
DEL-ENTRY := ipaddr
ТЕСТИРОВАТЬ-ЗАПИСЬ := ipaddr
TEST-ENTRY := ipaddr
Необязательные параметры создания/create:
netmask cidr /маска-сети
Если указан необязательный параметр netmask, в наборе будут сохранены сетевые адреса вместо IP-адресов хостов. Значение префикса cidr должно быть в диапазоне от 1 до 32 для IPv4 и от 1 до 128 для IPv6. IP-адрес будет указан в наборе, если в наборе можно найти сетевой адрес, полученный в результате маскировки адреса с помощью маски сети.
Примеры:
ipset создать хэш foo:ip netmask 30
ipset create foo hash:ip netmask 30
ipset добавить foo 192.168.1.0/24
ipset add foo 192.168.1.0/24
ipset тест foo 192.168.1.2
ipset test foo 192.168.1.2
bitmask mask /маска битовой маски
Это работает аналогично маске сети, но она будет принимать любой действительный адрес IPv4/v6. Это не обязательно должна быть действительная маска сети.
hash:mac /хэш:mac
Тип набора hash:mac использует хэш для хранения MAC-адресов. MAC-адреса с нулевым значением не могут быть сохранены в наборе типа hash:mac. Совпадения по MAC-адресам назначения приведены в КОММЕНТАРИЯХ ниже.
ПАРАМЕТРЫ-СОЗДАНИЯ := [ значение хэш-размера ] [ значение максимального значения ] [ значение таймаута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := macaddr
ADD-ENTRY := macaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := macaddr
DEL-ENTRY := macaddr
ТЕСТ-ЗАПИСИ := macaddr
TEST-ENTRY := macaddr
Примеры:
ipset создает хэш foo:mac
ipset create foo hash:mac
ipset добавить foo 01:02:03:04:05:06
ipset add foo 01:02:03:04:05:06
ipset тест foo 01:02:03:04:05:06
ipset test foo 01:02:03:04:05:06
hash:ip,mac
В наборе типа hash:ip, mac используется хэш для хранения пар IP-адресов и MAC-адресов с нулевым значением. MAC-адреса с нулевым значением не могут быть сохранены в наборе типа hash:ip,mac. Совпадения по MAC-адресам назначения приведены в КОММЕНТАРИЯХ ниже.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ipaddr,macaddr
ADD-ENTRY := ipaddr,macaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr,macaddr
DEL-ENTRY := ipaddr,macaddr
ТЕСТ-ЗАПИСИ := ipaddr,macaddr
TEST-ENTRY := ipaddr,macaddr
Примеры:
ipset создать хэш foo:ip,mac
ipset create foo hash:ip,mac
ipset добавить foo 1.1.1.1,01:02:03:04:05:06
ipset add foo 1.1.1.1,01:02:03:04:05:06
ipset тест foo 1.1.1.1,01:02:03:04:05:06
ipset test foo 1.1.1.1,01:02:03:04:05:06
hash:net (nethash) — выборочный перечень IP-подсетей (блоков IP-адресов). В отличие от hash: ip, в одном списке могут присутствовать подсети с различными масками.
Тип набора hash:net использует хэш для хранения сетевых IP-адресов разного размера. Сетевой адрес с нулевым размером префикса не может быть сохранен в наборах этого типа.
СОЗДАНИЕ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := netaddr
ADD-ENTRY := netaddr
ДОБОВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ несоответствие ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := netaddr
DEL-ENTRY := netaddr
ТЕСТ-ЗАПИСЬ := netaddr
TEST-ENTRY := netaddr
где сетевой-адрес := ip[/cidr]
where netaddr := ip[/cidr]
При добавлении/удалении/тестировании adding/deleting/testing записей, если параметр cidr prefix не указан, то используется значение префикса хоста.
При добавлении/удалении записей добавляется/удаляется точный элемент, а перекрывающиеся элементы не проверяются ядром. При тестировании записей, если проверяется адрес хоста, ядро пытается найти соответствие с адресом хоста в сетях, добавленных в набор, и сообщает о результатах соответствующим образом.
С точки зрения соответствия сетевому фильтру, поиск соответствия всегда начинается с наименьшего размера сетевого блока (наиболее специфичный префикс) и заканчивается наибольшим размером сетевого блока (наименее специфичный префикс), добавленным в набор. При добавлении/удалении IP-адресов в набор с помощью целевого параметра SET netfilter они будут добавлены/удалены по наиболее определенному префиксу, который можно найти в наборе, или по значению префикса хоста, если набор пуст.
Время поиска растет линейно с увеличением количества различных значений префикса, добавляемых к набору.
Пример:
ipset создает хэш foo:чистый
ipset create foo hash:net
ipset добавить foo 192.168.0.0/24
ipset add foo 192.168.0.0/24
ipset добавить foo 10.1.0.0/16
ipset add foo 10.1.0.0/16
ipset добавить foo 192.168.0/24
ipset add foo 192.168.0/24
ipset добавить foo 192.168.0/30, не соответствует
ipset add foo 192.168.0/30 nomatch
При сопоставлении элементов из приведенного выше набора будут совпадать все IP-адреса из сетей 192.168.0.0/24, 10.1.0.0/16 и 192.168.0/24, за исключением адресов из 192.168.0/30.
hash:net,net
Тип hash:net,net набор использует хэш для хранения пар сетевых IP-адресов разного размера. Имейте в виду, что первый параметр имеет приоритет над вторым, поэтому запись о несоответствии может оказаться неэффективной, если бы существовал более конкретный первый параметр с подходящим вторым параметром. Сетевой адрес с нулевым размером префикса не может быть сохранен в наборе такого типа.
СОЗДАНИЕ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ netmask cidr ] [ bitmask mask ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := netaddr,netaddr
ADD-ENTRY := netaddr,netaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ несоответствие ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := netaddr,netaddr
DEL-ENTRY := netaddr,netaddr
ТЕСТ-ЗАПИСИ := netaddr,netaddr
TEST-ENTRY := netaddr,netaddr
где сетевой адрес := ip[/cidr]
where netaddr := ip[/cidr]
При добавлении/удалении/тестировании (adding/deleting/testing) записей, если параметр cidr prefix не указан, то используется значение префикса хоста.
При добавлении/удалении записей добавляется/удаляется точный элемент, а перекрывающиеся элементы не проверяются ядром.
При тестировании записей, если проверяется адрес хоста, ядро пытается найти соответствие с адресом хоста в сетях, добавленных в набор, и сообщает о результатах соответствующим образом.
С точки зрения заданного set соответствия netfilter, поиск соответствия всегда начинается с наименьшего размера сетевого блока (наиболее специфичный префикс) до наибольшего (наименее специфичный префикс), при этом первый параметр имеет приоритет. При добавлении/удалении IP-адресов в набор с помощью целевого параметра SET netfilter они будут добавлены/удалены по наиболее определенному префиксу, который можно найти в наборе, или по значению префикса хоста, если набор пуст.
Время поиска увеличивается линейно с увеличением количества различных значений префикса, добавляемых к первому параметру набора. Количество дополнительных префиксов увеличивается по мере того, как список дополнительных префиксов просматривается для каждого основного префикса.
Необязательные параметры создания:
netmask cidr
Если указан необязательный параметр netmask, сетевые адреса будут сохранены в наборе вместо IP-адресов хостов. Значение префикса cidr должно быть в диапазоне от 1 до 32 для IPv4 и от 1 до 128 для IPv6. IP-адрес будет указан в наборе, если в наборе можно найти сетевой адрес, полученный в результате маскировки адреса с помощью маски сети.
битовая маска
Это работает аналогично маске сети, но будет принимать любой допустимый адрес IPv4/v6. Это не обязательно должна быть действительная маска сети.
Пример:
ipset создает хэш foo:net,net
ipset create foo hash:net,net
ipset добавить foo 192.168.0.0/24,10.0.1.0/24
ipset add foo 192.168.0.0/24,10.0.1.0/24
ipset добавить foo 10.1.0.0/16,10.255.0.0/24
ipset add foo 10.1.0.0/16,10.255.0.0/24
ipset добавить foo 192.168.0/24,192.168.54.0-192.168.54.255
ipset add foo 192.168.0/24,192.168.54.0-192.168.54.255
ipset добавить foo 192.168.0/30,192.168.64/30 не соответствует
ipset add foo 192.168.0/30,192.168.64/30 nomatch
При сопоставлении элементов из приведенного выше набора будут совпадать все IP-адреса из сетей 192.168.0.0/24<->10.0.1.0/24, 10.1.0.0/16<->10.255.0.0/24 и 192.168.0/24<->192.168.54.0/24, за исключением адресов из 192.168.0/30<->192.168.64/30.
hash:ip,port (ipporthash) — выборочный перечень IP-адресов, причем с каждым адресом может быть сохранен порт. В версии ipset 4 и более ранних существует ограничение: адреса в пределах одного перечня должны принадлежать одному блоку /16 (/255.255.0.0, максимум 65536 адресов). Начиная с версии ipset 5, для каждого номера порта можно также сохранять идентификатор протокола транспортного уровня.
Тип набора hash:ip, порт использует хэш для хранения пар IP-адреса и номера порта. Номер порта интерпретируется вместе с протоколом (по умолчанию TCP), и нулевой номер протокола использовать нельзя.
СОЗДАНИЕ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ netmask cidr ] [ bitmask mask ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ ЗАПИСЬ := ip-адрес,[proto:]порт
ADD-ENTRY := ipaddr,[proto:]port
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr,порт [proto:]
DEL-ENTRY := ipaddr,[proto:]port
ТЕСТ-ЗАПИСЬ := ipaddr,порт[proto:]
TEST-ENTRY := ipaddr,[proto:]port
Часть элементов [proto:]port может быть выражена в следующих формах, где допустимы изменения диапазона при добавлении или удалении записей:
имя порта[-имя порта]
portname[-portname]
TCP-порт или диапазон портов, выраженный в идентификаторах имен TCP-портов из /etc/services
номер порта[-номер порта]
portnumber[-portnumber]
TCP-порт или диапазон портов, выраженный в номерах TCP-портов
tcp|sctp|udp|udplite:portname|portnumber[-portname|portnumber]
Порт TCP, SCTP, UDP или UDPLITE или диапазон портов, выраженный в названии порта (ов) или номере(ах) порта(ов)
icmp:codename|type/code
ICMP:Кодовое-имя | тип/код. Поддерживаемые идентификаторы кодового имени ICMP всегда можно получить с помощью команды help (помощь).
icmpv6:codename|type/code
ICMPv6:Кодовое-имя | тип/код. Поддерживаемые идентификаторы кодового имени ICMPv6 всегда можно получить с помощью команды help (помощь).
proto:0
Все остальные протоколы, в качестве идентификатора из /etc/protocols или номера. Псевдоаналоговый номер порта должен быть равен нулю.
Для наборов hash:ip,port требуются два параметра src/dst для set match и SET целевые модули ядра.
Необязательные параметры создания:
netmask cidr
Если указан необязательный параметр netmask, сетевые адреса будут сохранены в наборе вместо IP-адресов хостов. Значение префикса cidr должно быть в диапазоне от 1 до 32 для IPv4 и от 1 до 128 для IPv6. IP-адрес будет указан в наборе, если в наборе можно найти сетевой адрес, полученный в результате маскировки адреса с помощью маски сети.
битовая маска
Это работает аналогично маске сети, но будет принимать любой допустимый адрес IPv4/v6. Это не обязательно должна быть действительная маска сети
Примеры:
ipset создать хэш foo:ip,порт
ipset create foo hash:ip,port
ipset добавить foo 192.168.1.0/24,80-82
ipset add foo 192.168.1.0/24,80-82
ipset добавить foo 192.168.1.1,udp:53
ipset add foo 192.168.1.1,udp:53
ipset добавить foo 192.168.1.1,vrrp:0
ipset add foo 192.168.1.1,vrrp:0
ipset тест foo 192.168.1.1,80
ipset test foo 192.168.1.1,80
hash:net,port
Тип набора hash:net, порт использует хэш для хранения сетевых IP-адресов и пар портов разного размера. Номер порта интерпретируется вместе с протоколом (по умолчанию TCP), и нулевой номер протокола не может быть использован. Сетевой адрес с нулевым размером префикса также не принимается.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ ЗАПИСЬ := netaddr,[proto:]порт
ADD-ENTRY := netaddr,[proto:]port
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ несоответствие ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := netaddr,[proto:]порт
DEL-ENTRY := netaddr,[proto:]port
ТЕСТ-ЗАПИСЬ := netaddr,[proto:]порт
TEST-ENTRY := netaddr,[proto:]port
где сетевой адрес := ip[/cidr]
where netaddr := ip[/cidr]
Для элементов, относящихся к netaddr, смотрите описание в разделе hash:net сетевого набора. Для элементов, относящихся к [proto:]порту, смотрите описание в разделе hash:ip,port тип установленного порта.
При добавлении/удалении/тестировании (adding/deleting/testing) записей, если параметр kids prefix не указан, то используется значение префикса host. При редактировании/удалении записей добавляется/удаляется точный элемент, а перекрывающиеся элементы не проверяются ядром. При тестировании записей, если проверяется адрес хоста, ядро пытается найти соответствие с адресом хоста в сетях, добавленных в набор, и сообщает о результатах соответствующим образом.
С точки зрения соответствия сетевому фильтру, поиск соответствия всегда начинается с наименьшего размера сетевого блока (наиболее специфичный префикс) и заканчивается наибольшим размером сетевого блока (наименее специфичный префикс), добавленным в набор. При добавлении/удалении IP-адресов в набор с помощью целевого параметра SET netfilter они будут добавлены/удалены по наиболее определенному префиксу, который можно найти в наборе, или по значению префикса хоста, если набор пуст.
Время поиска растет линейно с увеличением количества различных значений префикса, добавляемых к набору.
Примеры:
ipset создать хэш foo:сеть,порт
ipset create foo hash:net,port
ipset добавить foo 192.168.0/24,25
ipset add foo 192.168.0/24,25
ipset добавить foo 10.1.0.0/16,80
ipset add foo 10.1.0.0/16,80
ipset тест foo 192.168.0/24,25
ipset test foo 192.168.0/24,25
hash:ip,port,ip (ipportiphash) — выборочный перечень IP-адресов, причем с каждым адресом может быть сохранен порт и еще один IP-адрес. В версии ipset 4 и более ранних ограничение на «первичные» адреса (первые в тройке адрес-порт-адрес) такое же, как и для ipporthash. Начиная с версии ipset 5, для каждого номера порта можно также сохранять идентификатор протокола транспортного уровня.
Тип набора hash:ip,port,ip-адрес использует хэш для хранения IP-адреса, номера порта и троек второго IP-адреса. Номер порта интерпретируется вместе с протоколом (по умолчанию TCP), и нулевой номер протокола не может быть использован.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ipaddr,[proto:]порт,ip
ADD-ENTRY := ipaddr,[proto:]port,ip
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr,[proto:]порт,ip
DEL-ENTRY := ipaddr,[proto:]port,ip
ТЕСТ-ЗАПИСЬ := ipaddr,[proto:]порт,ip
TEST-ENTRY := ipaddr,[proto:]port,ip
Для первой части элементов ipaddr и [proto:]порта смотрите описания в разделе hash:ip,port тип установленного порта.
Для наборов hash:ip,port,ip type требуются три параметра src/dst для set match и SET target модулей ядра.
Примеры:
ipset создать хэш foo:ip,порт,ip
ipset create foo hash:ip,port,ip
ipset добавить foo 192.168.1.1,80,10.0.0.1
ipset add foo 192.168.1.1,80,10.0.0.1
ipset тест foo 192.168.1.1,udp:53,10.0.0.1
ipset test foo 192.168.1.1,udp:53,10.0.0.1
hash:ip,port,net (ipportnethash) — выборочный перечень IP-адресов, причем с каждым адресом может быть сохранен порт и IP-подсеть. В версии ipset 4 и более ранних ограничение на «первичные» адреса такое же, как и у типа ipporthash. Начиная с версии ipset 5, для каждого номера порта можно также сохранять идентификатор протокола транспортного уровня.
Тип набора hash:ip,port,net использует хэш для хранения IP-адреса, номера порта и троек сетевых IP-адресов. Номер порта интерпретируется вместе с протоколом (по умолчанию TCP), и нулевой номер протокола не может быть использован. Сетевой адрес с нулевым размером префикса также не может быть сохранен.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ipaddr,[proto:]порт,netaddr
ADD-ENTRY := ipaddr,[proto:]port,netaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ несоответствие ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr,[proto:]порт,netaddr
DEL-ENTRY := ipaddr,[proto:]port,netaddr
ТЕСТ-ЗАПИСЬ := ipaddr,[proto:]порт,netaddr
TEST-ENTRY := ipaddr,[proto:]port,netaddr
где сетевой адрес := ip[/cidr]
where netaddr := ip[/cidr]
Для элементов, относящихся к ipaddr и [proto:]port, смотрите описания в разделе hash:ip,port установленного порта. Для элементов, относящихся к netaddr, смотрите описание в разделе hash:net установленного сетевого порта.
С точки зрения соответствия сетевому фильтру, поиск соответствия всегда начинается с наименьшего размера сетевого блока (наиболее специфичный cidr) и заканчивается наибольшим размером сетевого блока (наименее специфичный cidr), добавленным в набор. При добавлении/удалении троек в набор с помощью параметра SET netfilter target, они будут добавлены/удалены по наиболее определенному cidr, который можно найти в наборе, или по значению cidr хоста, если набор пуст.
Время поиска растет линейно с увеличением количества различных значений cidr, добавляемых к набору.
Для наборов hash:ip,port,net тип требуются три параметра src/dst для set match и SET target модулей ядра.
Примеры:
ipset создать хэш foo:ip,порт,сетевой
ipset create foo hash:ip,port,net
ipset добавить foo 192.168.1,80,10.0.0/24
ipset add foo 192.168.1,80,10.0.0/24
ipset добавить foo 192.168.2,25,10.1.0.0/16
ipset add foo 192.168.2,25,10.1.0.0/16
ipset тест foo 192.168.1,80.10.0.0/24
ipset test foo 192.168.1,80.10.0.0/24
hash:ip,mark
Тип набора hash:ip,mark использует хэш для хранения пар IP-адресов и меток пакетов.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение маски пометки ] [ значение хэш-размера ] [ значение максимального значения ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ markmask value ] [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ markmask value ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := ipaddr,отметить
ADD-ENTRY := ipaddr,mark
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := ipaddr,отметить
DEL-ENTRY := ipaddr,mark
ТЕСТ-ЗАПИСЬ := ipaddr,отметка
TEST-ENTRY := ipaddr,mark
Необязательные параметры создания:
значение маски метки
markmask value
Позволяет задать интересующие вас разряды для метки пакета. Эти значения затем используются для выполнения побитовой операции И для каждой добавленной метки. маской метки может быть любое значение от 1 до 4294967295, по умолчанию заданы все 32 бита.
Меткой mark может быть любое значение от 0 до 4294967295.
Для наборов типа hash:ip,mark требуются два параметра src/dst для модулей set match и SET target kernel.
Примеры:
ipset создать хэш foo:ip,отмечает
ipset create foo hash:ip,mark
ipset добавить foo 192.168.1.0/24,555
ipset add foo 192.168.1.0/24,555
ipset добавить foo 192.168.1.1,0x63
ipset add foo 192.168.1.1,0x63
ipset добавить foo 192.168.1.1,111236
ipset add foo 192.168.1.1,111236
hash:net,port,net
Тип набора hash:net,port,net работает аналогично типу hash:ip,port,net, но принимает значение cidr как для первого, так и для последнего параметра. Для любой подсети допускается значение /0, если вы хотите сопоставить порт между всеми пунктами назначения.
СОЗДАТЬ-ПАРАМЕТРЫ := [ семейство { inet | inet6 } ] | [ значение хэш-размера ] [ максимальное значение ] [ значение тайм-аута ] [ счетчики ] [ комментарий ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] | [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
CREATE-OPTIONS := [ family { inet | inet6 } ] [ hashsize value ] [ maxelem value ] [ bucketsize value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ДОБАВИТЬ-ЗАПИСЬ := netaddr,[proto:]порт,netaddr
ADD-ENTRY := netaddr,[proto:]port,netaddr
ДОБАВИТЬ-ПАРАМЕТРЫ := [ значение тайм-аута ] [ несоответствие ] [ значение пакетов ] [ значение в байтах ] [ строка комментария ] [ значение skbmark ] [ значение skbprio ] [ значение skbqueue ]
ADD-OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
УДАЛИТЬ-ЗАПИСЬ := netaddr,[proto:]порт,netaddr
DEL-ENTRY := netaddr,[proto:]port,netaddr
ТЕСТ-ЗАПИСЬ := netaddr,[proto:]порт,netaddr
TEST-ENTRY := netaddr,[proto:]port,netaddr
где сетевой адрес := ip[/cidr]
where netaddr := ip[/cidr]
Для элементов, относящихся к [proto:] port, смотрите описание в разделе hash:ip,port тип набора портов. Для элементов, относящихся к netaddr, смотрите описание в разделе hash:net набора сетей.
С точки зрения соответствия сетевому фильтру, поиск соответствия всегда начинается с наименьшего размера сетевого блока (наиболее специфичный cidr) и заканчивается наибольшим размером сетевого блока (наименее специфичный cidr), добавленным в набор. При добавлении/удалении троек в набор с помощью параметра SET netfilter target, они будут добавлены/удалены по наиболее определенному cidr, который можно найти в наборе, или по значению cidr хоста, если набор пуст. Первая подсеть имеет приоритет при выполнении наиболее специфичного поиска, так же как и для hash:net,net
Время поиска увеличивается линейно с увеличением количества различных значений cidr, добавляемых к набору, и количества вторичных значений cidr на одно первичное значение.
Для наборов hash:net,port,net тип требуются три параметра src/dst для установленных модулей match и SET целевые модули ядра.
Примеры:
ipset создать хэш foo:сеть,порт,чистый
ipset create foo hash:net,port,net
ipset добавить foo 192.168.1.0/24,0,10.0.0/24
ipset add foo 192.168.1.0/24,0,10.0.0/24
ipset добавить foo 192.168.2.0/24,25,10.1.0.0/16
ipset add foo 192.168.2.0/24,25,10.1.0.0/16
ipset тест foo 192.168.1.1,80,10.0.0.1
ipset test foo 192.168.1.1,80,10.0.0.1