IPoE 认证开源自建方案

2022-09-12 12:10:53 +08:00
 acbot

最近讨论 IPoE 话题比较多,研究了一下 IPoE 认证开源自建方案,其中有些许问题大家来探讨一下:

PPPoE 认证方案是:radius + pppoe-server 因为所有会话都是由 pppoe-server 的来处理,权限控制也很清晰; 802.1x 认证方案是:交换机 + radius ,交换机来处理授权后的会话;

介绍 IPoE 认证流程的文档很多,但是具体实施的文档很少,基于开源方案的实施方案就更少了,所以一直有一个问题:IPoE 认证后会话控制是由一个服务端(类似 pppoe-server )来集中处理还是支持特定协议硬件来处理,如果这两者都没有仅仅是 DHCP Server 控制 DHCP 这个阶段那么不是漏洞很大(比如:手动配置一个 IP )

4498 次点击
所在节点    宽带症候群
28 条回复
jousca
2022-09-12 12:53:30 +08:00
你总觉得做 BARS 的工程师会把问题考虑不全……
jousca
2022-09-12 13:06:17 +08:00
NE40E V800R010C10SPC500 配置指南-------配置 IPoE 接入业务

https://support.huawei.com/enterprise/zh/doc/EDOC1100055086/88b1198f
gyorou
2022-09-12 13:55:46 +08:00
说一下我的理解。
ipoe 的大前提是使用 ipv6 。v6 不需要认证可以直接介入。
v6 虽然有 dhcp 但是基本上配置子网不需要 dhcp 。
节点可以多播申请自己的 ip 。
路由器可以多播地址配置相关信息。
节点收到路由器的多播的子网前缀,可以用 mac 地址或其他方式补全自己的子网地址。
会话控制? 三层的话路由器的防火墙规则算吗?
至于其他一些什么 v4 over v6 可能每家运营商都有不同解决方法。
acbot
2022-09-12 14:54:29 +08:00
@jousca 其实我知道 BARS 能做这些, 这里应该是我没有说清楚,我的意思是利用开源方案来自己搭建一个这样的认证环境。怪我
acbot
2022-09-12 15:04:00 +08:00
@gyorou ipoe 可以做认证,并且是认证后 dhcp 才下发 ip. 我的问题是我没有看到接入控制方面的介绍,因为如果他仅仅是在下法阶段,那么我知道 DHCP 信息的话我不是可以自己配置一个 IP 不就可以了吗? 他应该还有一个硬件或者是会话方面的东西。
sujin190
2022-09-12 15:13:18 +08:00
静态地址需要 arp 协议接受的,当然不走 arp 知道 mac 地址直接发包也行,不过 ipoe 只是用 dhcp ,最简单的不过是 dhcp 分配再直接做 mac 和 ip 地址绑定就行,dhcp 过期时解绑,这样不需要改动网络协议你自己设置 ip 也是没用的
gyorou
2022-09-12 15:18:14 +08:00
我猜的。
路由器接收到子节点的 RS 请求,根据子节点的硬件做一些判断,如果 ok 就进行 RA 多播配置地址前缀等信息。
acbot
2022-09-12 15:41:50 +08:00
@sujin190 也就是说 类似 802.1x 认证方案,IPoE 还需要特定的交换机这种硬件支持才行?
sujin190
2022-09-12 15:57:55 +08:00
@acbot 个人觉得 ipoe 应该算是只定义了实现流程,比如通过 dhcp 协议传递校验信息和管理会话过期,但实际服务端如何做校验、如何实现会话管理和 qos 并没有严格详细规定,这似乎也就是各家运营商在大结构固定但具体实现却又不完全统一的原因,而且吧所以在 openwrt 这样常用路由固件中并没有看到通用实现
jousca
2022-09-12 16:10:52 +08:00
@acbot IPOE 只是定义流程,具体怎么认证各设备商的方法不太一样。 我 2 楼帖的华为配置方式。

思科又是另外一种方法
https://content.cisco.com/chapter.sjs?uri=/searchable/chapter/content/en/us/td/docs/routers/asr9000/software/bng/command/reference/b-bng-cr-asr9k/b-bng-cr-asr9k_chapter_01010.html.xml
acbot
2022-09-12 17:28:00 +08:00
@sujin190
@jousca 请参看一下我附言 2 吧
sendmailtest123
2022-09-12 18:12:40 +08:00
IPoE 既然是承载在以太网帧(~二层)上的 IP 报文(~三层),在当今标准以太接入大环境下只是个普通 IP 数据包。。。因此规范的认证方式只有基于 MAC/IP/VLAN 判断接入用户或 /和地点而已,也就是思科 /华为默认支持的认证方式。同时,两家的配置文档均有提到 “订户接口 Subscriber Interface” 这一概念:一种虚拟接口,用 VLAN 对应某客户的某一业务,且维护一个状态机(~会话)来指导报文转发。常见例子就是 PON 接入专线大抵采用基于 IP 认证的 IPoE:用户填入专线的静态地址,BRAS 分析用户设备与自身的交互报文(可以是 ARP ,ICMP 这类的) IP 头段是否为该用户订阅地址,只有符合才将会话上线使能报文转发(好比配置该订户接口防火墙策略在状态机 down 时为丢弃、online 时才为转发。不过这点是我猜的,但底层实现上应该类似)。需要避免用户随意盗用不属于自己的 IP 地址?当收到源 IP 不属于该订户的入向报文,直接将状态机置 down 中止后续报文转发。总的来说,标准 IPoE 只要在用户侧三层接口在填入合适的 IP/MAC/VLAN 参数后即可上网,从而印证常见路由固件并不需要额外模块来适配这一协议,因为它们早就支持了。

