IPv6 로컬 네트워크의 netcat6

IPv6 로컬 네트워크의 netcat6

가 있고 [ Host A ] -- [ gateway ] -- [ Host B ]A와 B는 서로 다른 서브넷에 있습니다.

게이트웨이 구성:

ip -6 link set enp0s3 up
ip -6 link set enp0s9 up
ip -6 addr flush dev enp0s3
ip -6 addr flush dev enp0s9
ip -6 route flush dev enp0s3
ip -6 route flush dev enp0s9
ip -6 addr add ::ffff:5:7:1:1/126 dev enp0s3
ip -6 addr add ::ffff:5:7:2:1/126 dev enp0s9
echo 1 | tee /proc/sys/net/ipv6/conf/*/forwarding > /dev/null

호스트 A 구성:

  ip link set enp0s3 up
  ip -6 addr flush dev enp0s3
  ip -6 addr add ::ffff:5:7:1:2/126 dev enp0s3
  ip -6 route add default via ::ffff:5:7:1:1

호스트 B 구성:

  ip link set enp0s3 up
  ip -6 addr flush dev enp0s3
  ip -6 addr add ::ffff:5:7:2:2/126 dev enp0s3
  ip -6 route add default via ::ffff:5:7:2:1

IP가 IPv4(5.7.2.1 -> ::ffff:5:7:2:1)에 대해 변환된 주소가 되기를 원합니다.

문제:
호스트 B에서 호스트 A로 ping을 시도할 때 때로는 ping이 작동하지만 때로는 호스트 A에서 호스트 B로 동일한 동작이 수행되지 않습니다. ncat -6을 시도하면 작동하지 않습니다(게이트웨이 tcpdump에 "대상 호스트에 연결할 수 없습니다"라고 표시됨). ping과 ncat은 게이트웨이에서만 작동합니다.

게이트웨이의 라우팅 테이블:

::ffff:5:7:1:0/126 dev enp0s3 proto kernel metric 256 pref medium
::ffff:5:7:2:0/126 dev enp0s9 proto kernel metric 256 pref medium
fe80::/64 dev enp0s8 proto kernel metric 256 pref medium

마지막 fe80::/64 레코드는 내 SSH 연결입니다.

문제는 라우팅 부분에 있는 것 같은데, 어떻게 해결해야 할지 의문이 듭니다.

편집하다:

주소를 새로 고쳐서 문제를 해결했습니다 ip -6 addr flush dev enp0s3.

답변1

IPv4 매핑 IPv6 주소(즉, 형식의 주소 ::ffff:192.168.0.1)는 통신 중에 사용되어서는 안 됩니다. 이는 듀얼 스택 소켓에서 IPv4 주소에 대한 내부 식별자로 사용되도록 만들어졌습니다. 예를 들어 이중 스택(IPv6/IPv4) 서버 프로세스가 IPv4 호스트로부터 IPv6 소켓에 대한 연결을 수락하면 192.168.0.1내부적으로 로 변환됩니다 ::ffff:192.168.0.1.

네트워크 인터페이스가 이 형식의 주소를 가진 패킷을 수신하는 경우 해당 패킷을 삭제하지 않으면 오류가 됩니다.

관련 정보