Nicが2つあるLinuxマシンのルーティング設定

2013–02–18

前回、デスクトップPCにNASを接続してファイルを高速に転送できるようにしました。 クロスケーブルを用意しなくてよかったのですが、ルーティングの設定は行わないと通信できませんでした。

無線LANの親機に有線接続していたNASを、そのままデスクトップ機に有線で接続しました。 デスクトップについてる無線と有線のLanのIPとNASが、同じセグメント(192.168.3.0/24)で接続されることになります。 このままデスクトップとNASを通信しようとすると、疎通できません。 有線を経由で通信してくれませんでした。

file://20130218/network.png][network

そこで、ipコマンドでルーティングの設定を行いました。

 $ ip rule show
 0:      from all lookup local
 32766:  from all lookup main
 32767:  from all lookup default	  

ルーティングルールを表示させています。 数字が若いほうが優先的に適用されるルールテーブル。 上記だとルールテーブル"local"が優先度0で一番優先的に扱われています。

NAS(192.168.1.100)へのルールをテーブル100に優先順位200で追加します。

 $ sudo ip rule add from 192.168.1.100 table 100 prio 200
 $ sudo ip rule add to 192.168.1.100 table 100	  

NAS(192.168.1.100)へのルートを有線LANであるeth0経由のルーティングにしています。

 $ sudo ip route add 192.168.1.100 dev eth0 table 100
 $ ip route show table 100
 192.168.1.100 dev eth0  scope link	  

設定後のルールテーブルとルーティング設定です。

 $ ip rule show
 0:      from all lookup local
 199:    from all to 192.168.1.100 lookup 100
 200:    from 192.168.1.100 lookup 100
 32766:  from all lookup main
 32767:  from all lookup default	  
 $ ip route show
 default via 192.168.1.1 dev wlan0  metric 2003
 127.0.0.0/8 via 127.0.0.1 dev lo
 192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.3
 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.30	  

これで通信できるようになりました。 ただし、この設定は再起動すると消えてしまいます。