당신의 규칙을 알아라

당신의 규칙을 알아라

나는 다음과 같은 규칙을 만들었습니다.

-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff

포트 80에서 들어오는 트래픽을 캡처하고 표시를 위해 보냅니다. 작동하지만 이제 53(DNS), DHCP 서비스 포트 및 기타 몇 가지 포트를 제외한 모든 포트를 캡처하도록 편집하고 싶습니다. 내 iptables 아래에

-A PREROUTING -i vboxnet0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1

포트 80으로 향하는 태그가 지정된 모든 TCP 트래픽을 캡처하고 이를 로컬 IP로 DNAT합니다. 3(DNS), DHCP 서비스 포트 및 기타 몇 가지 포트를 제외한 모든 포트를 포함하도록 편집하고 싶습니다.

두 규칙 세트의 첫 번째 -m과 두 번째 -m 사이의 차이점에 대한 간단한 설명 대신 몇 가지 좋은 지침을 제시하면 올바른 방향으로 나아갈 수 있습니다.

답변1

당신의 규칙을 알아라

대부분의 경우와 마찬가지로 방화벽 규칙의 작동 방식을 이해하는 첫 번째 단계는 페이지 man( man iptables)를 검사하는 것입니다. man페이지 에서 다음을 찾을 수 있습니다:

-m, --match 일치

사용할 일치 항목, 즉 특정 속성을 테스트하는 확장 모듈을 지정합니다. 이 일치 세트는 대상을 호출하기 위한 조건을 구성합니다. 일치 항목은 명령줄에 지정된 대로 처음부터 끝까지 평가되며 단락 방식으로 작동합니다. 즉, 확장 프로그램에서 오류가 발생하면 평가가 중지됩니다.

페이지 하단에서 다음 항목 man도 확인할 수 있습니다.

매칭 및 타겟 확장

iptables는 확장된 패킷 일치 및 타겟팅 모듈을 사용할 수 있습니다. 이들 목록은 iptables-extensions(8) 맨페이지에 제공됩니다.

그러면 페이지는 귀하의 옵션이 실제로 수행하는 작업에 대한 iptables-extensions man구체적인 정보를 제공합니다. -m거기에 몇 가지 작은 조각이 있습니다:

표시

[!] --태그 값[/mask]

...

TCP 프로토콜

[!] --destination-port,--dport 포트[:port]

...

DNAT

이 대상은 nat 테이블, PREROUTING 및 OUTPUT 체인, 그리고 이러한 체인에서만 호출되는 사용자 정의 체인에서만 유효합니다. 이는 패킷의 대상 주소를 수정해야 하고(이 연결의 모든 향후 패킷도 손상됨) 규칙 검사를 중지해야 함을 지정합니다. 다음 옵션이 필요합니다.

--대상 [ipaddr[-ipaddr]][:port[-port]]

...

표시

이 대상은 패킷과 관련된 Netfilter 태그 값을 설정하는 데 사용됩니다. 예를 들어 fwmark 기반 라우팅(iproute2 필요)과 함께 사용할 수 있습니다. 이렇게 할 계획이라면 라우팅에 영향을 미치기 위해 맹글 테이블의 PREROUTING 체인에 이 플래그를 설정해야 한다는 점에 유의하세요. 태그 필드의 너비는 32비트입니다.

--set-xmark 값[/마스크]

간단히 말해서 -m옵션은 일치하는 옵션을 에 추가할 뿐입니다 iptables. 그러나 이 man페이지에는 일부 비표준 대상( DNAT사용 중인 대상 포함)도 나열됩니다.


무엇을 해야할지

nat이제 이 모든 것을 종합해보면 귀하가 사용하고 있는 테이블이 귀하의 목표 에 적합한 유일한 테이블 이라고 가정합니다 DNAT.

트래픽을 표시하는 것도 불필요해 보입니다. nat패킷을 처리 할 수 있도록 표시만 되어 있는데 , nat애초에 표시를 하지 않고 그냥 패킷을 처리하면 됩니다.

예를 들어:

-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1

여러 포트를 포함하는 여러 규칙을 지정하거나, 지정된 포트 범위를 사용하거나 [port]:[port], 지정된 부정 일치 항목을 사용할 수 있습니다 !.

53예를 들어 (도메인) 및 (ssh) 를 제외한 모든 포트에 규칙을 적용하려면 22다음을 수행합니다.

-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 53 -j DNAT --to-destination 192.168.56.1
-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 22 -j DNAT --to-destination 192.168.56.1

많은 포트를 필터링하려는 경우 이는 번거로울 수 있지만 그게 인생입니다 iptables. /etc/services특정 서비스/프로토콜에 영향을 주지 않도록 포트 매핑 목록을 확인하는 것이 좋습니다 .

관련 정보