Актуальное решение на сегодня.
С версии 6.47 добавили в DNS функцию split-dns, поэтому новый конфиг выглядит так:
/ip dns static add comment="OpenNIC - dns relay" forward-to=185.121.177.177,51.15.98.97,2a01:4f8:1c0c:80c9::1 regexp=".*(\\.bbs|\\.chan|\\.cyb|\\.dyn|\\.geek|\\.gopher|\\.indy|\\.libre|\\.neo|\\.null|\\.o)\$" type=FWD
/ip dns static add comment="OpenNIC - dns relay" forward-to=185.121.177.177,51.15.98.97,2a01:4f8:1c0c:80c9::1 regexp=".*(\\.oss|\\.oz|\\.parody|\\.pirate|\\.opennic.glue|\\.dns\\.opennic\\.glue)\$" type=FWD
/ip dns static add comment="OpenNIC - dns relay" forward-to=185.121.177.177,51.15.98.97,2a01:4f8:1c0c:80c9::1 regexp=".*(\\.bazar|\\.coin|\\.emc|\\.lib|\\.fur1|\\.bit|\\.ku|\\.te|\\.ti|\\.uu)\$" type=FWD
где
185.121.177.177,
51.15.98.97,
2a01:4f8:1c0c:80c9::1
адреса серверов OpenNIC.
Старое решение
Делал так:
/ip firewall layer7-protocol add comment="OpenNIC - dns relay" name=OpenNIC regexp="^.+(.bbs|.chan|.cyb|.dyn|.geek|.gopher|.indy|.libre|.neo|.null|.o|.oss|.oz|.parody|.pirate|.opennic.glue|.dns.opennic.glue).*\$"
/ip firewall nat add action=dst-nat chain=dstnat comment="OpenNIC - dns relay" connection-mark=OpenNIC-forward to-addresses=185.121.177.177
/ip firewall nat add action=masquerade chain=srcnat comment="OpenNIC - dns relay" connection-mark=OpenNIC-forward
/ip firewall mangle add action=mark-connection chain=prerouting comment="OpenNIC - dns relay" dst-address=192.168.254.1 dst-port=53 layer7-protocol=OpenNIC new-connection-mark=OpenNIC-forward passthrough=yes protocol=tcp
/ip firewall mangle add action=mark-connection chain=prerouting comment="OpenNIC - dns relay" dst-address=192.168.254.1 dst-port=53 layer7-protocol=OpenNIC new-connection-mark=OpenNIC-forward passthrough=yes protocol=udp
192.168.254.1 - адрес своего роутера, который указан в качестве DNS на клиенте.
185.121.177.177 - адрес резолвера (
https://wiki.opennic.org/doku.php#anycast_tier_2_d... )
P.S.
Возможно RegExp написан неправильно, ибо делал методом тыка.