
CentOS 6.0
Я изучаю iptables и путаюсь в разнице между цепочками FORWARD и OUTPUT. В моей учебной документации говорится:
Если вы добавляете что-либо к (-A) или удаляете что-либо из (-D) цепочки, вам следует применить это к сетевым данным, передаваемым в одном из трех направлений:
- ВХОД - Все входящие пакеты проверяются на соответствие правилам в этой цепочке.
- ВЫХОД - Все исходящие пакеты проверяются на соответствие правилам в этой цепочке.
- ПЕРЕСЫЛКА - Все пакеты, отправляемые на другой компьютер, проверяются на соответствие правилам в этой цепочке.
Это меня сбивает с толку, потому что, по моему мнению, пакеты, отправляемые на хост, БЫЛИ бы исходящими. Так есть ли сценарии, когда пакет отправляется на другой компьютер, но НЕ является "исходящим"? Как iptables различает эти два варианта?
решение1
OUTPUT — для пакетов, которые выдаются хостом. Их пунктом назначения обычно является другой хост, но может быть тот же хост через интерфейс loopback, поэтому не все пакеты, проходящие через OUTPUT, на самом деле являются исходящими.
FORWARD — для пакетов, которые не испускаются хостом и не направляются хосту. Это пакеты, которые хост просто маршрутизирует.
Когда вы начинаете углубляться в искажение пакетов и NAT, вся история такова:довольно сложный.
решение2
Насколько я понимаю:
ВХОД: dst IP находится на хосте, даже если у него несколько портов с несколькими подсетями
ВЫХОД: src IP от хоста, либо порт
ПЕРЕНАПРАВЛЕНИЕ: Ни dst IP на хосте, ни src IP с хоста
Например, к маршрутизатору A
ВХОД:
192.168.10.1 -> 192.168.10.199
192.168.10.1 -> 192.168.2.1
ВЫХОД:
192.168.10.199 -> хххх
192.168.2.1 -> хххх
ВПЕРЕД — это:
192.168.10.1 -> 192.168.2.199
192.168.10.1 -> 192.168.8.1
192.168.10.1 -> 192.168.8.199