192.168.2.0/24 및 2001:44b8:4112:8a02::/64 인터페이스가 있는 특정 시스템에서 enp3s0
다음을 수행하면:
canidae# ip link add dummy0 type dummy
canidae# ip addr add dev dummy0 2001:44b8:4112:8a02::55
canidae# ip addr add dev dummy0 192.168.2.55
canidae# ip link set dummy0 up
다음 출력은 ip addr
두 IP 주소가 모두 전역임을 확인합니다.
46: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 02:d1:a1:a4:7d:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.55/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 2001:44b8:4112:8a02::55/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::d1:a1ff:fea4:7da6/64 scope link
valid_lft forever preferred_lft forever
이제 네트워크의 다른 컴퓨터에서 192.168.2.55로 ping을 보낼 수 있습니다. IP 주소는 전역 enp3s0
이므로 어떤 패킷이 들어오는지는 중요하지 않습니다 .dummy0
하지만 원격 호스트에서 2001:44b8:4112:8a02::55 ping을 실행할 수 없습니다. 호스트가 2001:44b8:4112:8a02::55를 찾기 위해 NDP 요청을 보냈지만 응답을 받지 못했습니다. 따라서 이러한 주소는 실제로 전역이 아닌 특정 인터페이스에만 해당되는 것으로 보입니다.
동일한 IPv6 주소를 수동으로 추가하면 enp3s0
작동합니다. 실제로 IPv6 주소 할당을 제거하면 잠시 동안 계속 작동합니다 enp3s0
. 아마도 NDP 결과가 캐시되기 때문일 것입니다. 컴퓨터는 해당 주소로의 패킷이 수신되면 어떻게 해야 하는지 알고 있지만 이를 비밀로 유지하는 것을 좋아합니다.
내 이해는 이것이 IPv4뿐만 아니라 IPv6에서도 작동해야 한다는 것입니다. 그러나 그렇지 않습니다.
이 컴퓨터는 무언가를 차단하고 있지 않거나 iptables
차단 ip6tables
하고 있을 수 있습니다.
이 컴퓨터는 다음과 같습니다.
canidae# uname -a
Linux canidae 5.9.0-3-amd64 #1 SMP Debian 5.9.9-1 (2020-11-19) x86_64
GNU/Linux
하지만 비슷한 행동도 보았습니다.
root@kube-node-3:~# uname -a
Linux kube-node-3 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux
누구든지 이 동작을 설명할 수 있나요? 예상대로 작동하도록 수정이 가능한가요?
추신. 이상적이지 않은 테스트 IP 주소 192.168.2.55/32에 대해 사과드립니다. 이는 정확하며 브로드캐스트 주소 255와 혼동하지 마십시오. IPv6 주소와 동일합니다.
답변1
다음은 IPv4에 대한 매우 유사한 질문입니다.
https://serverfault.com/questions/834512/why-does-linux-answer-to-arp-on-in 올바른 인터페이스
나는 이것이 "엄격한 arp"라고도 불린다고 믿습니다. 나는 "strict arp"가 기본적으로 켜져 있다고 생각하지만 "strict ndp"는 기본적으로 꺼져 있습니다(실제로 이것을 변경할 수 있는지 확실하지 않습니다).
따라서 참조를 찾을 수는 없지만 이것이 예상되는 동작이라고 생각합니다.