|
本帖最后由 yumeimm 于 2019-6-21 09:53 编辑
1. 前言
由于IPv4地址空间有限并且越来越难以得到,而IPv6提供了巨大的地址空间。因此向IPv6靠拢是不得已的办法。
另外,如果拥有了IPv6地址,很多事情会很方便,当然也带来了安全问题。
方便性例如: 如果VPS同时具有IPv4/IPv6地址, 而我们本地也有IPv4/IPv6地址,那么访问VPS时候,就能够同时以v4/v6
连接VPS,相当于一个物理VPS变身两个逻辑VPS。而且通常IPv6的道路比v4的更畅通更快速。
2. 配置
2.1 IPv6地址
通常我们使用到的IPv6地址有3类,
- Global-unicast IPv6 address(全球唯一单播IPv6地址, GUA, 前缀2000::/3), 对应于IPv4的公网IP地址,全球唯一。
- Unique Local IPV6 unicast address: (本地唯一单播地址, LUA, 前缀fc00::/7, 覆盖范围从fc00::/8到fd00::/8), 对应于IPv4的私网IP地址,在整个组织/公司/学校/站点内唯一。常用的为fd00::/8。本组织内可以路由。用于IPv6的NAT功能。
- Link-local address: (链路本地地址,前缀fe80::/10, 用于直连链路,无路由功能), 自动分配,一般不用管。
其它的IPv6地址例如site-local address(站点唯一地址)等已经丢弃不用,其功能由LUA代替。
2.2 配置
现在最新的OpenWrt已经对IPv6有很好的支持。 而且已知的国内三大运营商电信/联通/移动都已经支持IPv6.
如果家庭拨号没有IPv6, 那么一般在光猫上配置连接为IPv4/IPv6都支持即可,然后找个支持IPv6的路由器就OK。
这里以OpenWrt为例:
1) wan口配置
建立一个wan口用于拨号(默认已经有), 然后建立一个wan6口,使用"DHCPv6客户端协议"即可。
然后,wan6接口要位于防火墙的wan区域。
拨号成功后,可以在 WAN_6接口处得到IPv6地址和IPv6-PD地址(IPv6前缀委托地址段)。IPv6-PD地址是运营商分配给你的IPv6地址段,用于你的路由器给你下面的子网设备单独分配IPv6地址,例如电视/手机/机顶盒/电饭煲/洗衣机等。这个地址是GUA-全球唯一单播地址。
2) lan口配置
wan6接口得到IPv6-PD地址后,我们需要在lan接口处配置给子网下面的设备分配IPv6地址的方式,有两种SLAAC(无状态)和DHCPv6(有状态)。
无状态也就是给定IPv6前缀后,由设备自己生成IPv6地址,不需要路由器分配,从而不消耗路由器资源。
有状态也即由路由器确定设备的IPv6地址,并记录(避免重复等, 类似传统的IPv4分配私网地址方式),需要消耗服务器资源。
OpenWrt默认为“无状态+有状态”, 这样每个设备会得到2个GUA地址, 这里推荐只用一种方式即可,通常我选择无状态,以减轻路由负担。
lan口配置在“接口” --> "lan" -->"DHCP服务器" --> IPv6设置:
3) 负载均衡:mwan3
如果你的OpenWrt固件本身安装有mwan3负载均衡,而又用不上,那么停止并禁用它,否则回有干扰。
ssh登录路由,然后输入下面命令:
- root@OpenWrt:~# /etc/init.d/mwan3 stop
- root@OpenWrt:~# /etc/init.d/mwan3 disable
- root@OpenWrt:~#
复制代码 或者在OpenWrt界面, “系统”-->"启动项", 选择mwan3, 关闭并禁用。
4) IPV6 - NAT配置
内网IPv6地址,可以随机生成 fd00::/8网段地址,也可以自己手工输入。例如: fd00:100:100::/48, 范围fd00:100:100:xxxx::/64, 其中的xxxx可以为: 0,1,2,..., ffff一共6万多个子网。
在LUCI界面的“网络”-->“接口”-->"全局网络选项", 输入“fd00:100:100::/48”即可。 由于通常终端的地址段为/64, 所以这里也可以输入为: fd00:100:100:xx00::/56等,其中xx可以为: 0,1,2, ..., ff。
如果不想使用内网IPv6地址,就把这里清空即可。
5) 添加IPv6的默认路由
由于OpenWrt系统的IPv6默认路由,格式都是: "default from 2xxxx:xxxxx::/64 via xxxx"等格式(带from xxxx),导致可能某些IPv6地址段无法匹配上网。因此需要添加不带from格式的默认路由:
SSH登录进入路由,在目录下"/etc/hotplug.d/iface"建立文件, 90-ipv6, 内容如下,然后根据自己路由替换部分内容(ifname, device, METRIC的值):
(其中ifname的值,通过脚本中添加 "echo $INTERFACE >> /tmp/haha.txt" 得到, device值可以输入ip -6 route得到。)
- root@OpenWrt:~# cd /etc/hotplug.d/iface/
- root@OpenWrt:/etc/hotplug.d/iface# vi 90-ipv6
- #!/bin/sh
- [ "$ACTION" = ifup ] || exit 0
- ifname=wan_6
- device=pppoe-wan
- [ -z "$ifname" -o "$INTERFACE" = "$ifname" ] || exit 0
- METRIC=300
- ip -6 route add `ip -6 route show default| grep $device | grep via | sed -e 's/from [^ ]* //' |sed -e 's/metric [^ ]* //' | sed -e '2,$d'` metric $METRIC
- #ip -6 route add `ip -6 route show default| grep $device | grep via | sed -e 's/from [^ ]* //' | sed -e '2,$d'`
- logger -t IPv6 "Add IPv6 default route for WANCMCC with metric=$METRIC."
- root@OpenWrt:/etc/hotplug.d/iface#
复制代码
6) 防火墙
防火墙默认配置:
为了使得IPv6的内网IPv6地址也能NAT上网,在防火墙的自定义规则处(网络-->防火墙-->自定义规则),加入如下内容:
- #add ipv6 NAT
- ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- ip6tables -A FORWARD -i br-lan -j ACCEPT
- ip6tables -t nat -A POSTROUTING -s fd00:100:100::/48 -j MASQUERADE
复制代码
3. 总结及FAQ
1) wan口已经获得IPV6的GUA地址 IPv6-PD, 但是设备不能上网
A: 这里只提供一种情况, 就是默认的负载均衡,其配置在“负载均衡” -->"接口"-->mwan接口, 处,
对接口是否激活以及启用是通过ping的方式。如果不用负载均衡,请关闭并禁用它,一般都能解决。(见上文配置)
2) 内网IPv6地址不能上网
A: 检查是否配置了自定义的防火墙规则。然后用ping测试。
ssh进入Openwrt系统, 然后控制台输入ping命令(例如国内的公共IPv6DNS 240c::6666) :
- root@OpenWrt:~# ping -I fd00:100:100::1 240c::6666
- PING 240c::6666 (240c::6666) from fd00:100:100::1: 56 data bytes
- 64 bytes from 240c::6666: seq=0 ttl=53 time=81.043 ms
- 64 bytes from 240c::6666: seq=1 ttl=53 time=81.244 ms
- 64 bytes from 240c::6666: seq=2 ttl=53 time=81.196 ms
- ^C
- --- 240c::6666 ping statistics ---
- 3 packets transmitted, 3 packets received, 0% packet loss
- round-trip min/avg/max = 81.043/81.161/81.244 ms
- root@OpenWrt:~#
复制代码
Windows 下面ping:
- ping -S fd00:100:100:xxxxx(你PC的ipv6内网地址) 240c::6666
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|