Intereting Posts
Время выполнения вычисления pi в сценариях оболочки Как установить значение для mteHotContextName при использовании процесса мониторинга в SNMP touch & gzip все файлы HTML, CSS, JS в каталоге рекурсивно Зарегистрировать обратный вызов для вновь вставленного диска? cp –no-target-directory объяснен Правило IPTables DNAT для локального веб-сервера не работает с localhost? Есть ли способ указать список закрытых ключей для добавления в ssh-agent? `command` vs` type` – найти файл программы в PATH пользователя Как извлечь первую часть имен файлов с тем же суффиксом? Не удалось получить psk из сети с помощью wpa_cli оператор if else: проверьте, существует ли путь, сохраненный в переменной Nginx + PHP-FPM, обслуживающий файлы .php в качестве загрузок Debian: почему моя версия debian_version «buster / sid» после обновления с натяжения на тестирование Извлечь имена файлов дампов Как установить, какая оболочка использует Midnight Commander?

Как я могу использовать avahi без сетевого подключения?

Как я могу проверить программное обеспечение, использующее avahi, пока мой ноутбук отключен от любого маршрутизатора?

Все службы работают на одном компьютере, поэтому Avahi будет рекламировать IP-адрес 127.0.0.1 для всех сервисов.

В качестве примера я использую файл в /etc/avahi/services/postgresql.service для регистрации базы данных:

 $ cat /etc/avahi/services/postgresql.service <?xml version="1.0" standalone="no"?><!--*-nxml-*--> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name>my_database_name</name> <service> <type>_postgresql._tcp</type> <port>5432</port> </service> </service-group> 

Когда я подключен к маршрутизатору, avahi-browse показывает услугу:

 $ avahi-browse -a | grep my_database_name + wlan0 IPv6 my_database_name PostgreSQL Server local + wlan0 IPv4 my_database_name PostgreSQL Server local 

Когда я отключен от маршрутизатора, avahi-browse больше не показывает никаких сервисов, и мое программное обеспечение не может найти базу данных:

 $ avahi-browse -a 

Вот моя информация о интерфейсе, когда я отключен:

 $ ifconfig eth0 Link encap:Ethernet HWaddr f0:de:f1:ac:a6:37 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:20 Memory:f3900000-f3920000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:3637633 errors:0 dropped:0 overruns:0 frame:0 TX packets:3637633 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1242209987 (1.2 GB) TX bytes:1242209987 (1.2 GB) 

Я запускаю Ubuntu 14.04, но, возможно, вам придется делать это и в других дистрибутивах.

Обновление . Один из моих (занятых) друзей прислал мне следующее, чего я еще не смог выяснить:

Avahi, по своей природе, не будет должным образом привязываться к интерфейсу цикла. Вы можете либо включить фиктивный интерфейс (лучшее решение), либо включить немаршрутизируемый номер на физическом интерфейсе. (работает, но может быть проблематичным, если вы используете переходное соединение.)

Avahi требует, чтобы интерфейс имел MULTICAST флаг MULTICAST . То есть,

 ifconfig dummy0 multicast 

После того, как MULTICAST флаг MULTICAST , avahi автоматически рекламирует сервисы на этом интерфейсе, нет необходимости перезапускать или иным образом вступать в конфигурацию avahi, если интерфейс не запрещен в конфигурации avahi.

Я сделал кое-что, и этот билет в трекере проекта Chromim звучит так, как вы. Билет: выпуск 288385: P2P: напишите фальшивую сеть avahi / zeroconf для имитации частной сети сверстников, имеет следующее описание:

Член проекта, зарегистрированный де … @ chromium.org, 9 сентября 2013 г.

Мы хотим запустить тесты P2P на одной машине, приманив остальных сверстников. Для этого требуется изолировать трафик avahi / zeroconf, чтобы не допустить, чтобы службы просмотра других объектов DUT в той же сети, а также предоставляли услуги сети.

Libavahi, используемый p2p и update_engine, использует частный API для обращения к avahi-daemon по DBus, поэтому замена avahi-daemon на поддельную реализацию потребует реализовать этот интерфейс, который не документирован. Замена libavahi требует компиляции другой версии или использования поддельного интерфейса libavahi, который теряет смысл теста интеграции автотеста.

Чтобы подделать сеть одноранговых узлов, другой вариант заключается в создании интерфейса TAP с помощью скрипта python, который подделывает весь требуемый трафик avahi, и пусть avahi-daemon прослушивает ТОЛЬКО на этом интерфейсе во время теста (мы можем сделать это через avahi-daemon файл конфигурации).

Я просмотрел этот билет, и у него, кажется, есть все, что вам нужно, но выяснить, как их собрать вместе, не хватает. Возможно, вы могли бы отказаться от проекта Chromium, требующего некоторой помощи с этими частями, и это может быть хорошим местом для начала.

Рекомендации

  • LANSim