OpenRTM / OpenRTP-aist

OpenRTP-aist: RT-Middleware and OMG RTC based component and system development tools implemented by AIST
Other
1 stars 6 forks source link

[RTSE]NIC IP変更検知方法を修正 #494

Closed ga-sakamoto closed 1 year ago

ga-sakamoto commented 1 year ago

Identify the Bug

Link to #491

Description of the Change

NICのIPアドレスが変更となった場合の検知方法を修正させて頂きました. 以前のお打ち合わせでは,WindowsとLinuxで別々の検知方法を使用する,というお話となっておりましたが,OSによる振り分けではなく,InetAddress.getLocalHost() が 127.0.0.1 (lo) を返す場合には,すべてのIPアドレスをリストアップし,変更があるかどうかをチェックするように修正させて頂きました.

Verification

n-kawauchi commented 1 year ago

Ubuntu20.04のWi-Fiのみでネットワーク接続している環境で、Wi-Fiをオフにしてみましたが、警告ダイアログは表示されませんでした。お手数をおかけいたしますが、今後PRを作成される場合、動作確認の詳細を記載して頂けるとレビューがはかどります。 よろしくお願いいたします。

今回は、C++のConsoleInのみを起動している状態で、Wi-Fiをオンからオフに切り替えました。 Wi-Fiがオンの場合のip addrの確認を抜粋が下記で、IPアドレス192.168.1.31が割り当てられています。

$ ip addr 2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 5c:f9:dd:5b:b1:68 brd ff:ff:ff:ff:ff:ff 3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 9c:2a:70:bc:4f:7b brd ff:ff:ff:ff:ff:ff inet 192.168.1.31/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp1s0 valid_lft 85590sec preferred_lft 85590sec

Wi-Fiをオフにした場合の確認結果は下記です。 $ ip addr 2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 5c:f9:dd:5b:b1:68 brd ff:ff:ff:ff:ff:ff 3: wlp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 9c:2a:70:bc:4f:7b brd ff:ff:ff:ff:ff:ff

ちなみに、このWi-Fiオフの状態で、/etc/hostsの127.0.1.1をコメントアウトして保存したところ、 この変更のタイミングで警告ダイアログは表示されました。

IPアドレスが変更されました。(127.0.1.1 -> 192.168.1.31)

Wi-Fiがオフになっていることを認識していないように思えます。

n-ando commented 1 year ago

@n-kawauchi さん、Java CORBA使用する際は、127.0.1.1 エントリはコメントアウトすることにするのではなかったでしたっけ?その状態では、IPアドレス変更は検出されますか?

n-ando commented 1 year ago

@ga-sakamoto さん、Debian/Ubuntuの場合、インストーラが /etc/hosts エントリに

127.0.1.1  ubuntu

のような行を追加するのですが、これがあると、特にJava CORBAはエンドポイントを 127.0.1.1 にしてしまうので問題が生じます。 そこで、IPアドレスとして 127.0.1.1 が帰ってきた場合は、以下のメッセージを出すようにできますでしょうか?

Now host IP address 127.0.1.1. This causes communication errors among OpenRTP and RTCs.
Please comment out the entry begins from 127.0.1.1 in /etc/hosts or set your static address instead of 127.0.1.1.

日本語メッセージ

IPアドレス127.0.1.1がセットされています。OpenRTPとRTC間の通信エラーを引き起こす可能性があります。
/etc/hosts の 127.0.1.1で始まるエントリをコメントアウトするか、代わりに固定IPアドレスをセットしてください。

これに関しては issue #495 を追加しました。よろしくおねがいします。

n-kawauchi commented 1 year ago

Ubuntuの場合、/etc/hostsは以下のように設定されるので、

127.0.0.1   localhost
127.0.1.1   hostname

次のように修正した環境で確認したところ、Wi-Fiのオン・オフ切り替えで、最新の警告ダイアログのみが表示される動作を確認できました。

127.0.0.1   hostname localhost
#127.0.1.1   hostname

Ubuntuでの具体的なメッセージ内容は以下の通りでした。

「IPアドレスが変更されました。(192.168.244.77が削除されました。)」
「IPアドレスが変更されました。(192.168.244.77が追加されました。)」

Windows環境でもWi-Fiのオン・オフ切り替えで、最新の警告ダイアログのみが表示される動作を確認しました。Ubuntuとはちょっと表記が異なりましたので、報告しておきます。

「IPアドレスが変更されました。(192.168.241.66 -> 127.0.0.1)」
「IPアドレスが変更されました。(127.0.0.1 -> 192.168.241.66)」