200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 潘多拉固件设置ipv6_OpenWRT IPv6配置

潘多拉固件设置ipv6_OpenWRT IPv6配置

时间:2021-09-19 20:07:05

相关推荐

潘多拉固件设置ipv6_OpenWRT IPv6配置

关于在OpenWRT上如何配置IPv6的方法,自己总结的一点,欢迎各位大神们指正错误!硬件为网件(Netgear)WNDR 4300/3700,OpenWRT固件为Chaos Calmer 15.05.1

1. OpenWRT IPv6主要实现方式有以下几种:IPv6 中继

IPv6 穿透

IPv6 NAT下文皆假设OpenWRT为初始化配置2. IPv6 中继2.1 简介中继模式可以让接入客户端获取原生的IPv6地址,OpenWRT路由器也获取了一个IPv6地址。如图2-1所示,所有接入的客户端将IPv6流量转发到OpenWRT路由器的IPv6地址,然后OpenWRT路由器再将流量转发到其IPv6网关,同时IPv4的NAT模式不受影响。2.2 配置实现方式有两种方式可以实现IPv6中继:Barrier Breaker 14.07版本之后,不再支持,不推荐使用

Barrier Breaker 14.07版本之后推荐使用,不是很稳定。升级到Chaos Calmer 15.05.1稳定性提高很多,但是IPv6网络仍会偶尔中断配置文件修改OpenWRT在默认情况下,会分配一个IPv6私网地址段,登录网页管理,在Network->Interfaces页面底下有Global network options->IPv6 ULA-Prefix这里应该有一个随机的fd开头的/64IPv6地址段,清空该地址并保存SSH登录路由器,修改/etc/config/dhcp文件,添加如下部分,使用无状态地址自动配置(SLAAC)IPv6,不使用DHCPv6。

config dhcp 'lan'

option dhcpv6 'disabled'

option ra 'relay'

option ndp 'relay'

config dhcp 'wan6'

option interface 'wan'

option dhcpv6 'disabled'

option ra 'relay'

option ndp 'relay'

option master '1'

修改之后保存,重启odhcpd服务,否则接入终端无法获取IPv6地址

配置保存这种方式可以让接入路由器的终端,获取原生的IPv6地址。需要注意的是,每次路由器重启上述配置并不会生效,需要重启下odhcpd服务,接入路由器的终端方可获取IPv6地址。可以在开机启动脚本/etc/rc.local中添加如下脚本,每次开机系统启动30秒后重启odhcpd服务

2.3 总结以下为个人测试的一些经历IPv6中继方式在Netgear路由器上测试成功,其他品牌路由器以IPv6中继方式可以获取IPv6原生地址,但是无法访问IPv6网络

会偶尔无法访问IPv6网络,重启接入终端的网络适配器之后,又可以访问IPv6网络

3. IPv6 穿透3.1 简介NetGear官方固件支持IPv6穿透模式,接入终端可以获取原生IPv6地址。基于OpenWRT固件也可以配置IPv6穿透模式解决思路:将路由器的WAN口、LAN口以及WiFi桥接起来,以brctl实现

WAN口、LAN口以及WiFi桥接之后,此时OpenWRT相当于一个交换机,此时WAN口、LAN口以及WiFi都相当于交换机接口。

ebtables工作在数据链路层,利用ebtables控制所有非IPv6流量进行路由,IPv6流量仍为交换模式3.2 配置软件包安装安装ebtables,安装之后,会自动加载相关的模块

