昨天帮别人搞ipv6的代理服务器,要求是内网ipv6的主机能访问,但是出去的时候要是ipv4的,其实就是一个只有ipv6的内网想正常访问现在的ipv4的系统了。
squid 3.1开始就集成了ipv6的代码,而且还是在这两种协议中切换,如果域名有AAAA解释的就用ipv6,只有A的就用ipv4了,哈哈,本来是十分简单的东西,但是自己对ipv6并不是太熟悉,所以还是搞了半天。。。
首先就是ipv6的格式了,ifconfig 一般就可以看到
inet6 addr: fe80::212:3fff:fe24:f258/64 Scope:Link
这个inet6就是默认配置上去的ipv6地址了,但是没有路由,所以ipv6只能从本机访问了。
ipv6一般就是6段,每段是4个十六进制数
而缩略符号可以代表任意多个0000段,但是在一个地址里面只能出现一次
比如 fe80::212:3fff:fe24:f258 就是 fe80:0000:212:3fff:fe24:f258
而本机地址 ::1 就是 0000:0000:0000:0000:0000:1
ipv6这东西,由于规则不同,基本就和ipv4不兼容,各个软件都有自己一套转换方法,但是实际上的时候还是自己定义路由的,没有什么全球性的网络,所以还是和当前的ipv4系统是完全独立出来了。
一些基本命令在ipv6下面的使用
比如ping命令,ipv6下面就有个ping6的命令
但是这个命令一定要加上指定的网卡端口,否则就会出错。。。
ping6 -I eth0 fe80::212:3fff:fe24:f258
PING fe80::212:3fff:fe24:f258(fe80::212:3fff:fe24:f258) from fe80::212:3fff:fe24:f258 eth0: 56 data bytes
64 bytes from fe80::212:3fff:fe24:f258: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from fe80::212:3fff:fe24:f258: icmp_seq=2 ttl=64 time=0.019 ms
另外一个有用的命令就是telnet了
比如要连接3128端口
telnet -6 fe80::212:3fff:fe24:f258%eth0 80
而这里的%eth0 也是制定网卡设备了,和ping一样的问题。