V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acbot
V2EX  ›  宽带症候群

IPoE 认证开源自建方案

  •  
  •   acbot · 2022-09-12 12:10:53 +08:00 · 4679 次点击
    这是一个创建于 802 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  2022-09-12 15:01:01 +08:00
    前面应该没有描述太清楚,这里的问题是:IPoE 如何做的接入控制,是有类似 PPPoE Server 这样集中会话控制还是在二层协议中实现,不然如果仅仅是 DHCP 控制阶段来控制,那么如果我知道现有 DHCP 信息不是我自己手动配置一个不是就可以了吗? 其实我知道大厂提供整套方案但是他不能解释我的问题,就是这里面的实现原理
    第 2 条附言  ·  2022-09-12 17:28:08 +08:00
    PPPoE / IPoE / 802.1x 等各类型的认证最后目的不都还是做接入控制吗?比如:PPPoE 只有通过认证才建立会话,有了会话你的流量才能被 PPPoE Server 转发出去,接入控制结构很清晰,如果我要自己用开源软件搭建一个 radius 认证服务和 pppoe 会话服务,一个交换机出去其他接入的机器用网线接入这个交换机或者是接口就可以了; 802.1x 是通过支持改协议的交换机来实现控制功能,比如 我自己买一台支持 802.1x 的交换机自己部署一个 radius 服务就可以对接入设备认证了。而在 IPoE 认证环境中我一直不清楚他是如何做到未认证的设备禁止接入的,目前我只看到的资料他仅仅是控制了 DHCP ,而 DHCP 在 LAN 本身就可以不用的啊,比如我自己配一个固定地址
    28 条回复    2023-09-01 19:25:55 +08:00
    jousca
        1
    jousca  
       2022-09-12 12:53:30 +08:00
    你总觉得做 BARS 的工程师会把问题考虑不全……
    jousca
        2
    jousca  
       2022-09-12 13:06:17 +08:00
    NE40E V800R010C10SPC500 配置指南-------配置 IPoE 接入业务

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

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

    认证无非 aaa/webauth

    对抗非法 dhcp 有 dhcp snooping


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

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

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

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


    伸手党不是这样做的
    sendmailtest123
        18
    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
        19
    acbot  
    OP
       2022-09-13 08:04:30 +08:00
    @PMR 如果按照你的逻辑使用大厂的产品和解决方案不更是伸手党了吗?理论一套一套的,就是纸上谈兵无法落实,你才牛,求你你就别发言了吧,你的理解能力有问题!
    acbot
        20
    acbot  
    OP
       2022-09-13 08:12:03 +08:00
    @sendmailtest123 谢谢指教!

    ”说到这我其实好奇你想自主实现接入认证后作何种用途...“ 毕竟其他认证方式都有成熟的开源实现方案,于是想看自己能不能搭建一个实验环境来研究研究,这样更容易理解一些问题,所以仅仅是出于好奇。
    yangzhaofeng
        21
    yangzhaofeng  
       2022-09-13 13:53:04 +08:00
    用 isc-dhcp 好像就可以實現自建( server&client )但是需要自己寫一些腳本來增加一些函數
    acbot
        22
    acbot  
    OP
       2022-09-13 15:08:02 +08:00
    @yangzhaofeng 看之前 sendmailtest123 的解释,我的理解就是:用特定硬件(支持 IPSG 、DAI 、DHCP Snooping 等 DHCP 限定功能的交换机) + DHCP Server + Radius 来实现,目前没有已知类似 PPPoE 这种纯软件方式来实现。
    acbot
        23
    acbot  
    OP
       2022-09-13 15:10:20 +08:00
    @yangzhaofeng 你说的这种方式也算是一个思路!
    sendmailtest123
        24
    sendmailtest123  
       2022-09-13 16:32:29 +08:00
    @acbot 用三层交换机的内置功能算是现成方案,兴许 BRAS 上的类似功能厂商也是复用自己的交换产品线代码实现的,但“纯软件”实现也不是不可以:比如#21 和我都提到能自己扩展 DHCP 服务器(不管是改代码还是调用钩子,api,脚本)做到和 netfilter 之类的联动。无非就是没有现成的开包即用项目罢了 -- 目前来讲,花心思深入调试一下几个模块化的 DHCP 服务器,你想要的效果可以直接实现。
    acbot
        25
    acbot  
    OP
       2022-09-13 16:43:18 +08:00
    @sendmailtest123 ”...无非就是没有现成的开包即用项目罢了...“ 明白你的意思!
    zmcity
        26
    zmcity  
       2022-09-21 14:17:29 +08:00
    @acbot 自己配一个 ip ,交换机就给你的 arp 包当成攻击直接丢掉了。
    acbot
        27
    acbot  
    OP
       2022-09-21 16:08:16 +08:00
    @zmcity 这里仅仅是举例不是那么严谨,另外就是在我的周边环境中接触的更多的是傻瓜交换机这里可能也没有描述清楚。可能大家默认指的交换机就是网管交换机,这里也有区别
    woyaojizhu8
        28
    woyaojizhu8  
       2023-09-01 19:25:55 +08:00
    @gyorou
    @sendmailtest123 IPoE 可以防止伪装 mac 地址吗?伪装成合法设备的 mac 地址,可以在不知道认证用户名密码的情况下上网吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2884 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:19 · PVG 19:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.