Что такое iptables
?
iptables
— это утилита для настройки правил фильтрации и маршрутизации пакетов в Linux. Она позволяет управлять тем, какой трафик проходит через систему, и какие действия выполнять с пакетами.
Основные понятия
-
Таблицы (Tables):
-
filter
: Основная таблица для фильтрации пакетов. Правила в этой таблице решают, разрешать или блокировать пакеты. -
nat
: Таблица для Network Address Translation. Используется для изменения IP-адресов пакетов (например, перенаправление портов). -
mangle
: Таблица для изменения пакетов (например, изменение полей заголовков). -
raw
: Таблица для управления обработкой пакетов до того, как они будут обработаны другими таблицами. -
-
-
Цепочки (Chains):
INPUT
: Пакеты, приходящие в систему.FORWARD
: Пакеты, которые пересылаются через систему (между интерфейсами).OUTPUT
: Пакеты, исходящие из системы.PREROUTING
: Пакеты, которые поступают в систему до маршрутизации.POSTROUTING
: Пакеты, которые проходят маршрутизацию перед выходом из системы.
-
Правила (Rules): Каждое правило в
iptables
определяет:- Условие (например, входящий интерфейс, исходящий интерфейс, источник или назначение IP-адреса).
- Действие (например, ACCEPT, DROP, REJECT, DNAT).
### Как это работает?
Когда пакет поступает в систему, он проверяется по следующим этапам:
1. **PREROUTING**: Пакет обрабатывается таблицей `nat` для перенаправления и маскарадинга.
2. **INPUT**: Если пакет предназначен для локальной системы, он обрабатывается таблицей `filter` в цепочке `INPUT`.
3. **FORWARD**: Если пакет нужно передать на другой интерфейс, он проверяется в цепочке `FORWARD`.
4. **OUTPUT**: Если пакет создается локально, он проверяется в цепочке `OUTPUT`.
5. **POSTROUTING**: Пакет обрабатывается таблицей `nat` для изменения адресов перед отправкой.
6.
### Примеры команд
**Разрешение всего трафика**:
-
sudo iptables -A INPUT -j ACCEPT sudo iptables -A FORWARD -j ACCEPT sudo iptables -A OUTPUT -j ACCEPT
Блокировка трафика с определенного IP:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
Управление и сохранение
Просмотр правил:
sudo iptables -L -v -nУдаление:
Примечания:
Посмотреть все порты активные:
ss -ntlp