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

ネットワークインターフェイスがこの形式のアドレスを持つパケットを受信して​​いる場合、そのパケットを破棄しないとエラーになります。

関連情報