邢彬 /* XingBin.net */
XING Bin, a Coder, Geek, Railfan, and Outdoors Fan
face

在IPv4/6双栈网络中通过网桥实现IPv6透传

发布 / 2014-11-21 19:12   于 / Channel 8   文 / XingBin   浏览 / 16425  

科研环境需要IPv6的网络,其原因是显而易见的。然而,由于条件限制,很多实验室或宿舍内依然使用家用级路由器连接校园网。这里说的家用级路由器售价通常在150元以下,通过NAT转换实现局域网内的私网地址和WAN口外的公网地址间的转换。在这种情况下,实验室内的主机将共享一个WAN口IP连接校园网。然而,这种路由器大都不支持IPv6的路由或透传功能,将这样的数据包直接丢弃,因而无法访问IPv6的网络资源。

但是,以BJTU为例,校园网是IPv4/6双栈的,只要设备接入校园网,即可直接获得IPv6的地址。所以,解决上述问题的最简单的思路就是,如何能让IPv6的数据包进入到实验室内。

最简单的办法,就是使用一根网线连接路由器的WAN和LAN所在的网络,这样IPv6的数据包就直接进来了。但是,这种情况下,IPv4的数据包也一并进来了。这时,局域网内的DHCP会污染校园网,同时也将实验室局域网暴露在实验室外,特别的,如果路由器的WAN和LAN接口如果使用同一个MAC地址列表,还可能会导致路由器死机(如TP Link某多WAN口路由器就会遇到这样的问题)

解决思路也很简单,只要对这根网线做些限制,阻止上面的IPv4数据包,仅放行IPv6数据包即可。

有些路由器已经实现了这样的功能,如Buffalo WCR-G300N和WCR-GN的官方老版ROM都支持IPv6透传。这样,仅靠这种路由器自身即可使实验室内使用到学校的IPv6网络。而IPv4则依然通过NAT转换访问外网。

最初实验室内也通过这样的路由器上网,不过后来由于路由器的性能有限,难以支撑实验室内12台以上主机的联网要求,不得不采用IPv4和IPv6数据包分离的方法,使用两个路由器分别实现IPv6透传和IPv4的NAT。

再后来,实验室的IPv4软路由由于硬盘坏了,原来的破解版的路由系统由于破解方法失败无法使用。无奈之下,只好使用Linux下iptables的NAT功能实现IPv4软路由。但是,能不能通过类似的方法联通WAN和LAN,再过滤掉IPv4数据包呢?

在ip6tables里找了半天也没找到怎么配置转发,后来突然想到使用网桥应该就可以了。查了一下网络,发现已经有人这么实现了。不过直接按照网上的提到的做法没有成功。现在配置成功后再进行一下简单地整理。这里假设eth0和eth3分别是LAN和WAN接口。

首先,开启IPv6的数据转发功能,将eth0和eth3的转发开启。(这步很重要,后来想想,失败就是因为只开启了IPv4的转发,没有开启IPv6的转发)

echo 1 > /proc/sys/net/ipv6/conf/eth0/forwarding
echo 1 > /proc/sys/net/ipv6/conf/eth3/forwarding

接下来,建立一个用于IPv6数据透传的网桥,并将该网桥开启。

brctl addbr ipv6br
ifconfig ipv6br up

然后,将eth0和eth3添加到该网桥中。

brctl addif ipv6br eth0
brctl addif ipv6br eth3

最后,将该网桥上的所有IPv4数据包扔掉,保证只有IPv6的数据包可以通过。

ebtables -t broute -A BROUTING -p ! ipv6 -j DROP

另外,现在的一些高级小型路由已经通过插件支持IPv6,如极路由,可以通过路由、隧道和桥接等多种方法实现IPv6,分别适用于不同的网络环境。另外,如果路由器的固件空间在32M以上且支持第三方刷机,也可以使用OpenWRT进行IPv6的配置。

关联阅读: 网络 校园网 IPv6

请登录后留言

LOGIN
FOLLOW ME
CATEGORIES
COPYRIGHT
Creative Commons License
除特殊声明的页面外,本站作品采用 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议 进行许可。