iptablesにはポートノッキング用のスクリプトがあります(以下のコードスニペット)。
$IPT -N KNOCKING
$IPT -N GATE1
$IPT -N PASSED
$IPT -A INPUT -i $EXTIP -j KNOCKING
$IPT -A GATE1 -p tcp --dport 1111 -m recent --name AUTH1 --set -j DROP
$IPT -A GATE1 -j DROP
$IPT -A KNOCKING -m recent --rcheck --seconds 30 --name AUTH1 -j PASSED
$IPT -A KNOCKING -j GATE1
$IPT -A PASSED -m recent --name AUTH1 --remove
$IPT -A PASSED -p tcp --dport 777 -j LOG --log-prefix '*** RDP Connect ***'
$IPT -A PASSED -p tcp --dport 777 -m recent --name RDP --set -j ACCEPT
$IPT -A PASSED -j GATE1
$IPT -t nat -A PREROUTING -p tcp --dport 777 -m recent --rcheck --seconds 30 --name RDP -j DNAT --to-destination 192.168.1.254:3389
# ADD here FORWARD RULE from standart iptables script
機能:ポート1111に達すると、30秒以内に次のポート777に到達し、ポート777に接続できます。このポートはローカルネットワークのRDPにリダイレクトされます。だから1111-777-接続されました。順序が異なる場合(例:1111 - {some_other_port} - 削除)、良い結果。
nftablesに切り替えたいのですが、翻訳する方法がわかりません。どんなアドバイスでも心から感謝します!
答え1
シェルレベルのコマンドがあります。説明する~へnftables.org場所、iptables - 翻訳またはip6tables - 翻訳、これは次のように直接置き換えることができます。iptables/IP6テーブルコマンドを元のスクリプトからnftに対応するコマンドの生成。
または...
単一のコマンドを使用して回復セット全体を変換します。iptables-復元-翻訳:
iptables-save > ${savedIp4TablesCommandSet}
iptables-restore-translate -f ${savedIp4TablesCommandSet} >${firewall4RestoreCommandSet}.nft
ip6tables-save > ${savedIp6TablesCommandSet}
ip6tables-restore-translate -f ${savedIp6TablesCommandSet} >${firewall6RestoreCommandSet}.nft
その後、次のようにnftに直接入力できます。
nft -f ${firewall[4|6]RestoreCommandSet}.nft