저는 IPv6의 멀티캐스트 기능을 연구하고 있습니다.
$ ping ff02::2%wlp3s0
이로 인해 일반적으로 로컬 네트워크 세그먼트의 모든 라우터가 에코 응답(위키피디아-IPv6). 제 경우에는 홈 라우터입니다.
그러나 원래 nftables 규칙이 반향 응답을 차단하고 있음을 발견했습니다.
원시 nftables 규칙으로 인해 에코 응답이 방지됩니다.
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iifname "lo" accept
ct state { established, related } accept
ct state invalid drop
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
이 설정으로는 응답이 없습니다.
$ ping ff02::2%wlp3s0
PING ff02::2%wlp3s0(ff02::2%wlp3s0) 56 data bytes
반향된 응답을 허용하는 nftables 규칙을 수정했습니다.
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iifname "lo" accept
ct state { established, related } accept
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
ct state invalid drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
이 설정을 사용하면 작동합니다.
$ ping ff02::2%wlp3s0
PING ff02::2%wlp3s0(ff02::2%wlp3s0) 56 data bytes
64 bytes from fe80::----:----:----:----%wlp3s0: icmp_seq=1 ttl=64 time=1.82 ms
잘못된 CT 상태가 원인입니다
ct state invalid drop
유일한 차이점은 이전 과 이후의 한 번이라는 것을 스스로 알 수 있습니다 ip6 nexthdr ipv6-icmp accept
.
따라서 쌍에 대한 에코 응답 ping ff02::2%wlp3s0
은 ct state invalid
.
내 질문
에코 응답의 ct 상태는 내 에코 요청의 직접적인 결과이기 때문에 "연결됨" 또는 "설정됨"이어야 하지 않습니까?
그렇지 않다면 ping 2001:470:20::2
두 경우 모두 "정상적인" 유니캐스트 ping( )이 작동하는 이유는 무엇입니까?