ラップトップがルータから切断されたときにavahiを使用してソフトウェアをどのようにテストできますか?
すべてのサービスは同じシステムで実行されるため、Avahiはすべてのサービスに対してIPアドレス127.0.0.1を宣伝します。
たとえば、atのファイルを使用して/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は本質的にループインターフェイスに正しくバインドしません。仮想インターフェイス(最適なソリューション)を開くか、物理インターフェイスからルーティングできない番号を開くことができます。 (動作しますが、一時接続を使用すると問題が発生する可能性があります。)
答え1
MULTICAST
Avahiでは、フラグを設定するにはインタフェースが必要です。それは、
ifconfig dummy0 multicast
このMULTICAST
フラグが設定されると、avahi は、インターフェイスが avahi 設定で許可されていない限り、再起動するか、または avahi 設定を中断することなく、そのインターフェイスのサービスを自動的に宣伝します。
答え2
私がちょっと調べてみたところ、Chromimプロジェクトの問題トラッカーのこのチケットはあなたが望むものに似ているようです。チケット:問題288385:P2P:ピアのプライベートネットワークをシミュレートするための偽のavahi / zeroconfネットワークを作成する以下の説明があります。
プロジェクト会員記者[Eメール保護]、2013年9月9日
私たちは、あるコンピュータでP2Pテストを実行し、別のピアを偽にしたいと思います。これを行うには、同じネットワーク上の他のDUTのサービスが表示され、サービスがネットワークに公開されるのを防ぐために、avahi / zeroconfトラフィックを分離する必要があります。
p2pとupdate_engineで使用されるlibavahiは、プライベートAPIを使用してDBusを介してavahi-daemonに接続するため、avahi-daemonを偽の実装に置き換えるには、文書化されていないこのインタフェースを実装する必要があります。 libavahiを置き換えるには、別のバージョンをコンパイルするか、偽のlibavahiインターフェースを使用する必要があるため、自動化されたテスト統合の目的は失われます。
P2Pネットワークを偽造するもう1つのオプションは、必要なすべてのavahiトラフィックを偽造するPythonスクリプトを使用してTAPインターフェイスを作成し、avahi-daemonがテスト中にそのインターフェイスのみを受信できるようにすることです(avahi-daemonを介してこれを行うできます)。これを実行してください))設定ファイル)。
このチケットを見てみると、必要なすべての部分が含まれているようですが、それらをすべて合わせる方法を調べるための情報が不足しています。おそらくChromiumプロジェクトにこれらの部分の助けを求めることができます。そうすることは良い開始点になることができます。