사용자 공간 안팎으로 패킷을 큐에 넣기 위해 Netfilter 테이블을 구성하고 있습니다. 지금까지의 테이블 구성은 다음과 같습니다.
table inet filter {
# protocols to allow
set allowed_protocols {
type inet_proto
elements = { icmp, icmpv6 }
}
# interfaces to accept any traffic on
set allowed_interfaces {
type ifname
elements = { "lo" }
}
# services to allow
set allowed_tcp_dports {
type inet_service
elements = { ssh, 9090 }
}
# this chain gathers all accept conditions
chain allow {
ct state established,related accept
meta l4proto @allowed_protocols accept
iifname @allowed_interfaces accept
tcp dport @allowed_tcp_dports accept
}
# base-chain for traffic to this host
chain INPUT {
type filter hook input priority filter + 20
policy accept
jump allow
reject with icmpx type port-unreachable
}
chain input {
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
지금까지는 잘 로드되고 있는 것 같습니다 nft -f
.
그러나 이러한 명령 중 하나를 실행하면 ...
nft add inet filter input counter queue num 0
또는
nft add inet filter output counter queue num 1
...내 가상 머신이 입력에 대한 응답을 완전히 멈췄고, 연결을 종료했을 때 vagrant reload
다시 시작하려면 가상 머신을 강제 종료해야 한다는 말을 들었습니다. 이러한 대기열을 올바르게 구성하는 방법에 대한 도움을 주시면 대단히 감사하겠습니다!
운영 체제:Linux fedora 5.19.8-200.fc36.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Sep 8 19:02:21 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
도보 여행가:Vagrant 2.3.0
답변1
애플리케이션이 대기열을 수신하지 않는 경우 bypass
패킷을 수락 해 보세요.
nft add inet filter input counter queue num 0 bypass
이것을 읽어보세요 https://wiki.nftables.org/wiki-nftables/index.php/Queueing_to_userspace