사전 라우팅된 체인의 nat 테이블에 다음 규칙이 있는 경우:
0 0 REDIRECT tcp -- eth5 any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN redir ports 20000
내 의도는 DNAT를 수신 인터페이스(따라서 리디렉션 대상)로 보내는 것이며 SYN 플래그가 설정되어 있고 다른 모든 플래그가 설정되지 않은 패킷만 리디렉션하고 싶습니다. 이 규칙이 맞는지 알고 싶습니다. SYN 및 URG 플래그만 설정된 패킷이 있으면 어떻게 되나요? 아니면 그냥 SYN 및 PUSH 플래그를 설정하시겠습니까? 내가 아는 한, 이는 위의 규칙을 준수하지 않습니다. 이 경우 패킷은 리디렉션되지 않습니다.
내가 이해한 바에 따르면 --tcp-flags
규칙을 다음과 같이 변경해야 합니다.
--tcp-flags ALL SYN
이 경우 PUSH 및 URG 플래그가 설정되어 있어도 리디렉션(편집: 아님!!)이 되는데, 이것이 바로 내가 원하는 것입니다. 그렇기 때문에 나는 그것이 옳다고 생각한다.
내 추론이 맞나요?
편집: 이것에 대해 생각하면서 점점 더 혼란스러워지고 있습니다. 방금 작성한 내용을 생각해 보면 PUSH 또는 URG 플래그를 포함하는지 여부는 중요하지 않습니다. 두 경우 모두 리디렉션되지 않는 것 같기 때문입니다. 그래서 논리적으로 그런 것 같다.
FIN,SYN,RST,ACK/SYN is equal to --tcp-flags ALL SYN