На самом деле iptables
очень хорошо подходит для ограничения этого. Таблица фильтра , в которой разрешены или заблокированы пакеты, имеет три цепочки. В каждой цепочке могут быть определены правила для сопоставления пакетов и запуска действия, если пакет сопоставлен. В соответствии с какой цепочкой правил пакет соответствует, зависит от направления пакета относительно хоста, на котором работает iptables
:
INPUT
: входящий пакет, предназначенный для локального хоста OUTPUT
: исходящие пакеты, исходящие с локального хоста FORWARD
: пакеты, предназначенные для другого хоста и нуждающиеся в пересылке Теперь, например, если пакет должен быть переадресован и не имеет правила, которое соответствует ему в цепочка FORWARD
, она будет обрабатываться в соответствии с политикой , установленной для этой цепочки, которая по умолчанию: ACCEPT
. Пакет будет пропущен. Эта команда покажет политики и правила, если какие-либо из них определены:
iptables -t filter -vnL
Таблица указана с помощью Чтобы заблокировать все пакеты для пересылки, политика в этой цепочке может быть установлена на Теперь все пакеты которые должны быть перенаправлены, отклоняются, если никакое правило в цепочке Для внутреннего трафика вам, вероятно, понадобится политика Чтобы явно разрешить прохождение определенных пакетов, к этим цепочкам добавляются правила, которые сопоставляются с пакетами в том порядке, в котором эти правила были определены. Например, чтобы разрешить весь трафик, поступающий на И, например, разрешить только пакеты от Подробное описание всех параметров см. На странице руководства iptables и странице руководства iptables-extensions . -t
,
фильтр
является таблицей по умолчанию, если ни одна из них не указана. , поэтому следующая команда эквивалентна:
iptables -vnL
REJECT
или DROP
следующим образом iptables -P FORWARD REJECT
FORWARD
явно не принимает их. REJECT
. Это немедленно уведомит клиентов о том, что путь закрыт.Вам могут потребоваться правила DROP
для трафика, исходящего из внешней сети. eth0
, и на основе маршрутизации, который будет перенаправлен на eth1
: iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
10.0. 0.0 / 24
подсеть для передачи в обратном направлении: iptables -A FORWARD -i eth1 -o eth0 -s 10.0.0.0/24 -j ACCEPT