네트워크 네임스페이스 전반에 걸친 Linux 패킷 표시

네트워크 네임스페이스 전반에 걸친 Linux 패킷 표시

mangle나는 iptables를 사용하여 특정 호스트의 테이블에 있는 특정 소스/대상 IP에 대한 패킷 표시를 수행하려고 합니다. 그런 다음 이러한 패킷은 동일한 호스트의 특정 네트워크 네임스페이스로 전달되지만 해당 네트워크 네임스페이스에 설치한 iptables 규칙이 올바르게 실행되지 않습니다. 그래서 궁금합니다. 패킷 표시는 해당 표시가 있는 네트워크 네임스페이스에만 국한됩니까? 내 생각에는 태그가 skb와 관련된 "속성"이기 때문에 커널은 네임스페이스에 관계없이 호스트에서 태그가 라우팅되는 위치를 추적한다는 것입니다.

아니면 이것을 디버깅하는 방법에 대한 아이디어가 있는 사람이 있습니까? 대상 네트워크 네임스페이스 내에 규칙을 설치 했지만 출력을 보려면 TRACE실행해야 한다는 인상을 받았는데 dmesg, 이는 네트워크 네임스페이스에 적합하지 않습니다.

답변1

패킷 태그는 태그가 위치한 네트워크 네임스페이스에만 로컬입니까?

예. 이 태그는 네트워크 네임스페이스에 로컬입니다. 각 네임스페이스에는 독립적인 네트워크 스택이 있으므로 패킷이 한 네임스페이스에서 다른 네임스페이스로 이동할 때 마치 유선을 통해 이동하는 것과 같습니다. 흔적이 남지 않습니다.

네트워크 네임스페이스 내에 TRACE 규칙을 설치했습니다.

때에 따라 다르지...

사용하는 경우iptables-legacy대상 TRACE선택은 제한되어 있습니다.

  • 기본적으로 초기 네트워크 네임스페이스만 netfilter 이벤트를 기록할 수 있습니다.정보
  • 또는sysctl -w net.netfilter.nf_log_all_netns=1그 다음에모두네트워크 네임스페이스가 로그인됩니다.정보이는 다수의 네트워크 네임스페이스가 다수의 로그를 생성하는 경우 문제가 될 수 있습니다.

그 이유는정보네임스페이스별로가 아니라 전역적으로 로그를 보냅니다.정보처음에는 사용할 수 있는 유일한 방법입니다 TRACE.

이제 사용하면nftables'nftrace선언하거나 사용iptables-nft, 대상으로 메시지를 보내는 이전 방법은 TRACE(netfilter)로 대체됩니다.네트워크 링크 소켓 API이는 네임스페이스를 인식하며 리스너(예: 멀티캐스트)에게만 전송됩니다.

이는 다음을 의미합니다.NFFT변형은 다음과 같습니다.

# iptables-nft -V
iptables v1.8.7 (nf_tables)

하지만유산변형은 다음과 같습니다.

# iptables-legacy -V
iptables v1.8.7 (legacy)

사용되는 경우 추적 정보가 전송되지 않습니다.정보더 이상은 아니지만 xtables-monitor --trace캡처하는 데 사용할 수 있습니다. 다시 말하지만 변형 xtables-monitor에만 사용할 수 있습니다 .iptables-nftiptables

이 경우 ip netns add ...생성된 여러 네트워크 네임스페이스를 병렬로 디버깅하는 한 가지 방법은 다음과 같습니다.xtables-monitor, 네트워크 네임스페이스당 한 번씩 별도의 로그에 기록됩니다.ts출력의 각 줄에 타임스탬프를 표시하고 각 네임스페이스를 식별하면 나중에 필요한 경우 결과를 쉽게 분할할 수 있습니다.

넷츠는 이런거야부자 술집그리고버저 소리:

for ns in foo bar baz; do
    ip netns exec "$ns" xtables-monitor --trace | ts -s "%.s $ns" &
done

( pkill xtables-monitor나중에 필요할 수도 있습니다.)

네트워크 네임스페이스를 통해 생성되지 않은 네트워크 네임스페이스의 경우 이는 일반적으로 이를 생성한 애플리케이션에 대한 정보를 포함하는 약간의 추가 작업 으로 ip netns add대체될 수 있습니다 ( , ... ).ip netns execnsenterdocker inspectlxc-info

사용할 명령nftables그와는 반대로nft monitor trace동작은 네트워크 네임스페이스에서도 동일합니다. 실제로도 nft monitor trace표시됩니다.iptables-nftTRACE동일한 API이기 때문에 대상입니다 .

관련 정보