インターネットに接続せずにavahiを使用する方法は?

インターネットに接続せずにavahiを使用する方法は?

ラップトップがルータから切断されたときに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

MULTICASTAvahiでは、フラグを設定するにはインタフェースが必要です。それは、

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プロジェクトにこれらの部分の助けを求めることができます。そうすることは良い開始点になることができます。

引用する

関連情報