Iptables

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
iptables
АвторРусті Рассел
РозробникNetfilter Core Team
Перший випуск1998
Стабільний випуск1.4.14 (26 травня 2011; 13 років тому (2011-05-26))
ПлатформаЯдро Linux і Linux-libred
Операційна системаLinux
Мова програмуванняC
ЛіцензіяGNU General Public License
Репозиторійhttp://git.netfilter.org/iptables/, https://git.netfilter.org/iptables/, git://git.netfilter.org/iptables
Вебсайт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. Архівована копія. Архів оригіналу за 1 лютого 2017. Процитовано 5 грудня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)