Терміни, використані у цьому документі
Документ містить кілька термінів, які треба колись пояснити, тому що ви зіштовхнетеся із ними.
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 для реалізації прозорих сервісів проксі.
- Побудови складних маршрутизаторів з підтримкою якості обслуговування (QoS) і політик за допмогою програм tc та iproute2.
- Маніпулювання пакетами (mangling), наприклад, зміна бітів TOS/DSCP/ECN заголовків пакетів IP.