Iptables
Iptables — утиліта командного рядка, стандартний інтерфейс керування роботою міжмережевного екрану (брандмауеру) Netfilter для ядер Linux від версії 2.4. Всупереч поширеній думці, ані iptables, ані netfilter не виконують маршрутизацію пакетів і не керують нею. Netfilter лише фільтрує та модифікує (також для NAT) пакети за правилами, вказаними адміністратором через утиліту iptables. Для використання утиліти iptables потрібні привілеї суперкористувача (root).
Автор(и) | Русті Рассел |
---|---|
Розробник | Netfilter Core Team |
Перший випуск | 1998 |
Стабільний випуск | 1.4.14 (26 травня 2011 ) |
Репозиторій | http://git.netfilter.org/iptables/, https://git.netfilter.org/iptables/, git://git.netfilter.org/iptables |
Операційна система | Linux |
Мова програмування | C |
Ліцензія | GNU General Public License |
Вебсайт | www.netfilter.org |
iptables у Вікісховищі |
Іноді під словом iptables мається на увазі сам міжмережевий екран netfilter.
Терміни
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) — більшою або меншою мірою є твердженням, зворотним терміну «Простір користувача». Мається на думці місце виконання — всередині ядра.
Приклади
За допомогою iptables можна наприклад перенаправити трафік зі стандартного порту HTTP (80) на якийсь порт який не вимагає від сервера прав суперкористувача аби мати можливість на ньому слухати[1]:
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080