在FreeBSD4.0以上内核支持了IPV6,所以想搞搞这个玩意,当然要和IPV6网络通信,有一个比较好的地方,那就是(http://www.6bone.net). 6bone是一个测试IPV6
开发的网络,它那里有比较好的关于怎样使用IPV6,怎样工作的资料。如果你要在你的网络上很好的支持IPV6,不妨多花点
时间在6bone上转转,当然还有其他的一些PIV6网络测试,如www.kame.net等,日本也有不少关于IPV6网络测试,现在听说国内也有一个教育网(是不是中科院)也有IPV6的实现,不过忘了,到时再查查。
对于你的网络上使用IPV6,你最好有一个静态IP供你测试,当然你也可以使用PPP来使用IPV6,具体
文档请看:Connecting to the 6bone through PPP with a dynamically-allocated IPv4 address-- http://www.bieringer.de/linux/IPv6/sitctrl/index.html 。
OK,如果你现在有一个静态IP地址,想测试IPV6最简单的方法就是去Freenet6 (http://www.freenet6.net). Freenet6是一个比较好的WEB接口,通过它你可以甚至一个IPV6到IPV4的隧道到达6bone。你要做的就是在FREENET6站点上填写下你WEB名字和你公开的IP地址,然后他们就会配置他们的隧道末端并会给你一PERL脚本,你可以运行这个脚本并配置你自己机器上的一端。它能使你很好很快的开始IPV6之旅。你不妨去测试下的说。
但使用Freenet6中的问题是它不支持NAT。下面就讲讲FreeBSD 4.0-Stable
系统上使用IPFILTER NAT/Firewall环境中,来设置这个IPV6。这当然也适合其他系统的设置。
最先要做的就是你检查下你NAT/FIREWALL的设置,在NAT中,你需要使用一静态的NAT,NAT分两种工作情况:多对一和一对一的NAT,这里你需要使用静态的一对一NAT。
然后我们就来处理这个隧道--tunnel,做这步之前,你就去Freenet6的站点填写表格并提交你使用NAT了的公开IP地址。FREENET6就会发一PERL脚本给你,在你运行这个脚本之前,你需要如下更改一个地方:
在设置你的gifconfig时你需要用你privat ip来代替public ip,如下:
system(`gifconfig $if public.routeable.IP 206.123.31.102`);
变为:
system(`gifconfig $if private.nonrouteable.IP 206.123.31.102`);
这样后运行你的脚本时,你的输出就会提示一些错误(在"Your IP v4 address is"读取PUBLIC IP) ,但对你系统的配置仍然是正确的,如果你实在是要让你的输出正确的话,你只要改变每一条的PUBLIC接口改为你自己私有的接口。
OK,脚本改变以后,你就以ROOT身份运行它,你的隧道--tunnel就会在本地HOST上建立了。然后你需要增加些
防火墙规则。
在如下的防火墙规则里,假设已经在IPFILTER是使用了规则组,这些GOURPS如下:
100 - Inbound on fxp0
150 - Outbound on fxp0
200 - Inbound on fxp1
250 - Outbound on fxp1
其中你这里的fxp0是公开的接口,也就是连接INTERNET的接口,FXP1连接的是你
内部的网络。OK,然后你就增加4条火墙规则。
先来解释下下面的名字:
$YOURPPRIVATEIP 代表你内部网络的IP地址而
$YOURPEERSPUBLICIP 是FREENET6脚本里输出的IP地址,这里还假定你使用了默认
的拒绝规则:
pass in quick proto ipv6 from $YOURPEERSPUBLICIP to $YOURPPRIVATEIP group 100
允许$YOURPEERSPUBLICIP发信息包到你的内部IP。
pass out quick proto ipv6 from $YOURPPRIVATEIP to $YOURPEERSPUBLICIP group 150
允许$YOURPPRIVATEIP路由到$YOURPEERSPUBLICIP经过外部接口。
pass in quick proto ipv6 from $YOURPPRIVATEIP to $YOURPEERSPUBLICIP group 200
允许信息包从你本地主机通过内部接口到你的$YOURPEERSPUBLICIP。
pass out quick proto ipv6 from $YOURPEERSPUBLICIP to $YOURPPRIVATEIP group 250
允许$YOURPEERSPUBLICIP路由信息包通过内部接口到你的本地主机。
当然上面的操作说到底需要一些IPv6 stack的支持,你可以先到http://www.kame.net下载kame ipv6 stack,然后再来测试。
这些实在太麻烦,要下载后安装,现在叫你一个简单的办法使你PING6通到 www.6bone.net,当然是简介,你要好好设置IPV6就看IPV6-HOW-TO 吧。
OK,全部需要的你只要一个IP静态地址,并有内核支持的系统,我这里使用了Freebsd 4.0-RELEASE来进行了测试。
那就是设置6to4来即时使用IPV6机制,而不需要很多其他的安排。
使用这个方法就是其特殊前缀2002::,
3 13 32 16 64
---------------------------------------------------------
|001|TLA0x002| ipv4 TRA | SLA | interface ID |
---------------------------------------------------------
定义16位的前缀2002::/16作为"6to4"的标志。
OK,要设置成6to4机制,你只需要把你网关的IPV4的转化为16进制的格式,如192.168.57.99是0xc0a83963,那么你把你的网关变为2002:c0a8:3963::/48。
然后把下面的几个条目放到rc.conf中:
ipv6_enable="YES"
ipv6_router_enable="YES"
ipv6_network_interfaces="lo0 nn0"
ipv6_prefix_nn0="2002:c0a8:3963"
stf_interface_ipv4addr="192.168.57.99"
注意上面的nn0你要改为自己网络的接口表示,并配置你的内核加入如下一条:"pseudo-device stf 1"
然后中心编译下内核。
OK,这样的配置还不够与其他6to4用户通信了,你需要找到一个6to4的
路由器来路由你的信息。我选择了这个
路由器地址:6to4.kfu.com,当然还有很多其他的地址,你可以选择你自己认为最好的。最后把下面的条目加到rc.conf中:
ipv6_static_routes="default"
ipv6_route_default="default 6to4.kfu.com"
重新启动。
然后你试着ping6 www.6bone.net看看行不行。呵呵,NND ,我测试了下发现来回
时间可够长的:
$ ping6 -c 5 www.6bone.net
PING6(56=40+8+8 bytes) 2002:d35b:d06::1 --> 3ffe:b00:c18:1::10
16 bytes from 3ffe:b00:c18:1::10, icmp_seq=1 hlim=61 time=1005.78 ms
16 bytes from 3ffe:b00:c18:1::10, icmp_seq=2 hlim=61 time=1022.12 ms
16 bytes from 3ffe:b00:c18:1::10, icmp_seq=3 hlim=61 time=1000.82 ms
16 bytes from 3ffe:b00:c18:1::10, icmp_seq=4 hlim=61 time=1017.48 ms
--- 6bone.net ping6 statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max = 1000.82/1011.55/1022.12 ms
$
呵呵,有兴趣可以试试哦,但我发现一个我自己不能很了解的东西,发现ping localhost到不行了,呵呵,是不是这句惹的祸:stf_interface_ipv4addr="192.168.57.99"。(这个IP地址不是我的,要加你自己公开的IP地址)
太匆忙了,到时仔细看看以后再重新配置。