Перенос директории данных на внешний носитель - gSpotx2f/ruantiblock_openwrt GitHub Wiki

После установки ruantiblock можно перенести директории с данными (/tmp/ruantiblock и /tmp/dnsmasq.d, которые содежржат создаваемые модулями файлы со списками блокировок для nftables и dnsmasq) на внешний носитель, т.е. на флешку или HDD подключенные к роутеру. При стандартной установке файлы со списками блокировок находятся в оперативной памяти, что может быть нежелательно если свободной памяти мало. Расположение данных на внешнем носителе позволяет сохранить список блокировок после перезагрузки роутера, а также отключить автоматическое обновление блэклиста каждый раз при старте системы.

Для переноса директорий, естественно, необходимо наличие подключенного и настроенного внешнего диска с файловой системой ext. Далее предполагается что диск смонтирован в /opt.

Начиная с OpenWrt 24.10 у каждого экземпляра dnsmasq своя директории конфигов в /tmp. Имя директории содержит имя экземпляра: /tmp/dnsmasq.имя_экземпляр.d. Далее в командах будет использоваться первая найденная папка конфигов dnsmasq в директории /tmp. В обычном случае в системе присутствует лишь один стандартный экземпляр dnsmasq и это будет его папка конфигов (в примере обозначена как /tmp/dnsmasq.d, но может иметь название, например, /tmp/dnsmasq.cfg01411c.d и т.п.).

1. Перенос директорий данных в /opt/var/ruantiblock (на внешний диск):

export DNSMASQ_CONFDIR="/tmp/$(ls -1 /tmp | awk '/^dnsmasq/{print $0; exit}')"
mkdir -p /opt/var/ruantiblock /opt/var/dnsmasq.d
mv -f /tmp/ruantiblock/* /opt/var/ruantiblock
mv -f ${DNSMASQ_CONFDIR}/* /opt/var/dnsmasq.d

2. Монтирование папок с внешнего носителя:

mount --bind /opt/var/ruantiblock /tmp/ruantiblock
mount --bind /opt/var/dnsmasq.d $DNSMASQ_CONFDIR

3. Запись команд создания директории /tmp/ruantiblock и монтирования в /etc/rc.local, для выполнения при старте системы (перед строкой exit 0!):

awk '{if($0 ~ "exit 0"){printf "mkdir -p /tmp/ruantiblock\nmount --bind /opt/var/ruantiblock /tmp/ruantiblock\nmount --bind /opt/var/dnsmasq.d " ENVIRON["DNSMASQ_CONFDIR"] "\nexit 0"}else{print $0}}' /etc/rc.local > /tmp/rc.local && mv /tmp/rc.local /etc/rc.local

так должен выглядеть результат в /etc/rc.local:

mkdir -p /tmp/ruantiblock
mount --bind /opt/var/ruantiblock /tmp/ruantiblock
mount --bind /opt/var/dnsmasq.d /tmp/dnsmasq.d

4. Отключение автоматического обновления блэклиста при старте системы:

uci set ruantiblock.config.update_at_startup="0"
uci commit ruantiblock

Теперь директории /tmp/ruantiblock и /tmp/dnsmasq.d (в оперативной памяти) смонтированы в директории /opt/var/ruantiblock и /opt/var/dnsmasq.d (на внешнем носителе). Обновление блэклиста не будет выполняться при старте системы (только по расписанию cron), а файлы со списком блокировок будут сохраняться после перезагрузки роутера.