Macbook Proには2つのネットワークデバイスがあります。
LANでアクセスする必要がある4つのIPアドレスがあります。
残りのトラフィックはWIFIに行く必要があります。特定のIPアドレスのルーティングテーブルを設定しようとしましたが、ネットワークを台無しにしてしまいました。私はあまり頻繁にネットワーキングの世界に足を踏み入れていませんが、これは私が試している最新のコマンドでした。
Sudo route add -Host 192.168.2.30 -interface en0
このコマンドは、pingを使用する私の能力を殺しました。 pingがメモリを割り当てることができなかったと教えてくれました(それも可能ですか)それはまた私のwifiアクセスを殺しました。ログアウトして再度ログインすると、問題が修正されました。私はこのソリューションを永続的にしても構わないので、一時的なルーティングで問題ありません。
編集:
私が現在試みている場合:
Sudo route flush
Sudo route add default 192.168.19.1
これにより、すべてが約1分間動作します。しかし、その分後、LAN(en0)のルーティングを保持したまま、WiFiへのルーティングを「忘れて」しまいます。 LAN(en0)ケーブルを抜き差しすると、プロセスはさらに1分間機能します。
編集2:
これらは、d34dh0r53による要求として入力されたコマンドの一部です。
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.2.1 UGSc 4 0 en0
default 192.168.19.1 UGScI 0 0 en1
127 127.0.0.1 UCS 0 1 lo0
127.0.0.1 127.0.0.1 UH 5 1429023 lo0
169.254 link#4 UCS 0 0 en0
192.168.2 link#4 UCS 4 0 en0
192.168.2.1 0:27:22:2e:5f:1a UHLWIi 2 0 en0 1199
192.168.2.10 127.0.0.1 UHS 0 0 lo0
192.168.2.30 90:a2:da:0:f5:63 UHLWIi 1 1433 en0 1191
192.168.2.255 ff:ff:ff:ff:ff:ff UHLWbI 0 7 en0
192.168.19 link#5 UCS 2 0 en1
192.168.19.1 3e:d0:f8:aa:28:56 UHLWIi 0 2 en1 1192
192.168.19.3 127.0.0.1 UHS 1 0 lo0
192.168.19.255 ff:ff:ff:ff:ff:ff UHLWbI 0 5 en1
Internet6:
Destination Gateway Flags Netif Expire
::1 link#1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 UcI lo0
fe80::1%lo0 link#1 UHLI lo0
fe80::%en0/64 link#4 UCI en0
fe80::226:4aff:fe00:b68a%en0 0:26:4a:0:b6:8a UHLI lo0
fe80::%en1/64 link#5 UCI en1
fe80::226:bbff:fe03:cbd%en1 0:26:bb:3:c:bd UHLI lo0
ff01::%lo0/32 fe80::1%lo0 UmCI lo0
ff01::%en0/32 link#4 UmCI en0
ff01::%en1/32 link#5 UmCI en1
ff02::%lo0/32 fe80::1%lo0 UmCI lo0
ff02::%en0/32 link#4 UmCI en0
ff02::%en1/32 link#5 UmCI en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 Hops max, 52 byte packets
1 192.168.2.1 2.499 ms 3.392 ms 3.829 ms
$ traceroute -n google.com
traceroute: unknown Host google.com
通信するすべての192.168.2.xアドレスが192.168.2.xアドレスとのインターフェースを下回っていれば、その構成では手動でルーティングルールを作成する必要はありません。
これが完了すると、netstat -rn
は両方のサブネットのルートを表示しますが、192.168.2.1を通るデフォルトルートの代わりに「link#4」ルートのみを表示します。
デフォルトルートが必要ない場合は、ルーターボックスを空白のままにします。ルーターボックスの値は、このネットワークインターフェースを介してデフォルトルートを設定するためにのみ使用され、他の目的には使用されません。
問題は、en0
インターフェイスが、802.11インターフェイスによって確立されたデフォルトルートよりも優先されるデフォルトルートを追加していることです。理由は正確にはわかりませんが、BSDがワイヤレスインターフェイスよりも有線インターフェイスを優先しているか、動的に設定されたインターフェイスよりも静的に設定されたインターフェイスを優先しているという事実のどちらかです。 en0
デフォルトルートがRefs
列で使用されていることがわかります。 Refs
は、ルートの現在のアクティブな使用数を示すメトリックであるため、すべてのトラフィックを取得していることがわかります。
解決策は、ローカルネットワーク上のホスト以外のホスト宛てのトラフィックがen1
のDHCPによって確立されたデフォルトゲートウェイを通過するように、ルーティングテーブルから永続的にそのルートを削除することです。最初に確認するのは、en0
の構成パネルです。router
フィールドに何も入力していないことを確認してください。そのフィールドの情報がデフォルトゲートウェイとして追加されます。それが機能しない場合は、ルートを手動で削除する必要があります。route flush
が機能しない理由は、OS Xにインターフェース構成ファイルからルーティング情報を再読み込みするように指示しているため、短時間で変更を元に戻すことができるためです時間。次のコマンドは、ネットワークが再起動されるか、システムがIPLされるまで、en0
インターフェースのデフォルトルートを削除する必要があります。
Sudo route delete -net 0.0.0.0 192.168.2.1
この変更を永続的なものにしたい場合は、a)/Library/StartupItems
にサービスを作成してください。これは、私には手間がかかりすぎているようです。または、b)その行を/etc/rc.local
に次のようなコマンドで追加します。
echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local
インターフェイスが完全に起動してルーティングテーブルが確立される前にコマンドを実行しないようにするには、sleep <number_of_seconds>
のその行の前に/etc/rc.local
コマンドを追加する必要があります。
これがお役に立てば幸いです!
Wifi IPをデフォルトゲートウェイとして設定し、LANまたは192.168.2.0/24に接続されているデフォルトゲートウェイ(または0.0.0.0へのルート)を削除します。
もちろん、wifiで動作する固定IPにen1を設定できれば、これは簡単です。
192.168.2.0/24ネットワークへのルートとして192.168.2.10を追加する必要がある場合があります。ただし、192.168.2.0/24は、インターフェイスに割り当てたものの仮想によって直接接続されていることがわかるため、これは自動的に行われるはずです。
したがって、任意の192.168.2.Xに向かうトラフィックは192.168.2.10から発信され、それ以外の場所に向かうトラフィックはen1のIPアドレスから発信されます。