"출력" 체인으로 점프할 때 nftables 오류

"출력" 체인으로 점프할 때 nftables 오류

스크립트 migrate에서 .으로 이동 하려고 합니다 . 이 스크립트에서는 로컬 프록시(특정 서브넷 제외)로 나가는 일부 TCP/UDP 트래픽을 원합니다 . 스크립트가 작동합니다 (IP 변경됨).iptablesnftablesredirectiptablesas expected

iptables -t nat -N PROXY

iptables -t nat -A PROXY -d 1.1.1.1/32 -j RETURN
iptables -t nat -A PROXY -d 1.0.0.1/32 -j RETURN

iptables -t nat -A PROXY -p tcp -d 1.0.0.0/8 -j REDIRECT --to-ports 3127
iptables -t nat -A PROXY -p udp -d 1.0.0.0/8 -j REDIRECT --to-ports 3127

iptables -t nat -A OUTPUT -p tcp -d 1.0.0.0/8 -j PROXY

그러나 개조된 nftables스크립트는 다음을 제공합니다 error.

Error: Could not process rule: Operation not supported
add rule nat OUTPUT ip daddr { 1.0.0.0/8 } ip protocol { tcp, udp } jump PROXY
                                                                         ^^^^^

nftables내가 적용한 스크립트는 다음과 같습니다 .

nft add table nat

nft add chain nat PROXY { type nat hook prerouting priority -1\; }
nft add chain nat OUTPUT { type nat hook output priority -1\; }

nft add rule nat PROXY ip daddr { 1.1.1.1/32, 1.0.0.1/32 } return
nft add rule nat PROXY ip daddr { 1.0.0.0/8 } ip protocol { tcp, udp } redirect to :3127

nft add rule nat OUTPUT ip daddr { 1.0.0.0/8 } ip protocol { tcp, udp } jump PROXY

몇 가지 참고사항:

  • 각 스크립트를 실행하기 전에 모든 테이블/체인/규칙 세트가 플러시/제거됩니다.
  • 실행하면 lsmod | grep ^nf모든 커널 모듈이 로드되었음을 알 수 있습니다(내가 알 수 있는 한).
  • 모든 것은 루트에 의해 실행됩니다

감사해요.

편집하다:

nft list ruleset다음 결과를 제공합니다.

table ip nat {
        chain PROXY {
                type nat hook prerouting priority filter - 1; policy accept;
                ip daddr { 1.0.0.1, 1.1.1.1 } return
                ip daddr 1.0.0.0/8 ip protocol { tcp, udp } redirect to :3127
        }

        chain OUTPUT {
                type nat hook output priority filter - 1; policy accept;
        }
}

오류로 인해 마지막 규칙이 첨부되지 않았습니다.

uname -a: Linux Honeypot 6.1.7-1-MANJARO #1 SMP PREEMPT_DYNAMIC Wed Jan 18 22:33:03 UTC 2023 x86_64 GNU/Linux

답변1

NFTables 구성을 보면 nft add chain nat PROXY { type nat hook prerouting priority -1\; }IPTables 구성( )에서는 찾을 수 없는 사전 라우팅 후크가 포함된 행을 볼 수 있습니다 iptables -t nat -N PROXY.

갈고리가 있기 때문에 점프하는 것은 불가능합니다.

후크가 없는 구성이 작동해야 합니다.

nft add table nat

nft add chain nat PROXY
nft add chain nat OUTPUT { type nat hook output priority -1\; }

nft add rule nat PROXY ip daddr { 1.1.1.1/32, 1.0.0.1/32 } return
nft add rule nat PROXY ip daddr { 1.0.0.0/8 } ip protocol { tcp, udp } redirect to :3127

nft add rule nat OUTPUT ip daddr { 1.0.0.0/8 } ip protocol { tcp, udp } jump PROXY

IPTables에서 NTFables로 마이그레이션하는 경우 다음을 확인하는 것이 좋습니다.원자 규칙 대체그리고기본 스크립팅 환경(/etc/nftables.conf)는 NTFables에서 제공됩니다.

관련 정보