저는 iptables를 처음 접했고 지난 몇 년간 CLI가 어떻게 변했는지 혼란스러워요. 동일한 작업을 수행하지만 구문이 다른 많은 예제를 봅니다.
이것들은정확히 똑같다, 또는 그들 사이에는 약간의 미묘한 차이가 있습니다.
-p tcp -m state --state NEW
-p tcp -m conntrack --ctstate NEW
-p tcp -m tcp --syn
/-p tcp --syn
내가 사용할 것과 정확히 동일하다면 -p tcp --syn
구성이 단순화/단축됩니다.
답변1
에서 man iptables-extensions
:
상태
"state" 확장은 "conntrack" 모듈의 하위 집합입니다. "state"는 이 패킷의 연결 추적 상태에 대한 액세스를 허용합니다.
[!] --상태 상태
여기서 state는 일치시킬 연결 상태의 쉼표로 구분된 목록입니다. "conntrack"이 이해하지 못하는 상태의 하위 집합인 INVALID, ESTABLISHED, NEW, RELATED 또는 UNTRACKED만 인식됩니다. 이에 대한 설명은 이 맨페이지의 "conntrack" 제목을 참조하십시오.
[...]
연결하다
이 모듈을 연결 추적과 함께 사용하면 해당 패킷/연결의 연결 추적 상태에 액세스할 수 있습니다.
[!] --ctstate 상태 목록
statelist는 일치시킬 연결 상태의 쉼표로 구분된 목록입니다. 가능한 상태는 다음과 같습니다. [...]
[...]
전송 제어 프로토콜
이러한 확장은 "--protocol tcp"가 지정된 경우 사용할 수 있습니다. 다음과 같은 옵션을 제공합니다.
[!] --syn
SYN 비트가 설정되고 ACK, RST 및 FIN 비트가 지워진 TCP 패킷만 일치합니다. 이러한 패킷은 TCP 연결 시작을 요청하는 데 사용됩니다. 예를 들어 이러한 패킷이 인터페이스에 들어가지 못하도록 차단하면 들어오는 TCP 연결이 차단되지만 나가는 TCP 연결은 영향을 받지 않습니다.
따라서 처음 두 개는 동일하고 마지막 것은 다른 작업을 수행합니다(이를 사용하여막힌예를 들어 TCP 연결 시도).