Linux: iptables
iptables - утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux версий 2.4 и 2.6. Вопреки очень распространённому мнению, ни iptables, ни netfilter не производят маршрутизацию пакетов и никак ей не управляют. Netfilter только фильтрует и модифицирует (в том числе, для NAT) пакеты по правилам, заданным администратором через утилиту iptables.
Описание взято из Википедии
В Википедии подробно расписано что такое iptables и как им управлять, поэтому остановлюсь только на нескольких примерах.
Посмотреть существующие правила:
Удалить все правила:
Перенаправить траффик из вне на какой-либо локальный компьютер.
Например за роутером у нас находится локальная сеть 192.168.0.xx
На одном из компьютеров в этой локальной сети запущен web-сервер, например тут: 192.168.0.211
Что б попасть из вне на этот web-сервер прописываем следующие правила:
Запретить доступ для <IP-адрес>
Запретить доступ к <Порт> для udp-пакетов
Разрешить доступ для <IP-адрес>
Разрешить доступ для <IP-адрес> на <Порт>
Удаление правила.
Для удаления правила введите точно такую же команду как и при добавлении
только с ключом -D после -t nat
Например перед этим мы разрешили доступ для на <Порт>
Описание взято из Википедии
Прежде всего: Для использования утилиты 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
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 в конец
Единственная разница в том, что -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