iptables-legacy는 NFQUEUE 대상을 로드할 수 없으며 --queue-num 및 --queue-bypass 옵션은 알 수 없는 옵션입니다.

iptables-legacy는 NFQUEUE 대상을 로드할 수 없으며 --queue-num 및 --queue-bypass 옵션은 알 수 없는 옵션입니다.

다음 iptables 명령을 실행하려고 합니다.https://github.com/farukuzun/notsodeep우분투 20.04.1.

iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK --sport 443 -j NFQUEUE --queue-num 200 --queue-bypass

그러나 실행 결과는 다음과 같습니다.

# iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK --sport 443 -j NFQUEUE --queue-num 200 --queue-bypass
iptables v1.8.4 (legacy): unknown option "--queue-num"
Try `iptables -h' or 'iptables --help' for more information.

다음 실행 결과는 NFQUEUE 대상이 내 컴퓨터에 전혀 존재하지 않는 것처럼 보입니다.

# iptables -A INPUT -j NFQUEUE
iptables v1.8.4 (legacy): Couldn't load target `NFQUEUE':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.

한 번도 본 적 없는 상황이라 당황스럽습니다. 예상한 대로 모든 명령이 제대로 작동할 것입니다.

이게 다 제가 사용하고 있는 Ubuntu 시스템이 WSL(https://docs.microsoft.com/windows/wsl/install-win10)?

답변1

다음 명령의 출력을 확인하십시오.

  • modinfo xt_NFQUEUE
  • lsmod | grep NFQUEUE
  • iptables -j NFQUEUE --help

모든 xtables 대상은 두 부분으로 구성됩니다.

  • iptables 도구용 사용자 공간 라이브러리 - 사용자의 명령줄 인수를 구문 분석하여 데이터 구조로 변환하고 그 반대로 변환하여 커널에서 규칙을 인쇄합니다.
  • 패킷을 처리하는 커널 모듈입니다.

처음 두 명령은 커널 모듈의 존재와 로딩을 확인합니다. 세 번째 규칙은 사용자 공간 라이브러리의 존재와 지원되는 옵션 목록을 확인합니다.

첫 번째 버전 WSL은 Linux 커널 자체를 사용하지 않고 Windows NT 커널에 대한 시스템 호출 변환을 사용하기 때문에 기본 Linux 도구에 대한 지원이 매우 제한적입니다.

iptables를 완벽하게 지원하려면 WSL2를 사용해야 합니다. Windows NT 커널을 통한 에뮬레이션이 아닌 실제 Linux 커널을 사용합니다.

답변2

WSL2에 xt_NFQUEUE 커널 모듈을 설치하려면 고유한 WSL Kenel을 사용자 정의해야 합니다. 다음 웹 사이트를 참조할 수 있습니다. https://gist.github.com/cerebrate/d40c89d3fa89594e1b1538b2ce9d2720

커널에 "NFQUEUE"를 포함하는 방법을 추가해야 합니다. 아래 그림을 참조하세요. https://i.stack.imgur.com/FhGfy.png

관련 정보