Iptables

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
iptables
Автор(и) Русті Рассел
Розробник(и) Netfilter Core Team
Перший випуск 1998
Стабільний випуск 1.4.14 (26 травня 2011; 2023 дні тому)
Написано на C
Операційна система Linux
Ліцензія GNU General Public License
Веб-сайт www.netfilter.org

Iptables — утиліта командного рядка, стандартний інтерфейс керування роботою міжмережевного екрану (брандмауеру) Netfilter для ядер Linux від версії 2.4. Всупереч поширеній думці, ані iptables, ані netfilter не виконують маршрутизацію пакетів і не керують нею. Netfilter лише фільтрує та модифікує (також для NAT) пакети за правилами, вказаними адміністратором через утиліту iptables. Для використання утиліти iptables потрібні привілеї суперкористувача (root).

Іноді під словом iptables мається на увазі сам міжмережевий екран netfilter.

Терміни[ред.ред. код]

Рух мережевих пакетів крізь 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


Посилання[ред.ред. код]

  1. https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+on+Port+80+or+443+using+iptables