在 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-翻译或者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