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 接口的配置设置。

PropertyDescription
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: )接口名称。