Jaka jest różnica między łańcuchami OUTPUT i FORWARD w iptables?

22

CentOS 6.0

Studiuję iptables i mylę się co do różnicy między łańcuchami FORWARD i OUTPUT. W mojej dokumentacji szkoleniowej stwierdza:

Jeśli dołączasz do (-A) lub usuwasz z (-D) łańcucha, możesz zastosować go do danych sieciowych podróżujących w jednym z trzech kierunków:

  • WEJŚCIE - Wszystkie przychodzące pakiety są sprawdzane zgodnie z regułami w tym łańcuchu.
  • WYJŚCIE - Wszystkie wychodzące pakiety są sprawdzane pod kątem reguł w tym łańcuchu.
  • DO PRZODU - Wszystkie pakiety wysyłane na inny komputer są sprawdzane pod kątem reguł w tym łańcuchu.

To mnie dezorientuje, ponieważ moim zdaniem pakiety wychodzące do hosta MUSZĄ być wysyłane. Czy istnieją więc scenariusze, w których pakiet byłby przesyłany do innego komputera, ale NIE byłby „wychodzący”? Jak iptables rozróżnia te dwa elementy?

Mike B.
źródło

Odpowiedzi:

26

WYJŚCIE jest przeznaczone dla pakietów emitowanych przez host. Ich miejscem docelowym jest zwykle inny host, ale może być tym samym hostem poprzez interfejs pętli zwrotnej, więc nie wszystkie pakiety przechodzące przez OUTPUT są w rzeczywistości wychodzące.

FORWARD dotyczy pakietów, które nie są emitowane przez hosta ani kierowane do hosta. Są to pakiety, które host jedynie routuje.

Kiedy zaczynasz kopać w manglingu pakietów i NAT, cała historia jest raczej bardziej złożona .

Gilles „SO- przestań być zły”
źródło
Interesujące ... więc dla mojego zrozumienia można uczciwie powiedzieć, że OUTPUT dotyczy pakietów, które „pochodzą” z systemu ... a FORWARD dotyczy pakietów, które nie pochodzą z systemu lub są przeznaczone do i zamiast tego przechodzą przez system?
Mike B
1
Nie do końca, pakiety, które są „przekazywane” są również „wysyłane” przez interfejs sieciowy. Tak jak pakiety są „wejściowe”, zanim zostaną „przekazane” .. Pakiet wchodzi, przeznaczony dla obcego systemu, pakiet przechodzi do łańcucha „przekazywanego” , iptables decyduje się na przekazanie dalej, pakiet wchodzi w „łańcuch wyjściowy”, iptables sprawdza, zobacz, czy jest w porządku na wyjście, pakiet opuszcza .. simples!
Grizly,
2
@Grizly Nie, z pamięcią (muszę przyznać, że nie zostało przetestowane specjalnie pisząc tę odpowiedź) i zgodnie ze schematem mogę połączyć, paczka zawsze przechodzi dokładnie jedna z trzech filterłańcuchów ( INPUTlub OUTPUTlub FORWARD). (Zakładając, że jakiś inny łańcuch nie upuszcza go wcześniej.) Łańcuchy manglei natsą różne, może myślałeś o manglełańcuchu?
Gilles 'SO - przestań być zły'
0

W moim rozumieniu:

WEJŚCIE: dst IP znajduje się na hoście, nawet ma wiele portów z wieloma podsieciami

WYJŚCIE: src IP pochodzi z hosta, z dowolnego portu

DO PRZODU: Ani dst IP na hoście, ani src IP z hosta

wprowadź opis zdjęcia tutaj

Na przykład do routera A.

WEJŚCIE to:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

WYJŚCIE to:

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

DO PRZODU jest:

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
źródło