ufw에서 iptables 규칙을 설정하려고 하는데 어떻게 작동하는지 오해하고 있는 것 같습니다. 설명된 일반 구문 외에 신뢰할 수 있는 문서를 찾을 수 없습니다.여기. 이것은 내 문제의 단순화된 버전입니다.
추가한 후 /etc/ufw/after.rules
:
*filter
:ufw-user-input - [0:0]
:FOO-CHAIN - [0:0]
-A FOO-CHAIN -j ufw-user-input
-A FOO-CHAIN -j DROP
COMMIT
아이디어는 FOO-CHAIN
허용된 패킷만 허용되고 ufw allow
, 그렇지 않으면 폐기된다는 것입니다.
문제 - ufw reload
한 번 로드하면 규칙이 적용되지만 두 번째 다시 로드에서는 상수가 나오기 시작합니다 ERROR: Could not load logging rules
. 내가 찾은 유일한 해결책은 전체 테이블( iptables -F && iptables -X
)을 새로 고치는 것입니다.
후속 질문:
- 대신 이를 사용하면
ufw-user-forward
다시 로드할 때 오류가 발생하지 않습니다. 왜 그런 겁니까? - 왜 경유 또는 다른 면을 통해
:ufw-user-input - [0:0]
체인을 정의 해야 합니까ERROR: No such file or directory
?after.rules
파일 이므로 다음에 실행해야 합니다user.rules
. 즉,ufw-user-input
이미 정의되어 있어야 한다는 의미입니다. 점프를 로 변경하면ufw-before-input
정의를 생략할 수 있으며 오류가 나타나지 않습니다.
답변1
나는 같은 문제가 있었고 UFW가 ufw-user-input
ufw가 활성화되었는지 또는 비활성화되었는지 알기 위해 iptables에 체인이 존재하는지 내부적으로 확인한다는 것을 발견했습니다.
ufw-user-input
in을 사용하면 or를 실행할 때 do가 삭제되는 것을 -A FOO-CHAIN -j ufw-user-input
방지할 수 있습니다 . iptables가 변경 사항을 허용하지 않기 때문에 체인은 계속 존재합니다. 그러면 UFW 상태는 혼란스러워지거나 심지어 붕괴될 것입니다.ufw-user-input
ufw reload
ufw disable
ufw status
ufw disable
이나 그 이후에 규칙이 제대로 정리되었는지 확인해야 합니다 ufw reload
.
가장 쉬운 방법은 언급된 체인의 모든 라인을 추가 iptables -F FOO-CHAIN || true
하거나 유사하게 삭제하는 것 입니다 .ufw-user-input
/etc/ufw/before.init
/etc/ufw/before.init
set -e
case "$1" in
start)
# typically required
;;
stop)
# typically required
iptables -F FOO-CHAIN || true
# You may want to add other lines here to reset your chain in a desirable state if UFW is disabled like
# iptables -A FOO-CHAIN -j RETURN || true
;;
status)
# optional
;;
flush-all)
# optional
;;
*)
echo "'$1' not supported"
echo "Usage: before.init {start|stop|flush-all|status}"
;;
esac
before.init
를 사용하는 것을 잊지 마세요 chmod +x /etc/ufw/before.init
.
나는 당신이 그것을 필요로 한다는 것을 확인합니다. :ufw-user-input - [0:0]
이것은 UFW의 내부 때문이며 내 생각 ufw-user-input
에는 after.rules
.