iptables는 여러 -d 플래그를 허용하지 않습니다.

iptables는 여러 -d 플래그를 허용하지 않습니다.

iptables를 사용하여 파일에 대한 모든 아웃바운드 연결을 기록하려고 합니다.

내 규칙은 다음과 같습니다.

-A OUTPUT ! -o lo ! --destination 127.0.0.1  -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

그러나 다른 IP 대상(멀티캐스트)을 추가하면 내 규칙은 다음과 같습니다.

-A OUTPUT ! -o lo ! --destination 127.0.0.1 ! --destination 239.192.0.0 -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

다음 오류가 발생합니다.

multiple -d flags not allowed

내 질문은 이 오류가 무엇을 의미하는지가 아니지만 내 규칙에서 여러 IP 주소를 어떻게 제외합니까? 두 가지 조건

! --destination 127.0.0.1

그리고

! --destination 239.192.0.0

상호 배타적이므로 두 개의 규칙이 있는 것은 실제로 규칙이 전혀 없는 것과 같습니다(더 나쁜 것은 거의 두 배나 많은 로그를 얻게 되기 때문입니다).

그렇다면 "AND" 연산자가 있나요?

답변1

이러한 문제의 경우 새 체인을 정의하고 체인 사이를 이동할 수 있습니다. 예를 들어, 다음 작업을 사용하여 체인을 추가 LOGGING하고 기록하지 않으려는 체인의 시작 부분에 패킷을 일치시킬 수 있습니다 RETURN.

$ iptables -N LOGGING
$ iptables -A LOGGING -d 127.0.0.0/8 -j RETURN
$ iptables -A LOGGING -d 239.192.0.0/16 -j RETURN
$ iptables -A LOGGING -j LOG 
$ iptables -A OUTPUT -j LOGGING

이렇게 하면 OUTPUT체인을 통과하는 모든 패킷이 먼저 체인을 통과하고 , LOGGING맞지 않는 패킷 127.0.0.0/8은 모두 239.192.0.0/16기록된 다음 제어권이 로 반환됩니다 OUTPUT.

답변2

예, 하지만 원하는 대로 작동하지 않습니다. 매뉴얼 페이지에서:

여러 주소를 지정할 수 있지만 이렇게 하면 여러 규칙으로 확장되거나(-A를 추가하는 경우) 여러 규칙이 제거됩니다(-D와 함께 사용하는 경우).

이를 수행하는 방법은 체인 초기에 규칙을 추가하여 기록 또는 수정을 원하지 않는 트래픽을 전환하는 것입니다.

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT --destination 239.192.0.0 -j ACCEPT
-A OUTPUT  -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

답변3

쉼표로 구분된 값 및 -d또는 을 사용하여 -s여러 IP를 설정할 수 있습니다. (토론 참조http://www.gossamer-threads.com/lists/gentoo/user/210361)

예를 들어 다음 명령은

sudo iptables -A OUTPUT -d 192.168.235.43,192.168.235.46 -j DROP

두 서버 모두에 대한 트래픽을 필터링합니다.

관련 정보