Iptables - мережевий екран (netfilter firewall)/Вступ
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Терміни, використані у цьому документі
Документ містить кілька термінів, які треба колись пояснити, тому що ви зіштовхнетеся із ними.
DNAT - від анг. Destination Network Address Translation -- Зміна Мережевої Адреси Отримувача. DNAT - це зміна адреси призначення у заголовці пакета. Найчастіше використовують у парі з SNAT. Основне застосування -- використання єдиної реальної IP-адреси кількома комп'ютерами для виходу до Інтернету та умов надання додаткових мережевих послуг зовнішнім клієнтам.
"Потік" (Stream) - під цим терміном мається на увазі з'єднання, крізь яке передаються і приймаються пакети. Я використав цей термін для позначення з'єднання, якими передається меншою мірою 2 пакета в обох напрямах. Що стосується TCP це означатиме з'єднання, крізь яке передається SYN пакет і далі приймається SYN/ACK пакет. Але це також може передбачати й передачу SYN пакета і прийом повідомлення ICMP Host unreachable. Інакше кажучи, використовую цей термін у досить широкому діапазоні застосувань.
SNAT - від анг. Source Network Address Translation -- Зміна Мережевого Адресу Відправника. SNAT - це й зміна вихідного адресу в заголовку пакета. Основне застосування -- використання єдиного реального IP-адресу кількома комп'ютерами для виходу до Інтернету. В теперішній час діапазон реальних IP-адрес, за стандартом IPv4, недостатньо широкий, та їх бракує усім (перехід на IPv6 дозволить позбутись цієї проблеми).
"Стан" (State) - під цим терміном мається на увазі стан, де знаходиться пакет, відповідно до RFC 793 - Transmission Control Protocol, і ті трактуванням, які є у netfilter/iptables. Хочу звернути вашу увагу на той факт, що визначення станів пакетів, як внутрішніх так зовнішніх станів, що використовуються Netfilter, в повному обсязі відповідають зазначеному вище в RFC 793.
"Простір користувача" (User space) - під цим терміном маю на увазі усе, що розміщено поза ядром, наприклад: команда iptables -h виконується поза ядром, тоді як команда iptables -A FORWARD -p tcp -j ACCEPT виконується (частково) у просторі ядра, оскільки вона додає нове правило до наявного набору.
"Простір ядра" (Kernel space) - більшою або меншою мірою є твердженням, зворотним терміну "Простір користувача". Підрозуміває місце виконання - в середені ядра.
"Userland" - див. "Простір користувача".
Вступ
netfilter/iptables - каркас для побудови потужних мережевих екранів в ОС Лінукс. Їх застосовують для:
- Побудова мережевих фільтрів основаних, як на приналежності пакетів до конкретних сеансів зв'язку, так і без врахування такої приналежності.
- Використання трансляції мережевих адрес (NAT) і (masquerading) для реалізації спільного доступу в Інтернет за відсутності достатнього числа реальних ІР адрес та для приховування внутрішньої структури мережі.
- Використання NAT для реалізації прозорих проксі сервісів.
- Дозволяє з допомогою програм tc, iproute2 будувати складний маршрутизатор з підтримкою якості сервісу (QoS) і політик.
- Проводити різні маніпуляції з пакетами (mangling), такі як зміна бітів TOS/DSCP/ECN заголовків IP пакетів.

