Monday, July 25, 2016

Does Linux support IPv4 mapped IPv6 addresses?



I work in a mixed IPv4 / IPv6 environment. I read that IPv4 addresses can be mapped into the IPv6 space with this syntax




::ffff:1.2.3.4 (1.2.3.4 is the IPv4 address)





Does Linux support this notation ? All these fail on my server:



ping6 ::ffff:1.2.3.4 # to the server IP
ping6 ::ffff:127.0.0.1

Answer



Rather than using ping6, try ssh'ing to ::ffff:127.0.0.1.



I think the specific failure here is related to ping6, not the IP4 mapped addresses.




Aren't IPv4 mapped IPv6 addresses actually using IPv4, and hence, not suitable for ping6?



Linux has a socket option, IPV6_V6ONLY which prevents some applications using IPv4 mapped addresses. However, I think for ping6 the specific issue is the way it works internally.



This is from netbsd, but I think it covers the issue.




You should be aware that IPv4 mapped IPv6 is still IPv4 - it's only
presented in a IPv6-resembling text format (or actually, when calling

your operating system's libraries or kernel, binary socket address
format.)



For dual-protocol applications this is no problem - they know how to
switch (implicitly, when using the right (modern) library calls).



No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...