网卡查看查看当前桥接,其中eth0.1为OpenWRT缺省使用的VLAN1(LAN)对应的虚拟网卡,wlan0、wlan1为无线网卡,三者共同桥接到网桥br-lan上,br-lan同时提供了DHCP功能,为接入终端提供IPv4私有IP地址root@OpenWrt:~#brctl showbridge name bridge id STP enabled interfacesbr-lan 7fff.e4f4c6e90d5a no eth0.1 wlan0 wlan1通过ifconfig命令或者OpenWRT网页管理页面,可以知晓OpenWRT缺省使用VLAN2(WAN)的虚拟网卡为eth0.2ebtables配置ebtables工作在数据链路层,有三个表: filter, nat 和broute。这里使用broute(Bridge table)表,将所有来自WAN口(eth0.2)的非IPv6流量进行路由根据broute表有内建的链:BROUTING。在broute表中,DROP和ACCEPT有特殊的意义(为了保持通用实现性,没有增加其他字段),DROP字段的意思为数据帧需要被路由,ACCEPT字段的意思为数据被桥接传输(交换模式)

ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i eth0.2

现在需要将eth0.2桥接到br-lan,使得LAN能接收到WAN的IPv6数据包

brctl addif br-lan eth0.2

此时已经实现了IPv4路由模式,IPv6交换模式odhcp服务关闭此时应该关闭odhcpd服务,同时将br-lan所有关于IPv6选项均置为disabled。/etc/init.d/odhcpd stop/etc/init.d/odhcpd disable若不关闭odhcp服务,logread命令查看,会产生大量相关的日志Fri Apr 21 15:45:07 daemon.warn odhcpd[1262]: DHCPV6 SOLICIT IA_NA from 0001000111111111111111 on br-lan: no addresses available

3.3 路由器IPv6地址配置

路由器IPv6地址IPv6穿透模式导致了OpenWRT路由器无法获取在WAN6口IPv6地址,这样导致了路由器无法使用IPv6网络进行离线下载解决方案1因为WAN口、LAN口以及WiFi都现在都桥接到网桥br-lan,所以路由器的WAN口、LAN口以及WiFi无法获取IPv6地址,如果想让路由器获取IPv6地址,可以将WAN6口分配给一个新的物理接口。创建VLAN3,将一个物理接口分配给VLAN3

将WAN6分配到VLAN3

将VLAN3对应的物理接口连接到能获取IPv6地址的网口按照上面的思路,前提条件为WAN口所在为VLAN2,实践方式有如下的三种:添加一个交换机,额外成本为需要多使用一台交换机。

根据上面的思路,需要添加一台交换机,那么可以在路由器上再额外添加一个VLAN4,相当于一台交换机。但是缺点就是每次数据包都要两次经过路由器,增加了路由器的处理负担。如果路由器只有五个物理接口的话,则LAN所在的VLAN1无物理接口。

将VLAN1(LAN)的某个物理接口接到VLAN3的物理接口,但是Linux内核会报错,错误内容为br-lan: received packet on eth0.1 with own address as source address。所以这种方法不推荐!3.4 总结如果不进行额外配置,该模式下,OpenWRT路由器无法获取IPv6地址

不要先运行brctl addif br-lan eht0.2命令,如果忘记运行ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i eth0.2命令,路由器就完全成为交换机模式,会导致br-lan的DHCP广播、ARP广播等数据涌入局域网4. IPv6 NAT

4.1简介虽然IPv6在设计之初,没有考虑NAT,在主流的网络设备上也没有IPv6的NAT配置,但 Linux 内核从 3.7 版本开始实现了 IPv6 的 NAT4.2 设置软件包安装安装相应的软件包 opkg update

opkg install ip6tables kmod-ipv6 kmod-ipt-nat6 kmod-ip6tables kmod-ip6tables-extra luci-proto-ipv6 iputils-traceroute6

kmod-ipv6并非必须

kmod-ipt-nat6提供IPv6的NAT支持

ip6tables,·kmod-ip6tables,kmod-ip6tables-extra等提供IPv6防火墙

luci-proto-ipv6为LuCI提供IPv6设置选项

