PPP AAA
MikroTik RouterOS 的 PPP AAA 功能提供认证、授权和计费,支持本地与 RADIUS。PPP 配置文件(profile)为用户访问记录定义默认设置,包括网桥配置、速率限制以及加密和压缩等安全选项。
PPP AAA
摘要
子菜单: /ppp
MikroTik RouterOS 提供可扩展的认证、授权和计费(AAA)功能。
本地认证使用 User Database(用户数据库)和 Profile Database(配置文件数据库)执行。给定用户的实际配置由以下部分组成:User Database 中对应的用户记录、Profile Database 中关联的条目,以及 Profile Database 中为给定服务设为默认的条目(该用户正就此服务进行认证)。Profile Database 中的默认配置文件设置优先级最低,而 User Database 中的用户访问记录设置优先级最高,唯一的例外是:在 local-address 和 remote-address 设置中,特定 IP 地址优先于 IP 地址池,后文会对此进行说明。
对 RADIUS 认证的支持使 ISP 或网络管理员能够从一个服务器管理整个大型网络中的 PPP 用户访问和计费。MikroTik RouterOS 具有一个 RADIUS 客户端,可为 PPP、PPPoE、PPTP、L2TP、OpenVPN 和 ISDN 连接进行认证。从 RADIUS 服务器收到的属性会覆盖默认配置文件中设置的属性,但如果某些参数未收到,则取自相应的默认配置文件。
用户配置文件(Profile)
子菜单: /ppp/profile
PPP 配置文件(profile)用于为存储在 /ppp/secret 子菜单下的用户访问记录定义默认值。/ppp/secret User Database 中的设置会覆盖对应的 /ppp/profile 设置,但当指定为 local-address 或 remote-address 参数时,单个 IP 地址始终优先于 IP 地址池。
属性
| Property | Description |
|---|---|
| address-list (string; Default: ) | ppp 分配(在服务器上)或接收(在客户端上)的地址将被添加到的 地址列表 名称。 |
| remote-ipv6-prefix-reuse (no | yes; Default: no) | 如果指定了 "remote-ipv6-prefix-pool" 并且其中包含单个 "/64" 前缀,则该前缀只能用于单个 PPP 客户端以进行 RADVD 配置。当此选项设置为值 "yes" 时,使用此 PPP 配置文件的所有客户端都可以重复使用同一前缀。 |
| bridge (string; Default: ) | ppp 接口将作为从端口添加到的 网桥 接口名称。两个隧道端点(服务器和客户端)都必须位于该网桥中才能使其正常工作,更多详细信息请参阅 bridging 手册。 |
| bridge-horizon (integer 0..429496729; Default: ) | 用于动态创建的网桥端口的 split-horizon 值。可用于防止网桥环路和隔离流量。为一组端口设置相同的值,可防止它们向具有相同 horizon 值的端口发送数据。 |
| bridge-learning (default | no | yes; Default: default) | 更改动态创建的网桥端口上的 MAC 学习行为:yes - 启用 MAC 学习no - 禁用 MAC 学习default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 yes 相同 |
| bridge-path-cost (integer 1..200000000; Default: ) | 用于动态创建的网桥端口的路径开销,STP/RSTP 用它来确定最佳路径,MSTR 用它来确定区域之间的最佳路径。当网桥 protocol-mode 设置为 none 时,此属性无效。 |
| bridge-port-priority (integer 0..240; Default: ) | 用于动态创建的网桥端口的优先级,STP/RSTP 用它来确定根端口,MSTP 用它来确定区域之间的根端口。当网桥 protocol-mode 设置为 none 时,此属性无效。 |
| bridge-port-vid (integer 1..4094; Default: 1) | 用于为动态创建的接口分配 PVID 参数。仅当网桥 vlan-filtering 设置为 yes 时,此属性才有效。 |
| bridge-port-trusted(no | yes;Default: no) | 用于将动态创建的接口设置为 DHCP trusted。 |
| change-tcp-mss (yes | no | default; Default: no) | 修改连接 MSS 设置(仅适用于 IPv4):yes - 调整连接 MSS 值no - 不调整连接 MSS 值default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同 |
| comment (string; Default: ) | 配置文件注释 |
| dhcpv6-lease-time (string; Default: ) | 租用时间可从 7.20ab202 起设置,默认时间设置为 1d。 |
| dhcpv6-pd-pool (string; Default: ) | 当客户端连接时,动态创建的 DHCPv6 服务器 将使用的 IPv6 地址池 名称。 Read more >> |
| dhcpv6-use-radius (no | yes; Default: no) | 指定为动态生成的 DHCPv6 PD 服务器所选的 "use-radius" 选项的值。 |
| dns-server (IP; Default: ) | 提供给 PPP 客户端的 DNS 服务器 IP 地址 |
| idle-timeout (time; Default: ) | 指定在没有活动的情况下,链路将在多长时间后终止。默认不设置超时 |
| incoming-filter (string; Default: ) | 传入数据包的防火墙链名称。指定的链将控制来自客户端的每个数据包。必须手动添加 ppp 链,并将 action=jump jump-target=ppp 的规则添加到其他相关链,此功能才能生效。更多信息请参阅 Examples 部分。 |
| insert-queue-before (bottom | first | queue name ; Default: ) | 将新队列插入为最后一个、第一个或指定队列之前 |
| interface-list (interface list name; Default: ) | 指定配置文件接口将添加到的接口列表 |
| local-address (IP address | pool; Default: ) | 隧道地址或用于在本地为 ppp 接口分配地址的 地址池 名称 |
| name (string; Default: ) | PPP 配置文件名称 |
| on-up (script; Default: ) | 在用户登录事件时执行脚本。以下是事件脚本可访问的变量:userlocal-addressremote-addresscaller-idcalled-idinterface interface 变量将返回接口 id 值,而不是接口名称。 |
| on-down (script; Default: ) | 在用户注销时执行脚本。更多详细信息请参阅 on-up |
| only-one (yes | no | default; Default: default) | 定义是否允许用户同时拥有多个 ppp 会话yes - 不允许用户同时拥有多个 ppp 会话no - 允许用户同时拥有多个 ppp 会话default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同 |
| outgoing-filter (string; Default: ) | 传出数据包的防火墙链名称。指定的链将控制发往客户端的每个数据包。必须手动添加 PPP 链,并将 action=jump jump-target=ppp 的规则添加到其他相关链,此功能才能生效。更多信息请参阅 Examples 部分。 |
| parent-queue (none | queue name; Default: ) | 指定父队列 |
| queue-type (default | ethernet-default | wireless-default | synchronous-default | hotspot-default | pcq-upload-default | pcq-download-default | only-hardware-queue | multi-queue-ethernet-default | default-small | custom queue type name ; Default: ) | 指定队列类型。从 7.19 开始,可以为客户端的 "upload" 和 "download" 分别指定 rx/tx 的队列类型。使用 / 配置单独的队列类型,首先是 rx 队列类型,然后是 tx 队列类型。 |
| rate-limit (string; Default: ) | 从路由器角度而言,速率限制形式为 rx-rate[/tx-rate] [rx-burst-rate[/tx-burst-rate] [rx-burst-threshold[/tx-burst-threshold] [rx-burst-time[/tx-burst-time] [priority] [rx-rate-min[/tx-rate-min]]]](因此 "rx" 是客户端上传,"tx" 是客户端下载)。所有速率均以比特每秒为单位,除非带有可选的 'k' 后缀(千比特每秒)或 'M' 后缀(兆比特每秒)。如果未指定 tx-rate,则 rx-rate 也用作 tx-rate。这同样适用于 tx-burst-rate、tx-burst-threshold 和 tx-burst-time。如果 rx-burst-threshold 和 tx-burst-threshold 均未指定(但指定了 burst-rate),则使用 rx-rate 和 tx-rate 作为突发阈值。如果 rx-burst-time 和 tx-burst-time 均未指定,则使用 1s 作为默认值。Priority 取值为 1..8,其中 1 表示最高优先级,8 表示最低优先级。如果未指定 rx-rate-min 和 tx-rate-min,则使用 rx-rate 和 tx-rate 值。rx-rate-min 和 tx-rate-min 的值不能超过 rx-rate 和 tx-rate 的值。 |
| remote-address (IP; Default: ) | 隧道地址或用于为远程 ppp 接口分配地址的 地址池 名称。 |
| remote-ipv6-prefix-pool (string | none; Default: none) | 将 IPv6 地址池中的前缀分配给客户端并安装相应的 IPv6 路由。 |
| session-timeout (time; Default: ) | 连接可保持的最长时间。默认不设置时间限制。 |
| use-compression (yes | no | default; Default: default) | 指定是否使用数据压缩。yes - 启用数据压缩no - 禁用数据压缩default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同此设置不影响 OVPN 隧道。 |
| use-encryption (yes | no | default | require; Default: default) | 指定是否使用数据加密。yes - 启用数据加密no - 禁用数据加密default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同require - 明确要求加密此设置不适用于 OVPN 和 SSTP 隧道。 |
| use-ipv6 (yes | no | default | require; Default: default) | 指定是否允许 IPv6。默认情况下,如果安装了 IPv6 包,则启用。yes - 启用 IPv6 支持no - 禁用 IPv6 支持default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同require - 明确要求 IPv6 支持 |
| use-mpls (yes | no | default | require; Default: default) | 指定是否允许基于 PPP 的 MPLS。yes - 启用 MPLS 支持no - 禁用 MPLS 支持default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同require - 明确要求 MPLS 支持 |
| use-upnp (yes | no | default; Default: default) | 指定是否允许 UPnP:yes - 启用 UPnP。no - 禁用 UPnP。default - 从接口默认配置文件派生此值;如果这是接口默认配置文件,则与 no 相同。 |
| wins-server (IP address; Default: ) | 提供给 Windows 客户端的 WINS 服务器 IP 地址 |
说明
这两个默认配置文件无法删除:
[admin@rb13] /ppp/profile> print
Flags: * - default
0 * name="default" use-compression=no use-encryption=no only-one=no
change-tcp-mss=yes
1 * name="default-encryption" use-compression=default use-encryption=yes
only-one=default change-tcp-mss=default
[admin@rb13] /ppp/profile>
incoming-filter 和 outgoing-filter 参数会将动态跳转规则添加到链 ppp,其中 jump-target 参数将等于配置文件中的 incoming-filter 或 outgoing-filter 参数。因此,在更改这些参数之前,应手动添加链 ppp。
如果使用 RADIUS 认证,则忽略 only-one 参数。
PPP 隧道使用 LCP 协议进行 MTU 协商,这在连接建立时立即发生。不支持 Framed MTU 属性,因为它仅在通过 Radius 认证后才会发送。
用户数据库
子菜单: /ppp/secret
PPP User Database 存储 PPP 用户访问记录,并为每个用户分配 PPP 用户配置文件。
属性
| Property | Description |
|---|---|
| caller-id (string; Default: ) | 对于 PPTP 和 L2TP,它是客户端必须从中连接的 IP 地址。对于 PPPoE,它是客户端必须从中连接的 MAC 地址(以大写字母书写)。对于 ISDN,它是客户端可以拨入的呼叫方号码(可能由运营商提供,也可能不提供) |
| comment (string; Default: ) | 用户的简短描述。 |
| disabled (yes | no; Default: no) | 是否使用该 secret。 |
| limit-bytes-in (integer; Default: 0) | 客户端在会话中可上传的最大字节数。 |
| limit-bytes-out (integer; Default: 0) | 客户端在会话中可下载的最大字节数。 |
| local-address (IP address; Default: ) | 将在 ppp 接口上本地设置的 IP 地址。 |
| name (string; Default: ) | 用于认证的名称 |
| password (string; Default: ) sensitive | 用于认证的密码 |
| profile (string; Default: default) | 要使用的用户配置文件 |
| remote-address (IP; Default: ) | 将分配给远程 ppp 接口的 IP 地址。 |
| remote-ipv6-prefix (IPv6 prefix; Default: ) | 分配给 ppp 客户端的 IPv6 前缀。该前缀会添加到 ND 前缀列表,从而在 ppp 接口上启用无状态地址自动配置。 |
| routes (string; Default: ) | 客户端连接时出现在服务器上的路由。路由格式为:dst-address gateway metric(例如 10.1.0.0/ 24 10.0.0.1 1)。其他语法不可接受,因为它可能被错误地表示。可以指定多条路由,并用逗号分隔。对于 OpenVPN,将忽略此参数。 |
| service (any | async | isdn | l2tp | pppoe | pptp | ovpn | sstp; Default: any) | 指定特定用户能够使用的服务。 |
活动用户
子菜单: /ppp/active
此子菜单允许监控活动(已连接)用户。
/ppp/active/print 命令将显示所有当前已连接的用户。
/ppp/active/print stats 命令将显示接收/发送的字节和数据包
属性
| Property | Description |
|---|---|
| address (IP address) | 客户端从服务器获取的 IP 地址 |
| bytes (integer) | 通过此连接传输的字节数。第一个数字表示从路由器角度看的发送流量,第二个数字表示接收流量。 |
| caller-id (string) | 对于 PPTP 和 L2TP,它是客户端连接的来源 IP 地址。对于 PPPoE,它是客户端连接的来源 MAC 地址。 |
| encoding (string) | 显示此连接中使用的加密和编码(如果非对称,则用 '/' 分隔) |
| limit-bytes-in (integer) | 允许用户发送到路由器的最大字节数。 |
| limit-bytes-out (integer) | 允许用户发送到客户端的最大字节数。 |
| name (string) | 在认证阶段提供的用户名 |
| packets (integer/integer) | 通过此连接传输的数据包数量。第一个数字表示从路由器角度看的发送流量,第二个数字表示接收流量 |
| service (async | isdn | l2tp | pppoe | pptp | ovpn | sstp) | 用户正在使用的服务类型。 |
| session-id (string) | 显示唯一的客户端标识符。 |
| uptime (time) | 用户的上线时间 |
远程 AAA
子菜单: /ppp/aaa
此子菜单中的设置允许设置 RADIUS 计费和认证。请注意,只有在本地用户数据库中找不到所需用户名时,才会查询 RADIUS 用户数据库。
属性
| Property | Description |
|---|---|
| accounting (yes | no; Default: yes) | 启用 RADIUS 计费 |
| interim-update (time; Default: 0s) | Interim-Update 时间间隔 |
| use-radius (yes | no; Default: no) | 启用通过 RADIUS 的用户认证。如果在本地 secret 数据库中找不到条目,则客户端将通过 RADIUS 进行认证。 |
| enable-ipv6-accounting (yes | no; Default: no) | 启用 IPv6 单独计费。默认情况下,PPP 服务在向 RADIUS 服务器报告网络使用统计信息时,会将二层、IPv4 和 IPv6 数据一起计数。如果需要区分 IPv4 和 IPv6 流量,则可以启用此选项。其工作的先决条件是必须通过 PPP 服务向客户端分配前缀,并且还必须提供 rate-limit。动态创建的队列统计信息将用作 IPv6 数据的计数器,随后这些数据将作为单独的 IPv6 统计属性包含在计费数据包中。对于由动态创建的 DHCPv6 服务器分配的前缀,由于所提供的地址池或 PPP/Profile 配置,此功能将不起作用。此时前缀分配由 DHCP 服务处理,而不是 PPP,因此计费无法由 PPP 服务管理。 |
示例
添加新配置文件
要添加配置文件 ex,为路由器本身分配 10.0.0.1 地址,并将 ex 地址池中的地址分配给客户端,同时通过 mypppclients 链过滤来自客户端的流量:
[admin@rb13] /ppp/profile> add name=ex local-address=10.0.0.1 remote-address=ex incoming-filter=mypppclients
[admin@rb13] /ppp/profile> print
Flags: * - default
0 * name="default" use-compression=no use-vj-compression=no use-encryption=no only-one=no
change-tcp-mss=yes
1 name="ex" local-address=10.0.0.1 remote-address=ex use-compression=default
use-vj-compression=default use-encryption=default only-one=default change-tcp-mss=default
incoming-filter=mypppclients
2 * name="default-encryption" use-compression=default use-vj-compression=default use-encryption=yes
only-one=default change-tcp-mss=default
[admin@rb13] /ppp/profile>
添加新用户
要添加用户 "ex",密码为 "lkjrht",配置文件为 "ex",且仅可用于 PPTP 服务,请输入以下命令:
[admin@rb13] /ppp/secret> add name=ex password=lkjrht service=pptp profile=ex
[admin@rb13] /ppp/secret> print
Flags: X - disabled
# NAME SERVICE CALLER-ID PASSWORD PROFILE REMOTE-ADDRESS
0 ex pptp lkjrht ex 0.0.0.0
[admin@rb13] /ppp/secret>