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は、別のルールを追加することです。同じチェーンに

おすすめ記事