Предположим, вам нужно будет создать одно правило для целой кучи интерфейсов вида int0, int1, …, intN, … Создавать на каждый интерфейс отдельное правило – слишком сложно, а если на каждый интерфейс не одно правило, а интерфейсов 20 или 100? на помощь приходят записи для группировки. И так, будет рассмотрены варианты для разных файерволов (для примера взяты интерфейсы tun0, tun1, …).
– ipfw
ipfw .... via tun*
А еще (это есть в мане, но я всё равно разжую), из серии “знаете ли вы, что…” — проверка функции iface_match() в ядре, которая обрабатывает recv/xmit/via (кусок исходника был выше), принимает не только имя интерфейса, но и IP-адреса, и даже шаблон имени в том же виде, в котором в шелле задаются имена файлов! То есть, можно написать (http://nuclight.livejournal.com/124348.html):
ipfw add 2 pipe 3 all from any to any in recv ng[23]?*
и это будет ловить интерфейсы с именами с ng200 по ng299 и c ng300 по 399, а также с ng20 по ng29 и c ng30 по 39 (на самом деле с любыми символами в названии после, но мы же знаем, что mpd сделает названия только с циферками).
– pf
pass ... on tun ...
– iptables
iptables ... -i tun+ ...
Примечание.
К сожалению конструкция pf’a не всегда работает. Как вариант можно использовать такую конструкцию:
vpn_if="{ ng0, ng1 }"
pass on vpn_if ...
Заметьте, без ‘$’ вначале.