nftablesからMACアドレスにアクセスできない

nftablesからMACアドレスにアクセスできない

Oculus Questがありますが、Oculusだけが私のminiDLNAサーバーを見ることができるようにしたいと思います。したがって、サーバー自体には次の構成があります。

私が提供したMacアドレスは100%正確で、nftを無効にした後はすべてうまくいきます。

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0;

        # Allow established and related connections
        ct state established,related accept

        # Allow loopback interface
        iif lo accept

        # Allow SSH connections on port 22222
        tcp dport 22222 accept

        # Allow ICMP (ping) from LAN IP range (192.168.1.x)
        ip protocol icmp icmp type echo-request ip saddr 192.168.1.0/24 counter accept

        # Allow HTTP (port 80) from LAN IP range (192.168.1.x)
        tcp dport 80 ip saddr 192.168.1.0/24 accept
        
    #tcp dport 80 accept

        # Allow HTTPS (port 443) from LAN IP range (192.168.1.x)
        tcp dport 443 accept

        # Allow incoming connections on port 64293 from LAN (192.168.1.0/24)
        tcp dport 64293 ip saddr 192.168.1.0/24 accept

        iifname eno1 udp dport 53 accept
        iifname eno1 tcp dport 53 accept

        # Allow incoming Samba traffic from LAN IP range
        tcp dport 445 ip saddr 192.168.1.0/24 accept

        # Allow MiniDLNA only from a specific MAC address
    ether saddr YX:XY:XY:XY:XY:XY ether daddr YX:XY:XY:XY:XY:XY tcp dport 8200 accept
        
    # Drop all other incoming connections
        drop
    }
}

答え1

私が知っている限り、table inet+はhook inputレイヤ3以上のトラフィックのみを処理します。つまり、この時点でイーサネット情報が削除されます。

ブリッジングを行わないことは明らかであるため、MACアドレスルールを次のingressフックに入れる必要があるかもしれませんtable netdev

table netdev l2filter {
    chain l2input-eno1 {
        type filter hook ingress device eno1 priority 0;
        # ingress hooks are specific to ^^^^ a particular network interface

        # Allow MiniDLNA from specific source MAC address only
        ether saddr YX:XY:XY:XY:XY:XY tcp dport 8200 accept
        # MiniDLNA requests from any other source will be dropped
        tcp dport 8200 drop
    }
}

メモ:私はこれをテストしていません。よく知っている人がいる場合は、自由に編集するか、より良い回答を作成してください。

l2filter人が読める名前しかない場合は、l2input-eno1必要に応じて選択できます。

ブリッジしない場合、またはネットワークインターフェイスを無差別モードに設定しない場合、NICハードウェアはすでに宛先MACアドレスに基づいて着信ユニキャストトラフィックをフィルタリングしている必要があるため、このether daddrルールは必要ありません。

さらに、DLNAサーバーはUPnP検索プロトコル(SSDP = UDPポート1900)を介して自分自身を知らせる必要があり、そのプロトコルはマルチキャストを介して機能するため、ネットワークセグメント内のDLNAサーバーの存在を完全に隠すことができない可能性があります。発信するすべてのSSDP通知をブロックしたくない限り、Oculus QuestはDLNAサーバーを見つけるのが難しくなる可能性があります。

上記のルールは、他のホストが実際にアクセスするのを確実に防止します。入場MiniDLNAサーバー。 SSDP発表を通じて、その存在が明らかになります。

関連情報