nflog를 사용하여 iptables 규칙에서 패킷을 기록하고 삭제할 수 있습니까?

nflog를 사용하여 iptables 규칙에서 패킷을 기록하고 삭제할 수 있습니까?

이게 내 규칙이야울부짖었다그리고iptables, 레코드는 다음 위치에 저장됩니다 /var/log/ulog/sysloemu.log.

iptables -A INPUT -p tcp --sport 1234 -j NFLOG --nflog-prefix 'example block'
iptables -A INPUT -p tcp --sport 1234 -j DROP

나는 이 규칙을 단순화하고 싶다. 나는 이것을 시도했지만 작동하지 않습니다:

iptables -A INPUT -p tcp --sport 1234 --nflog-prefix 'example block' -j DROP

나가:

iptables v1.8.4 (legacy): unknown option "--nflog-prefix"
Try `iptables -h' or 'iptables --help' for more information"

하지만ebtables이를 수락합니다(적어도 오류는 발생하지 않습니다).

ebtables -A INPUT --protocol ipv4 --ip-proto tcp --ip-sport 1234 --nflog-prefix 'example block' -j DROP

풀어줄 수 있는 방법이 있나요?신경망 로그( --nflog-prefix) iptables 규칙에 한 줄만 남았나요?

PD: 아니면 nftables 외에 이러한 규칙을 단순화하는 다른 대안이 있을까요?

PD: 내 iptables 스크립트에는 유사한 규칙이 많이 있으므로 어떤 규칙에도 작동하는 솔루션을 원합니다.

PD: 비슷한 질문이 있어요.여기, 하지만 해결책은 내가 찾고 있는 것이 아닙니다.

고쳐 쓰다:

나는 이것을 시도했습니다 (@Tom Yan에게 감사드립니다):

# variable prefix
A='block A'
B='block B' # in this case i need to repeat the loop (and increase the number of lines)

iptables -N NFLOG_AND_DROP
iptables -A NFLOG_AND_DROP -j NFLOG --nflog-prefix "$A"
iptables -A NFLOG_AND_DROP -j DROP
# rules
iptables -A INPUT -p tcp --sport 1234 -j NFLOG_AND_DROP
iptables -A FORWARD -p tcp --dport 1234 -j NFLOG_AND_DROP

하지만 시퀀스와 iptables 스크립트를 줄이는 대신 반복해야 하기 때문에 다른 행을 추가할 수 없습니다. --nflog-prefix그러면 행 수가 늘어납니다(누군가가 이 문제를 해결하기 위해 루프를 고안하지 않는 한).

답변1

내 생각에 당신이 할 수 있는 최선은 다음과 같다:

-N log_and_drop
-A log_and_drop -j NFLOG --nflog-prefix "shared prefix"
-A log_and_drop -j DROP
-A INPUT -p tcp --sport 1234 -g log_and_drop
-A INPUT -p udp --sport 4321 -g log_and_drop

일부 (일치하는) 규칙이 동일한 로그 접두사를 공유해야 한다고 가정합니다.

관련 정보