問題
やりたいこと
固定IPが割り振られているセンサを使用しながら他のネットワークへもアクセスしたかったので, 初心者ながらネットワーク設定をいろいろいじってみる.
センサには固定のIPアドレスが割り振られている(ここでは192.168.0.10 マスク255.255.255.0).
できていないこと
Logitecの USB-ethernetアダプタ(LAN-GTJU3H3)を介してセンサへ接続するのだけれど, そもそもIPアドレスをどう割り振って, IPアドレスに従ってどうやって使うネットワークを変えさせるのかが分からなかった.
上記アダプタはeth1として見えている.
できたこと
192.168.0.0/24のネットワークをUSB-ethernetアダプタ側に設定して, センサへのpingが通った
解決策
IPアドレスの設定
まず, センサとつながっているPC側のIPアドレスを設定する.
やり方はあるみたいだけれど, うまく動くかわからなかったので可逆的な方法で試してみる
sudo ifconfig eth1 192.168.0.3
IPアドレスは適当. 192.168.0.0/24のどれかを使用.
ルーティングテーブルの設定
次に, 192.168.0.0/24宛のパケットをeth1へ流すようにしないといけない.これをしないとeth0(インターネットへ向けてつながっている.センサはいないネットワーク)へ全て出ていこうとする.
sudo route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
これでOK.
あとはpingを打てばかえってくる.
ついでにセンサ情報を取得してみる
~$ rosrun urg_node urg_node _ip_address:=192.168.0.10
[ INFO] [1465369377.842362358]: Connected to network device with intensity and ID:
[ INFO] [1465369377.971724430]: Streaming data.
いい感じに出てきた.
ハマったところ
ifconfigでRUNNING フラグが出ない
センサが電源不足でうまく動いておらず, 接続されていないことになっていた.
ルーティングテーブルの設定
よくわからない. 結局これで動いたけれど, もう少し勉強しないといけない.
Ubuntu 14.04 でsudo service networking restartは動かない
途中でネットワーク周りを再読込させようとしたところ上記コマンドが動かない.どうもバグらしい.