답변:
이 -p tcp
옵션을 사용하면 tcp 모듈이 이미로드되어 있기 때문에 다소 중복되어 -m tcp
옵션 을 사용해야 할 필요가 없으며이 옵션을 사용하여 규칙을 더 안전하게 만드는 이유는 없습니다.
더 나은 이해와 비교를 위해 iptables 매뉴얼 페이지 를 참조하십시오 :
-p, --protocol [!] 프로토콜
확인할 규칙 또는 패킷의 프로토콜입니다. 지정된 프로토콜은 tcp, udp, icmp 또는 all 중 하나이거나 이러한 프로토콜 중 하나 또는 다른 프로토콜을 나타내는 숫자 값일 수 있습니다. / etc / protocols의 프로토콜 이름도 허용됩니다. ㅏ "!" 프로토콜이 테스트를 반전시키기 전에 인수. 숫자 0은 모두와 같습니다. 프로토콜 모두는 모든 프로토콜과 일치하며이 옵션을 생략하면 기본값으로 사용됩니다.
...
경기 확장
iptables는 확장 패킷 일치 모듈을 사용할 수 있습니다. 이는 두 가지 방식으로로드됩니다. -p 또는 --protocol이 지정된 경우 또는 -m 또는 --match 옵션과 함께 일치하는 모듈 이름; 그런 다음 특정 모듈에 따라 다양한 추가 명령 줄 옵션을 사용할 수 있습니다. 한 줄에 여러 개의 확장 된 일치 모듈을 지정할 수 있으며 모듈이 지정된 후 -h 또는 --help 옵션을 사용하여 해당 모듈에 대한 도움말을받을 수 있습니다.
사용 가능한 옵션 목록은 다음을 -p tcp
참조하십시오.
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
위에서 언급했듯이 -m
옵션을 사용 하면 확장 모듈을 추가 할 수 있으며 더 많은 일치하는 옵션을 사용할 수 있습니다. 예를 들어 CPU 모듈 :
CPU
[!] --cpu 번호
이 패킷을 처리하는 CPU를 일치시킵니다. cpus는 0부터 NR_CPUS-1까지 번호가 매겨집니다. RPS (Remote Packet Steering) 또는 다중 대기열 NIC와 함께 사용하여 다른 대기열에 네트워크 트래픽을 분산시킬 수 있습니다.
예:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Linux 2.6.36부터 사용 가능합니다.
iptables-extensions 의 전체 목록 .
OP의 추가 질문 : -m이 무엇인지 이해하지 못합니다. 어떤 문자열? -m tcp는 무엇과 일치합니까? "tcp"라는 단어를 찾으려고합니까?
답 : 문자열이 아닌 모듈 이름 과 -m
일치 합니다. 특정 모듈을 사용하면 특정 옵션이 일치하게됩니다. 위의 CPU 모듈 예를 참조하십시오. 모듈 과 함께 tcp가로드됩니다. tcp 모듈은 iptables 규칙에 사용할 특정 옵션을 허용 합니다. 그러나 이미 tcp 모듈을 사용 하면을 사용하지 않아도 해당 옵션을 계속 사용할 수 있습니다 . 그것이 모든 혼란을 없애기를 바랍니다.-m tcp
--dport, --sport, --tcp-flags, --syn, --tcp-option
-p tcp
-m tcp
-m
옵션은 실제로 extension modules
추가 옵션을 제공 하는로드에 사용됩니다 . 예를 들어 업데이트 된 답변과 링크를 참조하십시오.
-m tcp
옵션 없이 사용할 수 있습니다 . --dport
tcp 모듈의 일부이며 작동 -p tcp
합니다. 내 답변을 다시 참조하십시오.