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