
私はDebian Linuxサーバーを実行しています。
一部のファイアウォールポートを開く必要があります。通常、iptablesは簡単ですが、このサーバーはnftablesを実行しています。
conf ファイルを開くと、ルールは表示されません。
cx:/etc# cat nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
ただし、ルールを一覧表示すると、次のようになります。
:/etc# nft list ruleset
table inet filter {
chain input {
jump phonesystem
}
chain phonesystem {
ip daddr 224.0.1.75 counter packets 0 bytes 0 accept
tcp dport { http, https, sip, sip-tls, 5062, 5090 } ct state new counter packets 0 bytes 0 accept
udp dport { sip, 5090, 7000-10999 } counter packets 0 bytes 0 accept
}
}
table ip filter {
chain INPUT {
meta l4proto tcp tcp dport 22 counter packets 0 bytes 0 accept
jump phonesystem
}
chain phonesystem {
ip daddr 224.0.1.75 counter packets 0 bytes 0 accept
tcp dport { http, https, sip, sip-tls, 5062, 5090 } ct state new counter packets 0 bytes 0 accept
udp dport { sip, 5090, 7000-10999 } counter packets 0 bytes 0 accept
}
chain FORWARD {
type filter hook forward priority 0; policy accept;
}
chain OUTPUT {
type filter hook output priority 0; policy accept;
meta l4proto tcp tcp dport 22 counter packets 0 bytes 0 accept
}
}
table ip6 filter {
chain INPUT {
jump phonesystem
}
chain phonesystem {
tcp dport { http, https, sip, sip-tls, 5062, 5090 } ct state new counter packets 0 bytes 0 accept
udp dport { sip, 5090, 7000-10999 } counter packets 0 bytes 0 accept
}
chain FORWARD {
type filter hook forward priority 0; policy accept;
}
chain OUTPUT {
type filter hook output priority 0; policy accept;
}
}
table ip security {
chain INPUT {
type filter hook input priority 150; policy accept;
}
chain FORWARD {
type filter hook forward priority 150; policy accept;
}
chain OUTPUT {
type filter hook output priority 150; policy accept;
}
さて、ポート4001などを開きたいです。
IPテーブルに関連付けられている電話システムで多くのコマンドを試しましたが、常に構文エラーが発生します。私はどこで間違っているのだろうか?
例えば
:/etc# nft add rule ip filter input tcp dport 4001 accept
Error: Could not process rule: No such file or directory
add rule ip filter input tcp dport 4001 accept
または
:/etc# nft add rule ip phonesystem tcp dport 4001 counter accept
Error: syntax error, unexpected tcp, expecting string
add rule ip phonesystem tcp dport 4001 counter accept
より多くのポートを開きたい場合は、電話システムチェーンにどのように追加しますか?
答え1
あなたのシステム基本的にiptables-nft
代わりに使用してくださいiptables-legacy
:
Debian Buster 以降、nf_tables は iptables-nft 階層を介して (つまり、nf_tables カーネルサブシステムを介して iptables 構文を使用して) iptables を使用する場合のデフォルトのバックエンドです。これはip6tables、arptables、ebtablesにも影響します。
ツール構成iptablesだから使用していますiptables-nft
代わりにiptables-legacy
。だから目に見えます。nftablesまた。でも同じことが起こりますip6tables
。
したがって、nft list ruleset
実際に表示されるのはinet
基本的に定義されたスイート(デュアルIPv4 + IPv6)です。nftables渡す/etc/nftables.conf
そしてiptables
別の構成またはツールで完了したコマンドの結果。
ip filter INPUT/OUTPUT/FORWARD
チェーンなどの規則を変更しないでください。そうしないと、iptables
後でチェーンから再変換できない場合に失敗する可能性があります。nftables 互換性APIiptables。同様にnft
、すべてのコンテンツをデコードすることは不可能かもしれません。iptables'チェーンはまだ翻訳できないものを使用できるからです。iptables一致またはターゲット。現在のルールセットではそうではありません(または#
コメント()を含む行は時々表示されます)。
ip filter INPUT
デフォルトチェーンip6 filter INPUT
として表示されinet filter input
ず、phonesystem
ユーザー/一般チェーン:まず、type filter hook input priority 0; policy accept;
パケットパスでNetfilterフックを使用してデフォルトチェーンにする必要があります。これがなければ、ここでは入力フィルタリングは行われません。または、切り取り/貼り付けエラーの場合、デフォルトの入力ポリシーがパケットを破棄するかどうか(そうでなければパケットを受け入れる必要があるのはなぜですか?)が不明になり、最終提案に影響します。
この質問に答えるために。チェーン名が正しくないか(大文字と小文字が区別された)、必須テーブル名が欠落しているため、毎回構文エラーが発生します。それ以外の場合は機能しますが、コマンドを使用できなくするコマンドはiptables
次のとおりです。
nft add rule ip filter INPUT tcp dport 4001 accept
nft add rule ip filter phonesystem tcp dport 4001 counter accept
何があってもしないでください。
iptables-save
ルールセットを表示するために使用されます。iptablesiptables
ルールは次のコマンドで作成されたので、書式設定し、それを使用して通常どおりにルールを変更しますiptables
(体系的にカウンタルールプロンプトを表示)。
iptables -A INPUT -p tcp --dport 4001 -j ACCEPT
iptables -A phonesystem -p tcp --dport 4001 -j ACCEPT
使用法の競合がないため、inetフィルタテーブルにルールを自由に追加できます。あるいは、名前が一致しない限り、必要に応じてテーブルを直接作成できます。iptables(-nft API経由):
たとえば、
nft add table ip myowntable
nft add chain ip myowntable mycustominput '{ type filter hook input priority 10; policy accept; }'
相互作用があることに注意してください。パケットがチェーンから失われると、永遠に失われたままになります。パケットがチェーン(たとえば)で承認されると、ip filter INPUT
同じフック/タイプ(たとえば、または)のチェーンフックに引き続きドロップできます。だからこれは意味があります:inet filter input
ip myowntable mycustominput
ドロップされたパケットは回復されません。
nft add rule ip myowntable mycustominput tcp dport 5555 drop
ただし、以下は役に立ちません(これを受け入れても、ip myowntable mycustominput
他の規則によって削除される前に他の場所から削除されるのを防ぐことはできませんip filter INPUT
)。
nft add rule ip myowntable mycustominput tcp dport 4001 accept
結論:システムで使用されている他のツールがある場合は、そのiptables
ツールを引き続き使用するiptables
か、そのツールに切り替えてください。nftables最初。両方を同時に使用すると、より多くの問題が発生します。両方を使用する必要がある場合は、この質問に答えることができるいくつかの追加のQ&Aがあります(ヒント:パケットの表示が必要な場合があります)。