1. 为什么要在OpenWRT上折腾双栈PPPoE服务器?
如果你和我一样,是个喜欢在家里“瞎捣鼓”网络设备的爱好者,那你肯定对OpenWRT不陌生。它就像给路由器刷了个“超级系统”,能干很多原厂固件干不了的事儿。今天咱们聊的这个话题,可能有点小众,但特别有意思:在OpenWRT上自己搭建一个同时支持IPv4和IPv6的PPPoE服务器。
听起来是不是有点“自己给自己开宽带”的感觉?没错,它的核心作用就是这个。想象一下,你家里可能有多台设备,或者有个小工作室,你希望内网里的某些设备(比如另一台路由器、一个虚拟机集群或者一个独立的测试网络)能像从运营商那里拉了一条宽带一样,通过PPPoE拨号的方式,从你的主OpenWRT路由器上获取独立的IP地址和网络连接。而且,现在IPv6越来越普及,很多应用和网站都开始拥抱它,所以一个双栈(既支持IPv4也支持IPv6)的服务就显得尤为重要了。
我当初折腾这个,主要是为了做网络隔离和测试。比如,我想让家里的智能家居设备跑在一个完全独立的网段里,或者想模拟一个小型ISP的环境来测试一些网络应用。用PPPoE来做这个隔离,比简单的VLAN或者子网划分更彻底,因为每个拨号上来的客户端都像是一个独立的“租户”,有自己独立的认证和IP分配过程,管理和追踪起来也更清晰。
当然,这个过程需要一点耐心,也需要对Linux命令行和OpenWRT的配置逻辑有一些基本的了解。但别担心,我会把每一步都掰开了、揉碎了讲,尽量避开那些我当初踩过的坑。只要你跟着步骤走,即使你是第一次接触OpenWRT的高级功能,也能成功搭建起来。咱们的目标是:让你的OpenWRT路由器,不仅能上网,还能“发宽带”!
2. 动手前的准备工作:打好地基
老话说得好,磨刀不误砍柴工。在开始配置PPPoE服务器之前,我们必须确保OpenWRT本身的基础网络环境是健康且支持双栈的。如果基础没打好,后面的配置就像在沙滩上盖楼,随时可能出问题。
2.1 确认你的OpenWRT版本和硬件
首先,你得有一个已经刷好OpenWRT的路由器。版本建议选择相对较新且稳定的版本,比如21.02或22.03系列。太老的版本可能缺少一些必要的IPv6组件或内核模块。你可以通过SSH登录到路由器,用 cat /etc/openwrt_release 命令查看具体版本信息。
硬件方面,路由器的性能要足够。运行PPPoE服务器本身消耗不大,但如果你打算带多个客户端,或者同时开启其他重度服务(比如科学上网、Docker等),那么一个性能强劲的主路由(比如使用MT7621、IPQ806x等芯片的设备)会更有保障。内存最好有128MB以上,闪存16MB以上。
2.2 配置并验证OpenWRT的双栈网络环境
这是最关键的一步。你的OpenWRT主路由必须能够正常获取到运营商的IPv4和IPv6地址,并且能将其正确地NAT或路由到内网。对于IPv6,我们通常采用一种叫 “NAT6” 或 “有状态DHCPv6+PD前缀分发” 的模式。这里我以最常见的“NAT6”模式为例,因为它对上游网络要求低,配置简单。
-
登录OpenWRT的LuCI网页管理界面,进入“网络” -> “接口”。你应该能看到WAN口已经正确获取了IPv4地址(通常是PPPoE拨号或DHCP客户端)。对于IPv6,你需要确保WAN6接口也能获取到IPv6地址(比如一个2408开头的公网地址或PD前缀)。
-
配置LAN口的IPv6。编辑LAN接口,在“DHCP服务器”标签页下,找到“IPv6设置”:
- RA服务:选择“服务器模式”。
- DHCPv6服务:选择“服务器模式”。
- NDP代理:选择“禁用”。
- 在“高级设置”里,勾选“使用内置的IPv6管理”。这个选项会启用
odhcpd服务来管理IPv6地址分配。
-
配置IPv6防火墙和NAT。这是实现NAT6的关键。我们需要添加一些防火墙规则。通过SSH登录路由器,执行以下命令:
# 允许IPv6转发 ip6tables -P FORWARD ACCEPT # 在nat表的POSTROUTING链上添加MASQUERADE规则,将LAN内设备的IPv6流量进行地址伪装 ip6tables -t nat -A POSTROUTING -o `uci get network.wan.device` -j MASQUERADE注意:`` 部分需要替换成你WAN口实际使用的网络设备名,比如
pppoe-wan或eth0.2。你可以用uci get network.wan.ifname命令查看。 -
保存防火墙规则。OpenWRT重启后防火墙规则会重置,我们需要把它保存到配置文件中。编辑
/etc/firewall.user文件,将上面的ip6tables命令添加进去(去掉开头的#注释符号):ip6tables -P FORWARD ACCEPT ip6tables -t nat -A POSTROUTING -o `uci get network.wan.device` -j MASQUERADE -
重启网络和防火墙,让配置生效:
/etc/init.d/network restart /etc/init.d/firewall restart -
验证环境。找一台电脑,用网线连接到OpenWRT的LAN口。确保电脑能自动获取到IPv4地址(如192.168.1.x)和IPv6地址(通常以
fd或dd8b开头的ULA地址,或者从运营商获取的公网地址)。然后进行测试:# 在电脑上打开命令行 ping 223.5.5.5 # 测试IPv4连通性 ping6 2400:3200::1 # 测试IPv6连通性(阿里云IPv6 DNS)如果
1万+



被折叠的 条评论
为什么被折叠?