那么动态分配 IPv4 场景下 BRAS 要如何验证报文 IP 头部是否匹配,控制用户的会话状态机呢:问 DHCP 。不管是用 DHCP Snooping 这种安全技术,还是用特定的组网方式,运营商只要能确保 BRAS 自身或带外服务器间 DHCP 交互是可信的,就可以参照这些交互报文来控制客户状态机的上下线。比如,只有上游 DHCP 服务器返回 Offer 且客户端接受了,才让会话上线。后续则可以持续监控客户侧 IP 是否匹配 DHCP 下发的地址,遇不匹配就让客户状态机下线等。像电信的 CTC 协议就在 DHCP Option 字段做文章(/t/875362 ),设备需要与 DHCP 服务器互相挑战应答用户名密码(业务是否欠费等先决条件大概是在这里得到验证)才能获取到 DHCP Offer 回应。

至于 IPv6 单栈(/t/875742 ,/t/875467 )场景,目前的方案看起来是 DHCPv6 绑定光猫上行口 MAC 下发固定前缀,且在订户接口上配置静态 v6 认证。
PMR
2022-09-12 18:15:51 +08:00
对牛弹琴

自配地址 上游没过认证 流量能出去? .1x 认证不过 同样可分发个 isolated ip 等重新认证过后分发 ip

认证无非 aaa/webauth

对抗非法 dhcp 有 dhcp snooping


看#2 的手册就能理解 ipoe 流程 小白理论都不晓 只适用 1 键包
acbot
2022-09-12 19:39:30 +08:00
@PMR 我觉得吧,还是应该理解我说的重点!你这是连标题都没看明白,更不要说我的附言了。我的重点是在实现,不是弄一套现有大厂的东西
acbot
2022-09-12 19:40:09 +08:00
@PMR ”开源+实现“
acbot
2022-09-12 19:50:58 +08:00
@sendmailtest123 谢谢!

”那么动态分配 IPv4 场景下 BRAS ... 才能获取到 DHCP Offer 回应。“ 其实这段就应该是我关心的问题,这段流程是单独的软件实现还是需要交换机或者是某种协议的支持? 简答的说我在不使用大厂成套设备和方案的情况下能否用开源的软件和非定制的常规设实现整个接入认证。 具体的可以参考一下 我附言二
PMR
2022-09-12 21:49:49 +08:00
哈哈 还真是牛

通用协议 有统一标准 任何人都可以按 draft 实现

几大 RouterOS 的 PPP/l2tp/ipoe 等都是基于某个 free software 构建


伸手党不是这样做的
sendmailtest123
2022-09-12 21:51:04 +08:00
@acbot 假设我的说法和运营商、大厂的实际实现相匹配,那扩展一个开源 DHCP 服务器使其能够识别挑战应答 Option 并针对性处理、决定需不需要返回 DHCP Offer 就可以了。。当然你也可以选择不处理扩展字段无脑返回 DHCP Offer ,随便一种 DHCP 服务器都可以实现这个功能。

说到底目前部署 IPoE 地区认证全脱胎于 DHCP ,DHCP 是完全不需要交换机硬件或某种特定协议支持的(这里先不考虑 BRAS 的用户上线控制,后续讨论见下)。另外,上面多层回复均提出非标准 IPoE 认证方式没有统一、且 CTC 的那套挑战应答(大概)还没被逆向出来、加上考虑到 IPoE 尚未完全铺开(或许以后每个省采用的认证标准都要额外加点料称作创新呢),通用实现会比较难做。说到这我其实好奇你想自主实现接入认证后作何种用途。。。

若要实现类似于 BRAS 上的状态机来阻止转发未认证用户流量,纯自主实现就需要 DHCP 服务器和路由网关能够联动了。例:自己写或合理运用开源 DHCP 服务器(例如 ISC Kea )的钩子接口,在 DHCP 发放地址同时执行外部代码放通用户接口的转发能力(默认阻塞)。若采用大厂设备(~三层交换机)则好办:它们一般提供诸如 IPSG 、DAI 、DHCP Snooping 等端口安全功能。关闭接口 ARP 学习能力后,设备内部 IP-MAC/ARP 对应表将完全通过监听 DHCP 报文维护,那不属于 DHCP 分配的地址(自配 IP )的报文会直接被丢弃,体验上和先前提到的 BRAS 用户上线控制技术类似。
acbot
2022-09-13 08:04:30 +08:00
@PMR 如果按照你的逻辑使用大厂的产品和解决方案不更是伸手党了吗?理论一套一套的,就是纸上谈兵无法落实,你才牛,求你你就别发言了吧,你的理解能力有问题!
acbot
2022-09-13 08:12:03 +08:00
@sendmailtest123 谢谢指教!

”说到这我其实好奇你想自主实现接入认证后作何种用途...“ 毕竟其他认证方式都有成熟的开源实现方案,于是想看自己能不能搭建一个实验环境来研究研究,这样更容易理解一些问题,所以仅仅是出于好奇。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX