MACVLAN
MACVLAN 允许在物理接口上创建多个具有唯一 MAC 地址的虚拟网络接口,从而实现高效的 IP 地址管理和独立的 PPPoE 连接。它在 MAC 层工作,不使用 VLAN 标记,但存在接收数据包受限等限制,并且在桥接场景中需要谨慎配置。
MACVLAN
MACVLAN 提供了一种创建多个虚拟网络接口的方法,每个接口都拥有自己唯一的媒体访问控制(MAC)地址,并附加到一个物理网络接口上。该技术用于满足特定的网络需求,例如从单个物理以太网接口获取多个 IP 地址,或在使用不同 MAC 地址的情况下建立独立的 PPPoE 客户端连接。与依赖带有 VLAN 标识的以太网帧的传统 VLAN(虚拟局域网)接口不同,MACVLAN 在 MAC 地址层面工作,是特定网络场景下通用且高效的解决方案。
信息
MACVLAN 接口只能接收广播数据包、发往其自身 MAC 地址的数据包以及有限数量的组播地址。如果物理接口配置了 VLAN,则 MACVLAN 接口无法接收来自该 VLAN 的数据包。
对于桥接以及涉及 VLAN 的更复杂第 2 层解决方案,应改用专用交换机。
基本配置示例
设想这样一个场景:ether1 接口连接到您的 ISP,而您的路由器需要租用两个 IP 地址,每个地址具有不同的 MAC 地址。传统上,这需要使用两个物理以太网接口和一个额外的交换机。然而,更高效的解决方案是创建一个虚拟 MACVLAN 接口。
要创建 MACVLAN 接口,请选择所需的以太网接口。如果未手动指定,系统将自动分配一个 MAC 地址:
/interface/macvlan
add interface=ether1 name=macvlan1
/interface/macvlan/print
Flags: R - RUNNING
Columns: NAME, MTU, INTERFACE, MAC-ADDRESS, MODE
# NAME MTU INTERFACE MAC-ADDRESS MODE
0 R macvlan1 1500 ether1 76:81:BF:68:69:83 bridge
现在,可以在 ether1 和 macvlan1 接口上创建 DHCP 客户端:
/ip/dhcp-client
add interface=ether1
add interface=macvlan1
属性参考
子菜单: /interface/macvlan
MACVLAN 接口的配置设置。
| Property | Description |
|---|---|
| arp (disabled | enabled | local-proxy-arp | proxy-arp | reply-only; Default: enabled) | 地址解析协议设置<code>disabled</code> - 接口将不使用 ARP<code>enabled</code> - 接口将使用 ARP<code>local-proxy-arp</code> - 路由器在接口上执行代理 ARP 并向同一接口发送回复<code>proxy-arp</code> - 路由器在接口上执行代理 ARP 并向其他接口发送回复<code>reply-only</code> - 接口仅回复来自匹配的 IP 地址/MAC 地址组合的请求,这些组合作为静态条目输入到 IP/ARP 表中。不会自动在 IP/ARP 表中存储动态条目。因此,为了使通信成功,必须已存在有效的静态条目。 |
| arp-timeout (auto | integer; Default: auto) | 设置在没有从 IP 收到数据包后,ARP 记录在 ARP 表中保留的时间。值 auto 等于 /ip/settings/ 中 arp-timeout 的值,默认为 30s。 |
| comment (string; Default: ) | 接口的简短描述。 |
| disabled (yes | no; Default: no) | 更改接口是否被禁用。 |
| interface (name; Default: ) | MACVLAN 将操作的底层接口名称。MACVLAN 接口可以创建在任何具有 MAC 地址的接口上。Warning: 不支持在 MACVLAN 接口之上添加 VLAN 接口。不支持在已桥接或已绑定的接口上添加 MACVLAN。 |
| loop-protect (on | off | default; Default: default) | 在接口上启用或禁用 loop protect,default 的作用相当于关闭。 |
| loop-protect-disable-time (time interval | 0; Default: 5m) | 设置检测到环路时禁用所选接口的时长。0 - 永久。 |
| loop-protect-send-interval (time interval; Default: 5s) | 设置所选接口上发送 loop protect 数据包的频率。 |
| mac-address (MAC; Default: ) | 接口的静态 MAC 地址。未指定时将分配一个随机生成的 MAC 地址。 |
| mode (private | bridge; Default: bridge) | 设置 MACVLAN 接口模式:<code>private</code> - 不允许同一父接口上的 MACVLAN 实例之间通信。<code>bridge</code> - 允许同一父接口上的 MACVLAN 实例之间通信。 |
| mtu (integer; Default: 1500) | 设置第 3 层最大传输单元。对于 MACVLAN 接口,它不能高于父 interface。 |
| name (string; Default: ) | 接口名称。 |