Tutorial: Forward Multicast Traffic Between VPN Clients Across Multiple Daemons in Access Server⁠

Overview⁠

OpenVPN Access Server can allow UDP multicast and IGMP traffic between VPN clients. In a single-daemon configuration, the vpn.routing.allow_mcast configuration key allows multicast and IGMP traffic to pass through Access Server.

Multi-daemon mode requires additional configuration. By default, Access Server runs one UDP and one TCP OpenVPN daemon per CPU core. Each daemon has its own Linux tun interface, named as0t0, as0t1, and so on. VPN clients connected through different daemons can therefore be on different as0t interfaces.

For multicast forwarding between these clients, the Access Server host must route multicast traffic between VPN interfaces.

This tutorial configures SMCRoute, a third-party static multicast routing daemon for Linux, to forward multicast traffic between the as0t interfaces. SMCRoute isn't included with Access Server and isn't installed, managed, or upgraded by OpenVPN.

If you only need to enable multicast and IGMP without routing between multiple VPN daemons, see Tutorial: Allow UDP Multicast and IGMP to Pass Through.

Example setup⁠

In this example, two VPN clients exchange traffic using multicast group 239.1.1.1.

  • The caster sends traffic to 239.1.1.1.

  • The subscriber joins 239.1.1.1.

  • The clients are connected through different OpenVPN daemons and therefore different as0t interfaces.

Prerequisites⁠

Before you begin, ensure you have:

  • Access Server installed on Ubuntu 22.04, 24.04, or 26.04.

  • Console access and the ability to get root privileges.

  • At least two CPU cores on the Access Server.

Firewall backend⁠

This tutorial includes configuration for both nftables and iptables mode.

Access Server 3.1.0 and newer uses nftables by default. Follow the nftables instructions in Step 7 unless your deployment is explicitly configured to use iptables.

If Access Server 3.1.0 or newer has been switched to iptables mode with: xtables=iptables, follow the iptables instructions instead.

For additional background, see Tutorial: Managing nftables Settings in Access Server and Tutorial: Managing iptables Settings in Access Server.