• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. Linux
  3. 正文

OpenWrt 内网下发 IPv6

2019年04月29日 99点热度 2人点赞 0条评论
2019-02-02 from--https://i-meto.com/openwrt-ipv6/

2018 年 4 月,工业和信息化部发布了关于贯彻落实《推进互联网协议第六版 (IPv6) 规模部署行动计划》的通知,大力推广下一代互联网技术 IPv6。

时至今日,高校教育网以及各大运营商已经基本支持了 IPv6 地址的分配。然而绝大多数家庭的路由器还不能支持自动下发,因此并没有享受到下一代互联网的快感。

这里主要介绍使用 OpenWrt/LEDE 来解决内网设备分配 IPv6 的问题。

想要让路由器下的设备获得 IPv6 地址通常有三种方式:relay(中继)、NAT(地址转换)、Passthrough(穿透)。下面分三个部分谈谈具体的配置方案。

中继模式(relay)

OpenWrt 早在 15.05 就内置了 relay 协议,具体是通过 odhcpd 来实现的。

这种方案可以让子网设备分到公网 IPv6 的地址,是最为科学的,然而 odhcpd 的实现有很多 bug,在实际使用中有时候会掉线,需要重启服务才能解决,因此在部分设备上体验不佳。

具体操作如下

进入路由器终端

$ ssh [email protected]

编辑 dhcp 配置文件,修改如下

$ vi /etc/config/dhcp

config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option ra 'relay'
    option ndp 'relay'
    option dhcpv6 'relay'
    option ra_management '1'

config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

config dhcp 'wan6'
    option interface 'wan'
    option ra 'relay'
    option ndp 'relay'
    option dhcpv6 'relay'
    option master '1'

编辑 network 文件,将地址第一个字母 f 修改为 d

$ vi /etc/config/network

config globals 'globals'
    option ula_prefix 'dd53:abcd:abcd::/48'

最后重启即可

穿透模式(Passthrough)

Passthrough 的原理是将内外网进行桥接,然后对 IPv4 流量采用 NAT 方式进行转发,稳定性相当好,唯一的缺点就是路由器自身会失去 IPv6 的访问,因此如果想在路由器上做离线下载等功能就会非常麻烦。

配置如下

安装 ebtables 和 kmod-ebtables-ipv6 模块

$ opkg update 
$ opkg install ebtables kmod-ebtables-ipv6

设置 IPv4 转发

$ interface=`ip -6 route | grep "default from" | awk '{print $7}'` 
$ ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i $interface 

内外网桥接

$ brctl addif br-lan $interface

杀死 odhcpd

$ /etc/init.d/odhcpd stop 
$ /etc/init.d/odhcpd disable 

点击 LAN 接口的 edit 按钮进入设置,在 IPv6 Settings 选项卡中勾上 Always announce default router

做完这些步骤,稍等一会儿子网设备就会分到相应的公网 IPv6 地址了

IPv6-Passthrough
系统设置 – 网络

地址转换(NAT)

IPv6 的设计之初是没有 NAT(网络地址转换)这种东西的, 但 Linux 内核从 3.7 版本开始实现了 IPv6 的 NAT。因此这种方案实际上是「歪门邪道」,更要命的是路由器下的设备将会无法获得公网端口,BT/PT 的上传速度受到了很大影响。

Padavan 的 Linux 内核原生不支持 NAT6,不到万不得已,尽量选用其它两种方案

具体操作如下

  1. 进入软件(soft)配置界面安装 ip6tables 和 kmod-ipt-nat6 模块
  2. 打开网络(Network)菜单下的接口(Interfaces),把最下面的 IPv6 ULA-Prefix 改为 2fff::/64
  3. 点击 LAN 接口的 edit 按钮进入设置,在 IPv6 Settings 选项卡中勾上 Always announce default router.
  4. 进入启动项管理 ,把以下命令添加入启动配置(在 exit 0 前),实现开机启动,最后重启即可。
res=`ip -6 route | grep "default from"`
gateway=`echo $res | awk '{print $5}'`
interface=`echo $res | awk '{print $7}'`

if [ "$ACTION" = ifup ]; then
    ip -6 r add default via $gateway dev $interface
    if !(ip6tables-save -t nat | grep -q "v6NAT"); then
        ip6tables -t nat -A POSTROUTING -o $interface -m comment --comment "v6NAT" -j MASQUERADE
    fi
else
    ip6tables -t nat -D POSTROUTING -o $interface -m comment --comment "v6NAT" -j MASQUERADE
    ip -6 r del default via $gateway dev $interface
fi

端口映射

以上方案除了 NAT 方案外,可以开启 UPnP 进行高位端口映射,优化 BT/PT 体验。

方案如下

  1. 安装 miniupnpd 和 luci-app-upnp 两个软件包
  2. 在 services 下的 upnp 面板中开启即可
uTorrent
uTorrent

测试机型

方案测试通过机型,不保证其它版本可用,欢迎反馈。

Model Version
NETGEAR WNDR4300 OpenWrt 18.06.2
NETGEAR WNDR4300 LEDE 17.01.4
Phicomm k3 OpenWrt snapshots
psg1218(K2) OpenWrt 18.06.2
psg1218(K2) LEDE 17.01.3
Hiwifi HC5661A LEDE snapshots
Newifi mini Y1 LEDE 17.01.3

参考资料

  • https://openwrt.org/docs/guide-user/network/ipv6/start
  • https://lixingcong.github.io/2017/04/24/ipv6-nat-lede/
  • https://github.com/tuna/ipv6.tsinghua.edu.cn/issues/7
标签: 暂无
最后更新:2019年04月29日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
钛备份或小米系统备份功能备份出来的APK无法正常还原 BBR安装启用 安装docker mitmproxy 调试方法 Android SDK 版本选择 Perdition Mail代理服务器配置 HAProxy SSL代理 Openssl 中间人SSL代理 Stunnel SSL to SSL代理 NGINX反代IMAP配置 各种设备User Agent Torrent下载工具推荐 用 rar2john+hashcat 破解 RAR 文件密码 2020最好的Linux发行版 关闭新版chrome工具栏上拼图图标 Office 下载、安装、激活,有它就够了! Android 非官方的发行版 openwrt添加autoconf-archive
NGINX反代IMAP配置Stunnel SSL to SSL代理Openssl 中间人SSL代理HAProxy SSL代理Perdition Mail代理服务器配置Android SDK 版本选择mitmproxy 调试方法安装dockerBBR安装启用钛备份或小米系统备份功能备份出来的APK无法正常还原
如何禁用samba身份验证 隐藏可移动设备列表中不希望出现的硬件 树莓派五合一传感器模块(湿度/温度/气压/高度/光线 ) 湿度功能使用教程 chromium和webrtc编译相关资料 Ubuntu 系统 SSD固态硬盘检查4K对齐以及开启Trim selenium webdriver 你所不知道的quit 和close Linux安装bbr Office 下载、安装、激活,有它就够了! Android SDK 版本选择 Linux下的ip命令,代替ifconfig SSH无需密码密钥登录 常用 Git 命令清单   Mysql开启远程连接方法 安裝unstable Release Debian方式 SQL Server中利用正则表达式替换字符串 超微主板风扇频繁切换转速 CentOS 7 为firewalld添加开放端口及相关资料 Oracle 12c 使用scott等普通用户的方法
标签聚合
镜像 安装 https yum linux 路由 ssl chrome 下载 密码 docker e blog git 网卡 chromium

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS