web-dev-qa-db-ja.com

Mac OSXでルート固有のインターフェイスメトリックを設定する方法

更新:ここで問題の一部に対する優れた回答を見つけました https://superuser.com/a/525592/169461 。インターフェイスen1(wifi)の優先度を設定できました。ただし、これはすべてのトラフィックをen1経由でルーティングするため、十分に具体的ではありません。ゲートウェイへのルートとNASへのルート専用のメトリックを設定できる必要があります。したがって、Macでこれを行う方法を知っている場合は、私に知らせてください。


古いタイトル:ゲートウェイに到達するための2つの方法でマシンのルーティングを最適化する

IMac、NAS、ケーブルモデム間の応答時間を最適化しようとしています。 iMacは私のオフィスにあり、リビングルームにある192.168.0.1(テクニカラーケーブルモデム)のルーター1にwifi経由でインターネットに接続されています。

ここでの難しさは、192.168.0.100にNASがあることです。これは、常に到達可能にしたいものです。また、オフィス内にあるので、DD-WRTを搭載した古いLinksysルーター(ルーター2)を無線ブリッジとしてインターネットに接続しました。そのルーターのアドレスは192.168.0.2です。もちろん、オフィスに追加のルーターがあるので、iMacとNASもケーブルを使って接続しました。これはすべて正常に機能します。 NASは、インターフェースen0 *上のルーター2を介して到達可能です。ワイヤレス接続はen1にあります。 netstat -nrの関連する出力は次のとおりです。

* UPDATE2:リクエストに応じて、完全なルーティングテーブルを再度投稿したことに注意してください。これは、en0とen1の優先順位を逆にした後です(上記の更新を参照)。したがって、NASはen1を介して到達し、デフォルトゲートウェイもen1を介して到達します。ポイントは同じですが、OSXに各ルートで最速のインターフェイスを使用させるにはどうすればよいですか?

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.0.1        UGSc           75        0     en1
default            192.168.0.1        UGScI           1        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              5      285     lo0
169.254            link#5             UCS             1        0     en1
169.254            link#4             UCSI            0        0     en0
169.254.179.33     0:10:95:de:ad:7    UHLSW           0        0     en1   1171
192.168.0          link#5             UCS             2        0     en1
192.168.0          link#4             UCSI            3        0     en0
192.168.0.1/32     link#5             UCS             1        0     en1
192.168.0.1        link#4             UHLWIir         1        0     en0
192.168.0.1/32     link#4             UCSI            1        0     en0
192.168.0.1        cc:35:40:eb:57:e3  UHLWIir        77       24     en1   1089
192.168.0.11/32    link#5             UCS             1        0     en1
192.168.0.11       4:54:53:f:5d:a7    UHLWI           0        1     en0   1090
192.168.0.11       4:54:53:f:5d:a7    UHLWIi         22     2046     lo0
192.168.0.100      0:90:a9:b6:3c:5a   UHLWI           0        0     en0   1184
192.168.0.100      58:6d:8f:d7:d3:3e  UHLWIi          3       63     en1   1184
192.168.0.101/32   link#4             UCS             0        0     en0
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        1     en0
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        4     en1

UPDATE3:コメントで示唆されているように、非常に具体的で時々機能する静的ルートを追加しようとしましたが、Mac OS Xでは永続化されません:Sudo route add 192.168.0.100/32 -iface en0。これにより、ルーティングテーブルに次のエントリが表示されます。

192.168.0.100/32   3c:7:54:34:5a:4b   ULSc            0        0     en0

ifconfigの出力:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
ether 3c:07:54:34:5a:4b 
inet6 fe80::3e07:54ff:fe34:5a4b%en0 prefixlen 64 scopeid 0x4 
inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=1<PERFORMNUD>
media: autoselect (1000baseT <full-duplex,flow-control>)
status: active
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 04:54:53:0f:5d:a7 
inet6 fe80::654:53ff:fe0f:5da7%en1 prefixlen 64 scopeid 0x5 
inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=1<PERFORMNUD>
media: autoselect
status: active

今、私はiMacのネットワークが時々応答が遅く、接続に問題があるように見えることに気づきました。 pingを使用すると、これは少なくとも部分的に応答時間が長いことが原因であることがわかりました。応答時間には大きなばらつきがあります。

PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=67.161 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=86.217 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=5.536 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=26.307 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=47.608 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=67.585 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=89.349 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=8.408 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=30.391 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=51.700 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=72.978 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=94.858 ms

そして、tracerouteが言う間、そのすべて:

1  192.168.0.1 (192.168.0.1) 36 bytes to 192.168.0.101  88.989 ms  1.824 ms  1.705 ms

したがって、インターネットゲートウェイのパッケージの一部は、en0上のルーター2の(低速の)ワイヤレスブリッジを介してルーティングされ、一部は十分に高速なen1を介してルーティングされると思われます。明らかに、私の次のステップは、以下を実行してゲートウェイへの静的ルートを設定することでした。

Sudo route add -Host 192.168.0.1 -iface en1

これにより、ゲートウェイへの接続はすべてen1のワイヤレスインターフェイスを経由するようになります。しかし、そのような運はありません。これを行うと、iMacのインターネット接続が失われ、ルートを元に戻しても復元されません。

私は手動でルートを設定する専門家ではないので、質問は次のとおりです。ここで何が間違っているのか、iMacにすべてのトラフィック(192.168.0.2と192.168.0.100へのパッケージを除く)をen1経由でルーティングさせるにはどうすればよいですか? ?

1つの方法は、異なるサブネットを定義することだと思いますが、それでも、すべてのマシンがどこからでも到達可能であることを望んでいます。また、どうすればいいのかわかりません。トラフィックを最適化するための他のヒントもいただければ幸いです。

2
titusn

これに対する最も簡単な解決策は、静的ルートを定義する(そして永続化する方法を見つける)必要はありません。

ストレージには(同じ物理ネットワーク上で)別のサブネットを使用することをお勧めします。

  • Macのen0でDHCPをオフにし、en0のこの新しいサブネットに静的IPを設定し、そのインターフェイスにゲートウェイを定義しないようにします。たとえば、サブネットマスクが255.255.255.0の192.168.1.1としましょう。

  • NASこのサブネットのIPも指定します。たとえば、サブネットマスク255.255.255.0の192.168.1.2と言います。

  • NASに到達する必要があるネットワーク上の他のデバイスも、このサブネット上にIPを持つことができ、それと通信することができます。特別なルーティングは必要ありません。2つのIPを持つこともできます。ゲートウェイが割り当てられているアドレスが1つだけである限り、1つは0.0ネットに、もう1つは1.0ネットにアドレス指定します。

  • これで、Macにはゲートウェイ(en1、Wi-Fi)への1つのルートと、NAS(en0、イーサネット)への1つのルートがあります。

1
jbg