私は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
(または)ルールを持つチェーンによって提供されるアクセスよりも大きいです。reject
drop
判定は、判定accept
が発生したチェーンでのみ有効であり、優先順位の高いチェーンでパケット処理が継続することを防止しません。
つまり、次のようなチェーンがある場合:
table ip filter {
chain INPUT {
type filter hook input priority 0; policy accept;
reject with icmp type host-prohibited
}
}
追加のチェーンを作成してアクセス権を付与することはできません。このルールをオーバーライドする唯一の方法reject
は、別のルールを追加することです。同じチェーンに。