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

in  Linux

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

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

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

1
2
3
4
$ 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で追加します。

1
2
$ 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経由のルーティングにしています。

1
2
3
$ 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

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

1
2
3
4
5
6
$ 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
1
2
3
4
5
$ 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

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


Share