iputils-traceroute6为IPv6提供traceroute功能(mtr是个不错的支持双栈的traceroute替代品,占用的存储空间相对大些)IPv6私网地址OpenWRT在默认情况下,会分配一个IPv6私网地址段,在Network->Interfaces页面底下有Global network options->IPv6 ULA-Prefix这里应该有一个随机的fd开头的/64IPv6地址段,LAN客户端可以从这个地址段自动获取私有的IPv6地址,IPv6私网地址网关配置缺省配置下,LAN客户端获取的私有IPv6地址没有IPv6网关的在Network->Interfaces->LAN下的DHCP Server部分的IPv6 Settings选项卡部分,勾选Always announce default router,否则OpenWRT不会向LAN客户端推送OpenWRT私有的IPv6网关地址为了确保设置生效,最好重启路由器NAT设置客户端有了私有的IPv6地址之后,私有地址可以单向路由到互联网中的,但是无法被路由回LAN客户端。因此需要在OpenWRT上开启IPv6 NAT。在默认情况下,OpenWRT防火墙不会配置ip6tables的NAT表,因此在OpenWRT命令下手动添加如下规则ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADEip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTip6tables -A FORWARD -i br-lan -j ACCEPT

eth0.2为OpenWRT的获取全球可路由IPv6地址的WAN口名称,这个名字不是防火墙区域名字,也不是LuCI里面Network->Interfaces里面看到的名字,而是ifconfig看到的网卡名字

br-lan为LAN口对应名称,也是通过ifconfig看到的网卡名字路由条目添加到当前设置,接入终端可以访问OpenWRT的IPv6公网所在网段,不能访问该网段以外的IPv6地址,原因不明,查看IPv6路由表,发现存在默认路由。添加全球可路由IPv6聚合路由可解决该问题。查询下一跳IPv6本地链路地址root@OpenWrt:~# route -A inet6 | grep ::/0 | awk '{print $2}'fe80::3a22:d6ff:febf:1b00

查询下一跳IPv6全局地址root@OpenWrt:~# traceroute6 -n | grep '^ 1' |awk '{print $2}'2001:xxx:xxx:xxx:3a22:d6ff:febf:1b00

现在可知fe80::3a22:d6ff:febf:1b00为下一跳的IPv6本地链路地址,2001:xxx:xxx:xxx:3a22:d6ff:febf:1b00为下一跳的IPv6全局地址。然后添加全球可路由IPv6地址的聚合路由条目,WAN6出口虚拟网卡为eth0.2,出口虚拟网卡名称通过命令uci -q get network.wan6.ifname查看,下面两条命令中的任意一条,都可以添加全球可路由IPv6聚合路由条目。route -A inet6 add 2000::/3 gw fe80::3a22:d6ff:febf:1b00 dev eth0.2route -A inet6 add 2000::/3 gw 2001:xxx:xxx:xxx:3a22:d6ff:febf:1b00 dev eth0.2

配置保存每次重启,添加的ip6tables会消失,因此添加到开机启动cat <>/etc/rc.local ip6tables -t nat -A POSTROUTING -o eth0.2 -j MASQUERADE ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT ip6tables -A FORWARD -i br-lan -j ACCEPTEOF

如果IPv6环境发生改变,路由器的IPv6网关也会随之改变,因此创建 /etc/hotplug.d/iface/90-ipv6脚本,修改文件属性为755,内容如下[ "$ACTION" = ifup ] || exit 0

[ "$INTERFACE" = wan6 ] && { route -A inet6 add ::/0 gw $(traceroute6 -n | grep '^ 1' |awk '{print $2}') dev $(uci -q get network.wan6.ifname) #route -A inet6 add 2000::/3 gw $(route -A inet6 | grep ::/0 | awk '{print $2}') dev $(uci -q get network.wan6.ifname)}

4.3 总结该方式适用于只有OpenWRT能获取IPv6全局地址的情况下,例如路由器通过隧道或者VPN等方式获取的IPv6地址

该方式在原生IPv6环境下不推荐使用,经过测试,BT下载速率不会高于5MB/s

5. 实现方式对比[td]实现方式原生地址速率路由器获取IPv6地址适用环境问题

IPv6 中继是很好可以原生IPv6偶尔中断

IPv6 穿透是很好不可以原生IPv6路由器IPv6手动配置

IPv6 NAT否一般可以其他速率慢

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。