問題説明
BareMetal Raspberry Piの開発に使ってる仮想マシン(debian wheezy)には、以下の2つの仮想NICをつなげてある。
片方はインターネットに繋がる無線ネットワーク、片方はRaspberry Piなどに有線で接続するためのネットワークだ。
NIC | Attached to | IP | インターネット接続 |
---|---|---|---|
NIC1 | NAT | 10.0.2.15 | あり |
NIC2 | Bridged | 192.168.2.104 | なし |
ifconfigの結果はこんな感じ。
$ LANG=c /sbin/ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef9:9ad3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:86455 errors:0 dropped:0 overruns:0 frame:0 TX packets:44138 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:67198479 (64.0 MiB) TX bytes:3015887 (2.8 MiB) eth1 Link encap:Ethernet HWaddr --:--:--:--:--:-- inet addr:192.168.2.104 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe77:8ed7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3455 errors:0 dropped:1 overruns:0 frame:0 TX packets:146 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:237339 (231.7 KiB) TX bytes:16917 (16.5 KiB)
この状態で起動したところ、困ったことになぜかインターネット接続のないeth1が優先経路とされてしまった。 これではインターネットに接続できないので、eth0を有線経路として設定してインターネットに接続できるようにしたいとおもう。
解決方法
ここでやらなければならないのは以下の2つ。
- デフォルトゲートウェイの設定
- resolv.conf(DNSサーバー)の修正
デフォルトゲートウェイの設定
デフォルトの経路がeth1になってしまってるので、routeコマンドで修正する。
この時ゲートウェイのIPアドレスが必要なのだけれど、eth0はNAT接続の経路なのでゲートウェイとなるIPアドレスがわからない。
しかしネットで調べてみるとどうやら 10.0.2.2
がゲートウェイとなるIPアドレスらしいので、これを設定する。
$ sudo /sbin/route add default gw 10.0.2.2
これで経路の設定は完了。
resolv.confの修正
DNSサーバーのアドレスも新しい経路のものに修正しないと、google.co.jpとかにアクセス出来ない。
私の環境のDNSサーバーは192.168.1.1なので、resolv.confを以下のように修正する。
$ cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.1.1
これで修正完了。
接続確認
$ ping google.co.jp PING google.co.jp (74.125.235.119) 56(84) bytes of data. 64 bytes from nrt19s02-in-f23.1e100.net (74.125.235.119): icmp_req=1 ttl=63 time=22.0 ms
うん、いいかんじ。
まとめ
経路選択はrouteとresolv.confでやる!
TODO
恒久化する方法も試す。
参考文献:http://tanyaolinux.blogspot.jp/2014/02/linux-static-route.html