iptables: 필터와 맹글의 차이점은 무엇입니까

iptables: 필터와 맹글의 차이점은 무엇입니까

나는 패킷에 태그를 지정하기 위해 iptables를 사용하고 있으며 태그를 기반으로 라우팅하고 싶습니다.

먼저 IP 규칙을 추가했습니다.

sudo ip rule add fwmark 1 prohibit

("Disabled"는 단지 테스트용이므로 나중에 일부 라우팅 테이블로 변경하겠습니다.)

그런 다음 패키지 표시를 시작합니다.

sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

그러나 컴퓨터는 여전히 192.168.1.0/24 네트워크에 액세스할 수 있습니다.

오랜 시간의 인터넷 검색과 어려움 끝에 다음을 시도했습니다.

sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

작동하지만 연결이 차단되었습니다.

첫 번째 경우에는 필터의 기본 테이블이 사용됩니다. 그래서 제 질문은 맹글 테이블과 필터 테이블의 차이점이 무엇입니까? 어떤 상황에서 어떤 것을 사용해야 합니까? 내가 이해한 바에 따르면 이러한 모든 테이블은 라우팅 정책 전에 참조되는데 필터 테이블이 제대로 작동하지 않는 이유는 무엇입니까?

답변1

mangle패킷을 파괴(수정)하고 filter필터링하는 데만 사용됩니다.

결과적으로 LOCAL_OUT테이블을 반복하고 필터링 결정을 얻은 후 mangle패킷을 삭제하거나 제어하는 ​​대신 필터링 결정이 단순히 호출에 의해 반환된다고 가정하여 라우팅 결정을 다시 실행하려고 시도할 수 ip_route_me_harder있습니다 filter.

자세한 내용은 net/ipv4/netfilter/iptable_mangle.c및 를 참조하세요 net/ipv4/netfilter/iptable_filter.c.

답변2

어쩌면 MARK 대상은 Mangle Table에만 사용할 수 있고 다른 대상에는 사용할 수 없습니다. 확인하다이것.

관련 정보