我有:[ 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中ping主机A时,它有时会发出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。
发布于 2017-05-19 10:53:15
IPv6 4映射的IPv6地址(即::ffff:192.168.0.1格式的地址)不应该在线路上使用。它们被用作双堆栈套接字上的IPv4地址的内部标识符。当双堆栈( IPv6 6/IPv6 4)服务器进程接受来自IPv6主机(例如192.168.0.1 )的IPv4套接字上的连接时,它在内部被转换为::ffff:192.168.0.1。
如果网络接口接收到具有此格式地址的数据包,则如果不删除该数据包,则为错误。
https://unix.stackexchange.com/questions/366017
复制相似问题