Давай разберём команду по частям:
iptables -t mangle -A PREROUTING -m set –match-set vpn_sites dst -j MARK –set-mark 42
1. iptables
Это утилита для управления таблицами и правилами фильтрации/маркировки пакетов в Linux.
2. -t mangle
-t указывает, с какой таблицей работать.
Таблица mangle используется для изменения пакетов, например: маркировка, изменение TOS/TTL, CONNMARK и т.д.
Другие таблицы:
filter — фильтрация (INPUT, OUTPUT, FORWARD)
nat — трансляция адресов (DNAT/SNAT)
raw — обход соединений для трекинга
security — для SELinux/маркировки безопасности
3. -A PREROUTING
-A = append, т.е. добавить правило в конец цепочки.
PREROUTING — цепочка, куда попадают пакеты сразу после поступления в интерфейс, до маршрутизации.
4. -m set –match-set vpn_sites dst
-m set — подключение модуля set (ipset).
–match-set vpn_sites dst — проверка, что адрес назначения (dst) пакета есть в ipset с именем vpn_sites.
Т.е. правило срабатывает только для пакетов к адресам из этого списка.
5. -j MARK –set-mark 42
-j = jump, т.е. действие, которое выполняется, если условие совпало.
MARK — цель (target), позволяет поставить метку пакету.
–set-mark 42 — ставит числовую метку 42.
Метки могут использоваться для policy routing (ip rule + ip route), iptables-коннекшен, QoS и др.
