Хорошо, на подсказку друга, который указал другой ответ SU на связанный вопрос ( Использование iptables для перенаправления IP-адреса ), а также некоторые эксперименты, проб и ошибок, я понял это. Вот, на случай, если это кому-нибудь тоже поможет:
Хитрость заключается в использовании iptables
NAT . Сначала мы выбираем наш (неназначенный / доступный) IP для использования в качестве нашего псевдонима. Что-то вроде 192.168.0.201 (то, что вы знаете, маршрутизатор не будет использовать). ПРИМЕЧАНИЕ: не используйте диапазон 127.0.0.x, потому что он не будет работать!
Затем вы добавляете это в sane
определение для сканера. В моем случае файл есть /etc/opt/brother/scanner/brscan4/brsanenetdevice4.cfg
. Поэтому я добавил эту строку:
DEVICE=brother-scanner-avahi-alias, "MFC-avahi-alias", Unknown, IP-ADDRESS=192.168.0.201
Затем я создал скрипт, содержащий следующее:
ALIAS_IP=192.168.0.201 BROTHER_UNIQ_STR=MFC-YOUR-MODEL-HERE BROTHER_SCANNER_IP=`avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN /^=/ { print $8}'` # $7 is the .local hostname # avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN /^=/ { print $7, $8}' # to complete this: iptables-save >/somepath/iptables.save Add to cron upon start up iptables-restore </somepath/iptables.save ######## echo Brother scanner IP: \'$BROTHER_SCANNER_IP\' if [[ $BROTHER_SCANNER_IP =~ ^[0-9]\.[0-9]\.[0-9]\.[0-9]$ ]]; then # enable IP forwarding in kernel: sysctl net.ipv4.ip_forward=1 # To make it permanent, edit /etc/sysctl.conf and ensure that the line "net.ipv4.ip_forward = 1" is there and not commented out. iptables -t nat -A OUTPUT -d $ALIAS_IP -j DNAT --to-destination $BROTHER_SCANNER_IP # Print the OUTPUT rules after our changes: # iptables -t nat -L iptables -t nat -L OUTPUT # If you really mess up, or want to get rid of all your rules (careful with this command!!) # TO DELETE ALL RULES ("F"lush) run: iptables -t nat -F OUTPUT else echo echo "ERROR: bad ip address" echo exit 1 fi
Запустите этот скрипт, и теперь sane
он сможет обнаружить ваш сканер по псевдониму IP-адреса. Затем вы можете добавить сценарий в задание cron или загрузочный сценарий (автозапуск или все, что использует ваша система), и он будет заботиться о вас каждый раз.
Скрипт должен запускаться от имени суперпользователя (root) или sudo.
Надеюсь, это поможет кому-то там.