Я пытаюсь понять, как эта система работает, и у меня есть проблемы для понимания различия между использованием ПРЕДВАРИТЕЛЬНОЙ МАРШРУТИЗАЦИИ NAT или фильтра ВПЕРЕД. Из того, что я понимаю, PREROUTE может отправить пакет на другой сервер, избежав фильтра. Если NAT может обработать это через PREROUTE, какова цель наличия ВПЕРЕД правило в фильтре?
Таблица NAT:
Эта таблица должна только использоваться для NAT (Преобразование сетевых адресов) на различных пакетах. Другими словами, это должно только использоваться для перевода исходного поля пакета или целевого поля.
Таблица Фильтра:
таблица фильтра главным образом используется для фильтрации пакетов. Мы можем соответствовать пакетам и отфильтровать их любым способом, которым мы хотим. Это - место, что мы на самом деле принимаем меры против пакетов и смотрим на то, что они содержат и ОТБРАСЫВАЮТ, или / ПРИНИМАЮТ их, в зависимости от своего содержания. Конечно, мы можем также сделать предшествующую фильтрацию; однако, эта конкретная таблица является местом, для которого была разработана фильтрация.
В Пересечение таблиц и цепочек мы видим, что фильтр ВПЕРЕД цепочка пересечена только переданными пакетами (пакеты, которые прибывают из сети И выходят для сетей), т.е. компьютер действует как маршрутизатор, в то время как цепочка nat PREROUTING пересечена и переданными пакетами и пакетами, место назначения которых является локальным хостом.
необходимо использовать PREROUTING nat только для изменения адреса назначения пакетов и фильтр ВПЕРЕД только для фильтрации (отбрасывающий/принимающий пакеты).
, Если мы получаем пакет в первое решение по маршрутизации, которое не предназначено для самой локальной машины, она будет направлена через ВПЕРЕД цепочка. Если пакет, с другой стороны, предназначен для IP-адреса, который слушает локальная машина, мы отправили бы пакет через ВХОДНУЮ цепочку и к локальной машине. Пакеты могут быть предназначены для локальной машины, но адрес назначения может быть изменен в цепочке PREROUTING путем выполнения NAT. Так как это происходит перед первым решением по маршрутизации пакет будет рассматриваться после этого изменения. Из-за этого может быть изменена маршрутизация, прежде чем решение по маршрутизации сделано. Действительно обратите внимание на то, что все пакеты будут проходить один или другой путь в этом изображении. Если Вы DNAT пакет назад к той же сети, из которой это прибыло, это все еще переместится через остальную часть цепочек, пока это не вернется в сети.
PREROUTING: Эта цепочка используется для принятия связанных решений любой маршрутизации прежде (ПРЕД) отправка любых пакетов. Всегда помните это в PREROUTING/POSTROUTING
т.е. NAT
представьте в виде таблицы ACCEPT/DROP/REJECT
и т.д. цели значения по умолчанию FILTER
таблица не будет работать. NAT
таблица только используется для взятия решений по маршрутизации. Необходимо использовать PREROUTING
при взятии любых решений по маршрутизации т.е. решений, которые необходимы, чтобы быть взятыми, прежде чем пакет начнет пересекать через сеть. Вот пример, мы перенаправляем любой трафик, который просто достиг сервера на порте 80 к порту 8080:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
ПЕРЕДАЙТЕ: Как следует из названия, FORWARD
цепочка FILTER
таблица используется для передачи пакетов от источника до места назначения, здесь источник и место назначения являются двумя различными хостами. Так, как можно предположить FORWARD
правила в основном используются на серверах, куда один хост отправляет/получает трафик от другого хоста через сервер. Когда пакет сгенерирован с сервера, цепочка OUTPUT
т.е. трафик идет из себя тогда как INPUT
цепочка означает, пакеты предназначены для самого сервера только. Вот пример FORWARD
цепочка, где любой TCP
трафик, полученный на порте 80 в интерфейсе eth0
предназначенный для хоста 192.168.0.4
будет принят и передан 192.168.0.4
:
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT