-m 및 -p 매개 변수를 사용하는 iptables


8

내 iptables 에이 규칙이 있습니다.

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

정말로 "-m tcp"가 필요합니까? 이미 "-p tcp"를 사용하고 있으므로 "-m tcp"를 사용하여 더 안전해야합니까?

답변:


9

-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과 어떤 것이 일치하는지 말해 주어야합니까? 예를 들어, 정상적인 TCP 연결, -m은 어떤 문자열에 대해 일치합니다 당신은 문자열의 예를 기쁘게 제공 할 수 있을까요?
사물

1
아니에요. 보시다시피 -m옵션은 실제로 extension modules추가 옵션을 제공 하는로드에 사용됩니다 . 예를 들어 업데이트 된 답변과 링크를 참조하십시오.
Diamond

감사! :) 마지막 생각 : 내 경우에는 "-m"을 올바르게 유지해야한다고 생각합니까? iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP "--dport"를 사용하는데 -m을 올바르게 사용하면 --ddport 만 사용할 수 있다고 생각합니까?
Samul

@Samul, 그렇지 않습니다. -m tcp옵션 없이 사용할 수 있습니다 . --dporttcp 모듈의 일부이며 작동 -p tcp합니다. 내 답변을 다시 참조하십시오.
Diamond

당신은 매우 친절합니다, 감사합니다! 그러나 참조 : 나는 -m이 무엇인지 이해하지 못한다. 어떤 문자열? -m tcp는 무엇과 일치합니까? "tcp"라는 단어를 찾으려고합니까?
Samul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.