
이것페이지에서는 대상을 로 변환하는 테이블 PREROUTING
체인 에 규칙이 있는 경우 및 체인 의 규칙이 가 아닌 에서 일치해야 한다고 제안하는 것 같습니다 .nat
1.2.3.4:80
10.1.1.1:8080
INPUT
FORWARD
10.1.1.1:8080
1.2.3.4:80
설명된 것과 더 유사한 작업 순서를 구현하고 싶다면 어떻게 해야 할까요?여기? 즉, NAT 이전에는 패킷의 특성에 대한 필터링을 어떻게 수행하는가?
PREROUTING
한 가지 가능성은 테이블 의 체인을 사용하는 것 같습니다 raw
. 문제는 conntrack을 사용할 수 없다는 것입니다 raw/PREROUTING
(참고 1 참조). 예를 들어 초기가 아닌 UDP 조각은 초기 조각과 관련이 없으며 예기치 않은 일치 항목이 생성됩니다.
딜레마에 대해 명확하게 설명했는지, 해결 방법이 있는지 알려주시기 바랍니다.
참고 1: 틀렸다면 정정하십시오. 그러나 에서 conntrack을 사용하려고 시도했을 때 raw/PREROUTING
모든 초기 SYN 패킷은 " INVALID
"가 아닌 " NEW
"로 표시되었습니다. 또한 Netfilter 흐름도에서 "conntrack"이 뒤에 오는 것처럼 보입니다 raw/PREROUTING
.
답변1
어떤 규칙도 필요하지 않습니다 raw/PREROUTING
. conntrack
일치 항목을 사용하여 원래(변환 전) 대상/소스 주소/포트 번호별로 패킷을 필터링 할 수 있습니다 . conntrack
이전 경기의 후속작 입니다 state
. conntrack entry
(및 NAT) 와 관련된 다양한 추가 메타데이터를 확인할 수 있습니다 .
몇 가지 예:
# allow any port-forwarded packets
iptables -t filter -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
# check the original destination address of DNATed packets
iptables -t filter -A FORWARD -p tcp --dport 8080 -m conntrack --ctstate DNAT --ctorigdstport 80 --ctorigdst X.X.X.X --ctdir ORIGINAL -j ACCEPT
자세한 내용은 iptables -m conntrack --help
및 의 출력을 확인하세요 man iptables-extensions
.
답변2
그만큼Netfilter 및 일반 네트워킹의 패킷 흐름패킷을 보는 서로 다른 후크 간의 관계를 설명합니다. 다음은 그 중 작은 부분입니다.
그러니 소통하고 싶다면상태적으로패킷 포함~ 전에nat, 논리적 선택은 mangle/PREROUTING
다음과 같습니다.콘트랙후크가 이미 패킷을 추적했습니다. INVALID 상태는 아니지만낫아직도 일어나지 않았습니다.
iptables'를 기억하세요.낫첫 번째 패킷만 보고 나머지는 모두 직접 처리합니다.콘트랙, 여전히 같은 장소에서 발생합니다: mangle/PREROUTING
라우팅 결정 사이.
다른 방법은 Anton Danilov의 문헌에 설명되어 있습니다.답변: 쿼리하여콘트랙조회 테이블에서 이전 주소를 확인합니다.