当前位置: 首页 > news >正文

openwrt利用nftables在校园网环境下开启nat6 (ipv6 nat)

年初写过一篇openwrt在校园网环境下开启ipv6 nat的文章,利用ip6tables控制ipv6的流量。然而从OpenWrt22版本开始,系统内置的防火墙变为nftables,因此配置方法有所改变。本文主要参考了OpenWRT使用nftables实现IPv6 NAT
这篇文章。

友情提示

如果你的学校分配64的后缀,可以先试试把lan口的dhcp改为中继模式,因为lan口设备能获得global地址是最理想的情况。如果像我一样获得了global地址却无法上网,或者学校只分配128后缀地址的话,可以继续按照本文方法配置NAT6。

准备工作

  1. 软路由一个
  2. OpenWrt-22.xx或以上版本镜像
  3. 让WAN口获得ipv6地址(大多数固件默认能够获得ipv6地址,如果你有特殊情况请自行解决一下)

ps. 我用的路由器是redmi ax3000 (RA81),固件是从openwrt.ai编译得到的。如果你的型号和我一样,欢迎在这里下载固件直接使用。

详细步骤

1. 编辑 /etc/config/dhcp 文件,配置lan口dhcp6服务

config dhcp 'lan' 下修改/添加以下配置:

option ra 'server'
option dhcpv6 'server'
option ra_management '1'
option ra_default '1'
2. 编辑 /etc/config/firewall 文件,设定ipv6地址转换
config natoption name 'IPv6 Masquerade'option family 'ipv6'option src 'wan'option target 'MASQUERADE'list proto 'all'
3. 编辑 /etc/nftables.d/10-custom-filter-chains.nft 文件,降低防火墙匹配延迟
chain user_post_forward {ct state established,related acceptiifname br-lan accept
}
4. 手动指定网关

(1) 终端执行ip -6 route | grep default获取默认网关

输出结果示例:
default from 2001:da8:1111:2222::333 via fe80::5616:51ff:fe56:8fb9 dev wan proto static metric 512 pref medium

(2) 利用默认网关和设备构造命令
将上一步获取到的网关及设备粘贴到route -A inet6 add default gw后面,构造出一条命令

构造的命令示例:
route -A inet6 add default gw fe80::5616:51ff:fe56:8fb9 dev wan

(3) 把构造好的命令添加进系统启动项
编辑/etc/rc.local文件,将构造的命令添加到最后一行 exit 0的上方

5. 重启路由

备注

  • 测试结果:
    通过ipv6测试

  • OpenWrt默认分配前缀为fd00::/8的地址作为内网地址,可能会让某些应用更倾向于不使用ipv6(从其他地方看的,我不确定到底有哪些?)。因此可以把这个前缀改为dd00::/8,因为dd前缀的网址作为保留地址没有明确的用途,可以避免应用识别内网ipv6。这个可以通过修改 /etc/config/network 文件中的 globals 配置实现,也可以在 luci界面 -> 网络 -> 接口 -> 全局网络选项 修改。

http://www.lryc.cn/news/496403.html

相关文章:

  • 24.12.02 Element
  • 记录QT5迁移到QT6.8上的一些问题
  • 清理Linux/CentOS7根目录的思路
  • 【LInux】kvm添加u盘启动引导
  • .net XSSFWorkbook 读取/写入 指定单元格的内容
  • GaussDB(类似PostgreSQL)常用命令和注意事项
  • 【HM-React】02. React基础-下
  • 【力扣热题100】—— Day3.反转链表
  • 【k8s深入学习之 event 记录】初步了解 k8s event 记录机制
  • redhat 7.9配置阿里云yum源
  • 深入探索Flax:一个用于构建神经网络的灵活和高效库
  • Nginx auth_request详解
  • 基于Java Springboot个人财务APP且微信小程序
  • vue3图片报错转换为空白不显示的方法
  • mysq之快速批量的插入生成数据
  • 浅谈C#库之DevExpress
  • 聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透
  • 一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
  • Flink四大基石之CheckPoint(检查点) 的使用详解
  • JVM 常见面试题及解析(2024)
  • Python 调用 Umi-OCR API 批量识别图片/PDF文档数据
  • K8S资源之secret资源
  • QT:信号和槽01
  • 针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
  • XML 查看器:深入理解与高效使用
  • 《Vue零基础入门教程》第十五课:样式绑定
  • 以AI算力助推转型升级,暴雨亮相CCF中国存储大会
  • 【VMware】Ubuntu 虚拟机硬盘扩容教程(Ubuntu 22.04)
  • 3D Bounce Ball Game 有什么技巧吗?
  • 【SQL】实战--组合两个表