nft에서 사용자 정의 테이블 사용

nft에서 사용자 정의 테이블 사용

저는 Fedora 31 시스템을 사용하고 있습니다 . 레거시 명령줄 도구 iptables-nft가 필요한 소프트웨어가 여전히 많기 때문에 이 시스템이 필요합니다 . iptables이는 내 nftables 구성에 이전 구성과 일치하는 해당 테이블 세트가 있음을 의미합니다.

table ip filter
table ip nat
table ip6 filter
table ip mangle
table ip6 nat
table ip6 mangle

나는 nftables 이전에 VPN 시작 시 다음과 같은 것을 실행하여 기본 이더넷 인터페이스에서 가장을 활성화한 컨테이너화된 VPN 서비스를 사용합니다.

iptables -t nat -A POSTROUTING -s 172.16.254.0/24 -o eth0 -j MASQUERADE

Fedora 31 이상으로 업그레이드한 이후에는 iptables-nft더 이상 작동하지 않습니다. 컨테이너(alpine 실행) iptables-nft에는 호환성 래퍼가 없지만 nft명령 자체가 있습니다.

nft하지만 cli를 사용하여 기존 테이블에 규칙을 추가 할 수는 없습니다 iptables-nft.할 수 있는새 테이블을 만듭니다. 다음과 같은 구성을 적용할 수 있었으면 좋겠습니다.

table ip vpn {
    chain postrouting {
        type nat hook postrouting priority filter; policy accept;
        ip saddr 172.16.254.0/24 oifname "eth0" counter masquerade
    }

    chain forward {
        type filter hook forward priority filter; policy accept;
        ip saddr 172.16.254.0/24 counter accept
    }
}

...하지만 별 효과가 없는 것 같습니다. 이 테이블의 체인을 우선순위 0으로 설정하여 일치시키길 원합니다.앞으로오래된 nat테이블이지만 그렇지 않은 것 같습니다.

이 작업을 수행할 수 있는 방법이 있나요?

답변1

irc 채널에서 몇 가지 논의를 거친 후 #netfilter모든 것이 "설계된 대로" 작동하고 있음이 밝혀졌습니다. 이것은아니요체인이 제공할 수 있는 것더 넓게(규칙 형태의) 액세스는 accept(또는) 규칙이 있는 체인이 제공하는 액세스보다 큽니다.rejectdrop

판정은 판정 accept이 발생한 체인에서만 유효하며 우선 순위가 더 높은 체인에서 패킷 처리가 계속되는 것을 방지하지 않습니다.

즉, 다음과 같은 체인이 있는 경우:

table ip filter {
        chain INPUT {
                type filter hook input priority 0; policy accept;
                reject with icmp type host-prohibited
        }
}

추가 체인을 생성하여 액세스 권한을 부여할 수 없습니다. 이 규칙을 재정의하는 유일한 방법 reject은 다른 규칙을 추가하는 것입니다.같은 체인에.

답변2

이것은 약간의 추측입니다.

  • NFT 버전에는 점프 위장이 없습니다.
  • 역방향을 구성해야 합니까?

관련 정보