Nftables 端口敲除 dnat

Nftables 端口敲除 dnat

在 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,并且您可以连接到重定向到本地网络中的 RDP 的 777 端口。所以,1111 - 777 - 连接。如果序列不同,例如 1111 - {some_other_port} - 丢弃。效果很好。

我想切换到 nftables,但我不知道如何翻译它。非常感谢您的任何建议!

答案1

有一个 shell 级命令是描述nftables.org地点,或者,可以直接替换为iptables/ip6表命令,在您的原始脚本中,生成 nft 等效命令

或者 ...

使用单个命令转换整个恢复集,:

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

相关内容