В чем разница между цепями OUTPUT и FORWARD в iptables?

22

CentOS 6.0

Я изучаю iptables и меня смущает разница между цепочками FORWARD и OUTPUT. В моей учебной документации говорится:

Если вы добавляете (-A) или удаляете из (-D) цепочки, вам нужно применить ее к сетевым данным, перемещающимся в одном из трех направлений:

  • INPUT - Все входящие пакеты проверяются на соответствие правилам в этой цепочке.
  • ВЫХОД - Все исходящие пакеты проверяются на соответствие правилам в этой цепочке.
  • FORWARD - все пакеты, отправляемые на другой компьютер, проверяются на соответствие правилам в этой цепочке.

Это смущает меня, потому что, на мой взгляд, пакеты, отправляемые на хост, будут исходящими. Так есть ли сценарии, когда пакет будет отправляться на другой компьютер, но НЕ будет «исходящим»? Как iptables будет отличать их?

Майк Б
источник

Ответы:

26

ВЫХОД для пакетов, которые испускаются хостом. Обычно их назначением является другой хост, но он может быть тем же хостом через интерфейс обратной связи, поэтому не все пакеты, которые проходят через OUTPUT, фактически являются исходящими.

FORWARD предназначен для пакетов, которые не испускаются хостом и не направляются на хост. Это пакеты, которые хост просто маршрутизирует.

Когда вы начинаете копаться в пакетном искажении и NAT, вся история довольно сложна .

Жиль "ТАК - перестань быть злым"
источник
Интересно ... поэтому для моего понимания справедливо ли сказать, что OUTPUT предназначен для пакетов, которые "исходят" из системы ... и FORWARD предназначен для пакетов, которые не исходят из системы или предназначены для он и вместо этого собирается "через" систему?
Майк Б
1
Не совсем, пакеты, которые «пересылаются», также «выводятся» сетевым интерфейсом ... так же, как пакеты «вводятся» до того, как они «пересылаются». Пакет входит, предназначен для внешней системы, пакет входит в «прямую» цепочку , iptables решает, что все в порядке для пересылки, пакет входит в «цепочку вывода», iptables проверяет, видит, что это «нормально» для вывода, пакет уходит ... просто!
Grizly
2
@Grizly Нет, из памяти (я признаю, что я не проверял конкретно при написании этого ответа) и согласно диаграмме, на которую я ссылаюсь, пакет всегда проходит ровно через одну из трех filterцепочек ( INPUTили OUTPUTили FORWARD). (Предполагается , что некоторые другие цепи не уронить его до того ) . В mangleи natцепях разные, может быть , вы думали о mangleцепи?
Жиль "ТАК - перестань быть злым"
0

Насколько я понимаю:

INPUT: DST IP находится на хосте, даже если он имеет несколько портов с несколькими подсетями

ВЫХОД: src IP от хоста, любой порт

ВПЕРЕД: ни dst IP на хосте, ни src IP с хоста

введите описание изображения здесь

Например, к маршрутизатору А

INPUT - это:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

ВЫХОД - это:

192.168.10.199 -> хххх

192.168.2.1 -> хххх

FORWARD это:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

FLZ
источник