나는 리눅스에 아래와 같이 각각 자체 체인이 있는 3개의 내장 테이블이 있다는 것을 알고 있습니다.
필터: 사전 배선, 전달, 사후 배선
네트워크 주소 변환: 배선 전, 입력, 출력, 배선 후
맨레: 사전 배선, 입력, 전달, 출력, 사후 배선
그러나 나는 그들이 어떻게 통과되는지, 어떤 순서로 있는지 이해하지 못합니다. 예를 들어 다음과 같은 경우 이를 반복하는 방법은 다음과 같습니다.
- 동일한 로컬 네트워크에 있는 컴퓨터로 패킷을 보냅니다.
- 다른 네트워크에 있는 컴퓨터로 패킷을 보낼 때
- 게이트웨이가 패킷을 수신하고 이를 전달해야 하는 경우
- 나에게 보낸 패키지를 받았을 때
- 기타 상황(해당하는 경우)
답변1
위키피디아에는 하나가 있습니다.훌륭한 차트처리 순서를 표시합니다.
자세한 내용은 iptables 설명서를 참조하세요.시계 체인이 챕터를 횡단함. 여기에는 또한흐름도.
순서는 netfilter가 사용되는 방식(브리지 또는 네트워크 필터 및 애플리케이션 계층과 상호 작용하는지 여부)에 따라 변경됩니다.
일반적으로 말하면(위에 링크된 장에 더 자세한 내용이 있지만) 체인은 다음과 같이 처리됩니다.
- INPUT 체인을 "외부에서 들어오는 트래픽"으로 생각하세요.도착하다이 호스트."
- FORWARD 체인을 "이 호스트를 라우터로 사용하는 트래픽"(소스와 대상은아니요이 호스트).
- OUTPUT 체인을 "트래픽"으로 생각하십시오.이것주인님이 보내드릴 거예요."
- PREROUTING / POSTROUTING은 각 테이블 유형마다 서로 다른 용도로 사용됩니다. 예를 들어 nat 테이블의 경우 PREROUTING은 인바운드(라우팅/전달) SNAT 트래픽에 사용되고 POSTROUTING은 아웃바운드(라우팅/전달) DNAT 트래픽에 사용됩니다. 자세한 내용은 다음을 참조하세요. 특정 세부 사항에 대한 문서.
다양한 테이블은 다음과 같습니다:
- Mangle은 순회하면서 패킷(서비스 유형, TTL(Time to Live) 등)을 변경하는 것입니다.
- Nat은 NAT 규칙을 넣는 것입니다.
- Raw는 마크업 및 연결 추적에 사용됩니다.
- 필터는 데이터 패킷을 필터링하는 데 사용됩니다.
따라서 5가지 시나리오의 경우:
- 보내는 호스트가 iptables가 있는 호스트인 경우 OUTPUT
- 같은 상기와
- FORWARD 체인(게이트웨이가 iptables가 있는 호스트인 경우)
- "나"가 iptables가 있는 호스트인 경우 INPUT
- 위의 체인 규칙(일반적인 경험 법칙)과 흐름도(이 역시 경우에 따라 다름)를 살펴보세요.무엇이를 달성하기 위해 IPTables를 사용하려고 합니다)
답변2
뭐, 익숙해졌어.Phil Hagen의 흐름도(이전 답변에서 언급한 @slm과 같이) 아래의 ASCII 순서도입니다.
network -> PREROUTING -> routing -> INPUT -------> process
raw decision mangle
(conntrack) | filter
mangle | security
nat(*) | nat
V
FORWARD ----\
mangle |
filter |
security |
V
process -> OUTPUT ------------------> POSTROUTING -> network
(routing decision??) mangle
raw nat(*)
(conntrack)
mangle
nat
(output interface assigned here?)
filter
security
(*) Certain localhost packets skip the PREROUTING and POSTROUTING nat
chains. See the post and diagram by Phil Hagen for details.
iptables
저는 Netfilter 전문가가 아니기 때문에 의견, 제안 및 수정을 환영합니다 .