nftables 규칙은 트래픽을 차단하지 않습니다.

nftables 규칙은 트래픽을 차단하지 않습니다.

저는 NFtables를 테스트하고 있으며 ens37 및 ens38 2 인터페이스가 있는 Linux 시스템에서 기본 라우팅 방화벽을 설정하려고 합니다. 이는 이 두 인터페이스에 대한 ifconfig 출력입니다.

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.3  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:0c:29:74:33:e7  txqueuelen 1000  (Ethernet)
        RX packets 20  bytes 2524 (2.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 156  bytes 9952 (9.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:0c:29:74:33:f1  txqueuelen 1000  (Ethernet)
        RX packets 147  bytes 9340 (9.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1672 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens38을 WAN 포트로 에뮬레이트하고 LAN이 아닌 모든 인바운드 트래픽을 차단하고 LAN 트래픽 아웃바운드를 허용하고 싶습니다.

다음 위치에 이러한 규칙이 설정되어 있습니다 /etc/nftables.conf.

#!/usr/sbin/nft -f

flush ruleset

table ip filter {
    # allow all packets sent by the firewall machine itself
    chain output {
        type filter hook output priority 100; policy accept;
    }

    # allow LAN to firewall, disallow WAN to firewall
    chain input {
        type filter hook input priority 0; policy accept;
        iifname "ens37" accept
        iifname "ens38" drop
    }

    # allow packets from LAN to WAN, and WAN to LAN if LAN initiated the connection
    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname "ens37" oifname "ens38" accept
        iifname "ens38" oifname "ens37" ct state related,established accept
    }
}

규칙이 성공적인지 테스트하기 위해 netcat을 사용하여 리스너를 설정했습니다.

nc -lp 80 -s 192.168.0.3

그런 다음 netcat을 사용하여 다른 인터페이스에서 연결합니다.

nc 192.168.0.3 80 -s 192.168.0.4

내 문제는 이러한 nftables 규칙이 시뮬레이션된 WAN 포트의 트래픽을 차단하지 않는다는 것입니다. netcat 연결은 양방향으로 완벽하게 작동하지만 이는 내가 원하는 것이 아닙니다.

를 실행하면 nft list table filter내가 기대하는 출력 규칙이 표시됩니다.

저는 nftables를 처음 사용합니다. 이 두 인터페이스에 대해 이러한 규칙이 올바르게 작동하도록 하려면 어떻게 해야 합니까? 현재 접근 방식에 어떤 문제가 있나요?

답변1

먼저 동일한 시스템이 아닌 다른 호스트에서 테스트합니다. 일반적으로 "동일 호스트" 트래픽을 "입력"으로 올바르게 분류하려면 특별한 구성이 필요합니다.

또한 WAN과 LAN이 동일한 네트워크 범위에 있다는 것이 이상해 보입니다. 물론 IP 네트워킹에는 일반적인 정의가 없지만 일반적으로 NAT의 일부인 "관련" 및 "확립"을 사용하고 있습니다.

관련 정보