S3.Blog

21 Ноября 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Linux: iptables

Дата последнего изменения: 2 Сентября 2009
Метки статьи: Документация, Linux, RedHat, Shell/Bash
iptables -  утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux версий 2.4 и 2.6. Вопреки очень распространённому мнению, ни iptables, ни netfilter не производят маршрутизацию пакетов и никак ей не управляют. Netfilter только фильтрует и модифицирует (в том числе, для NAT) пакеты по правилам, заданным администратором через утилиту iptables. 
 

Описание взято из Википедии
Прежде всего: Для использования утилиты iptables требуются привилегии суперпользователя (root).


В Википедии подробно расписано что такое iptables и как им управлять, поэтому остановлюсь только на нескольких примерах.

Посмотреть существующие правила:
iptables-save

Удалить все правила:
iptables -t nat -F

Перенаправить траффик из вне на какой-либо локальный компьютер.
Например за роутером у нас находится локальная сеть 192.168.0.xx
На одном из компьютеров в этой локальной сети запущен web-сервер, например тут: 192.168.0.211
Что б попасть из вне на этот web-сервер прописываем следующие правила:
iptables -t nat -I PREROUTING --dst <реальный IP роутера> -p tcp --dport 21180 -j DNAT --to-destination 192.168.0.211:80

iptables -t nat -I POSTROUTING -p tcp --src 192.168.0.211 --sport 80 -j SNAT --to-source <реальный IP роутера>:21180
теперь при запросе в браузере адреса: http://<реальный IP роутера>:21180 вы попадете на страничку, сгенерированную web-сервером 192.168.0.211

В некоторых случаях, что б заработало перенаправление, надо дать команду:
sysctl -w net.ipv4.ip_forward=1


Запретить доступ для <IP-адрес>
iptables -t nat -I PREROUTING -s <IP-адрес> -j DROP
или так (запретить tcp-пакеты от <IP-адрес>):
iptables -A INPUT -p tcp -s <IP-адрес> -j DROP

Запретить доступ к <Порт> для udp-пакетов
iptables -t nat -A PREROUTING -p udp -m udp --dport <Порт> -j DROP
или так (запретить tcp-пакеты от <IP-адрес> на <Порт>):
iptables -I INPUT -p tcp -s <IP-адрес> --dport <Порт> -j DROP

Разрешить доступ для <IP-адрес>
iptables -t nat -I PREROUTING -s <IP-адрес> -j ACCEPT

Разрешить доступ для <IP-адрес> на <Порт>
iptables -t nat -I PREROUTING -s <IP-адрес> -p tcp -m tcp --dport <Порт> -j ACCEPT
Обратите внимание: ключи -I и -A после -t nat имеют одинаковое значение.
Единственная разница в том, что -I добавляет новое правило в начало списка правил, а -A в конец


Удаление правила.
Для удаления правила введите точно такую же команду как и при добавлении
только с ключом -D после -t nat
Например перед этим мы разрешили доступ для на <Порт>
iptables -t nat -I PREROUTING -s <IP-адрес> -p tcp -m tcp --dport <Порт> -j ACCEPT
что бы теперь удалить это правило введите:
iptables -t nat -D PREROUTING -s <IP-адрес> -p tcp -m tcp --dport <Порт> -j ACCEPT


Похожие материалы:




 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.