LinuxCommandLibrary

ip-maddress

Display or modify multicast addresses

TLDR

List multicast addresses and how many programs are subscribed to them

$ ip [[m|maddress]]
copy

List device specific addresses
$ ip [[m|maddress]] [[s|show]] dev [ethX]
copy

Join a multicast group statically
$ sudo ip [[m|maddress]] [[a|add]] [33:33:00:00:00:02] dev [ethX]
copy

Leave a static multicast group
$ sudo ip [[m|maddress]] [[d|delete]] [33:33:00:00:00:02] dev [ethX]
copy

Display help
$ ip [[m|maddress]] [[h|help]]
copy

SYNOPSIS

ip maddr { add | del } dev STRING to IPADDR [ scope INTEGER ] [ metric INTEGER ]
ip maddr { show | flush } [ dev STRING ] [ to IPADDR ]

PARAMETERS

add
    Add multicast address to interface

del
    Delete multicast address from interface

show
    Display current multicast addresses

flush
    Remove matching multicast addresses

dev STRING
    Target network device (e.g., eth0)

to IPADDR
    Multicast group address (IPv4/IPv6)

scope INTEGER
    Multicast scope (0-255, default 0)

metric INTEGER
    Routing metric value (default 1)

DESCRIPTION

ip maddr (also invoked as ip maddress) is a command from the iproute2 suite for displaying, adding, deleting, and flushing IP multicast addresses bound to network interfaces. Multicast addresses enable efficient one-to-many communication, allowing interfaces to subscribe to specific multicast groups for protocols like IGMP/MLD, RTP streaming, or service discovery (e.g., mDNS, SSDP).

Kernel multicast filters track these subscriptions per device, directing relevant traffic. Use show to list current addresses, optionally filtered by device or group. add and del manipulate IPv4/IPv6 groups with optional scope (routing distance) and metric (preference). flush removes all or matching entries.

Requires root privileges via sudo or direct root access. Output includes interface, group address, scope, and metric. Essential for multicast-enabled networks, it replaces deprecated route multicast tools from net-tools. Supports both IPv4 (e.g., 239.0.0.1) and IPv6 (e.g., ff02::1) groups.

CAVEATS

Root privileges required. IPv6 needs kernel MLD support. Changes may not persist across reboots without persistent config (e.g., systemd-networkd). Flush affects all matching, use cautiously.

EXAMPLES

ip maddr show dev eth0 - List on eth0
ip maddr add dev eth0 to 239.1.2.3 - Subscribe eth0 to group
ip maddr del dev eth0 to ff02::1 - Remove IPv6 group
ip maddr flush dev lo - Clear loopback multicasts

OUTPUT FORMAT

Sample: eth0 inet6 ff02::1/96 scope link metric 1 (shows dev, family, group/prefix, scope, metric)

HISTORY

Part of iproute2 (since ~1999), developed by Alexey Kuznetsov for Linux 2.2+ advanced routing. Replaced net-tools (route); maintained by NetworkManager/iproute2 teams for modern kernels.

SEE ALSO

ip(8), ip-address(8), ip-neighbour(8), ss(8)

Copied to clipboard