特定のトラフィック用のWIFIとLANのルーティング


12

Macbook Proには2つのネットワークデバイスがあります。

  1. WIFI(en1):一般的なトラフィックに使用されます。DHCP経由で192.168.19。*のIPに接続します
  2. LAN(en0):特定のトラフィックに使用されます。192.168.2.10のIPに静的IPとして接続します。ルーターに接続せず、直接ルーティング接続用のスイッチのみに接続します。

LANでアクセスする必要がある4つのIPアドレスがあります。

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

残りのトラフィックは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

OSはハードウェアではなくルーティングを処理します。
イグナシオバスケス-エイブラムス

LAN上にはすべて192.168.2.Xがありますか?もしそうなら、それはソリューションをはるかに簡単にします。
ローレンス

@ultrasawbladeはい、そのネットワーク上のすべては192.168.2。*
jakebird451

回答:


11

通信したいすべての192.168.2.xアドレスが192.168.2.xアドレスとのインターフェースでダウンしている場合、その構成のために手動でルーティングルールを作成する必要はありません。

  1. [システム環境設定]-> [ネットワーク]に移動します
  2. イーサネットデバイスを選択し、「IPv4の構成」が「手動」に設定されていること、サブネットマスクが255.255.255.0に設定されていること、ルーターボックスが空であることを確認します。

これが完了すると、netstat -rn両方のサブネットのルートが表示されますが、192.168.2.1を通るデフォルトルートの代わりに「link#4」ルートのみが表示されます。

デフォルトルートが必要ない場合は、ルーターボックスを空白のままにします。ルーターボックスの値は、このネットワークインターフェイスを介してデフォルトルートを設定するためにのみ使用され、他の目的には使用されません。


ありがとうございました!それでした!ルーターフィールドを除き、すべてを適切にセットアップしました。192.168.2.1LAN側の「ルーター」と一致するように、ルーターフィールドにIPアドレスを入力します。必要だと思っていましたが、今では一般的なトラフィックのデフォルトルートを引き継いでいることがわかります。
jakebird451

これをありがとう!同じ問題があり、私のために完璧に働いた。
BaronVonKaneHoffen

4

問題はen0、802.11インターフェイスによって確立されたデフォルトルートよりも優先されるデフォルトルートをインターフェイスが追加していることです。理由はよくわかりませんが、BSDが無線インターフェースよりも有線インターフェースを好むという事実か、動的に構成されたインターフェースよりも静的に構成されたインターフェースを好むという事実です。列でen0デフォルトルートが使用されていることがわかりRefsます。Refsは、ルートのアクティブな使用の現在の数を示すメトリックなので、すべてのトラフィックを取得していることがわかります。

解決策は、ローカルネットワーク上のホスト以外のホスト宛てのトラフィックがDHCP onによって確立されたデフォルトゲートウェイを通過するように、ルーティングテーブルから永続的にそのルートを削除することですen1。最初に確認するのはen0routerフィールドに何も入力していないことを確認するための構成パネルです。そのフィールドの情報は、デフォルトゲートウェイとして追加されます。それがうまくいかない場合、ルートを手動で削除する必要がありますが、route flushうまくいかない理由は、OS Xにインターフェイス構成ファイルからルーティング情報をリロードするように指示しているため、しばらくして変更を元に戻すためです。次のコマンドは、デフォルトのルートを削除する必要がありますen0 ネットワークが再起動されるか、システムがIPLされるまで、インターフェースを使用します。

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ます。

これがお役に立てば幸いです!


長いご回答ありがとうございます。デフォルトのルート192.168.2.1が問題でしたが、@ raksliceはen0接続のルーティング情報の入力中にミスを犯したことを発見しました。192.168.2.1それが必要であると信じて、私はルーターフィールドにIPアドレスを入れました。デフォルトのルーターIPを削除した後、の不正なデフォルトルートも削除しました192.168.2.1。再び、あなたの助けに感謝します。
jakebird451

1
なんとなく、私は賞金を得られませんでした。「最初に確認するのは、en0の設定パネルで、ルーターフィールドに何も入力していないことを確認することです。そのフィールドの情報はデフォルトゲートウェイとして追加されます。 」しかし、最終的にはすべてうまくいきます。機能してくれてうれしいです。
d34dh0r53

0

Wifi IPをデフォルトゲートウェイとして設定し、LANまたは192.168.2.0/24に接続されているデフォルトゲートウェイ(または0.0.0.0へのルート)を削除します。

もちろん、wi1で動作する固定IPにen1を設定できれば、これは簡単です。

192.168.2.10を192.168.2.0/24ネットワークへのルートとして追加する必要がある場合があります。ただし、192.168.2.0 / 24がインターフェイスに割り当てたものの仮想によって直接接続されていることがわかるため、これは自動でなければなりません。

したがって、192.168.2.Xに向かうトラフィックは192.168.2.10から出て行き、他の場所に向かうトラフィックはen1のIPアドレスから出て行きます。


私は、ネットワークsys設定を介して、wifiの順序を一番上に設定しました。しかし、どうすればいいのかわかりませんremove any default gateway connected to the LAN
jakebird451

たぶんsudo route del default 192.168.2.10?、freebsd / mac osxでそれを行う方法が正確にはわからないが、似ているはずです。
ローレンス

Macのコマンドはsudo route delete default 192.168.2.10です。Pingはまだアクティブです。ただし、ルーターipを除くwifiトラフィックへのアクセスをシャットダウンします。
jakebird451

あなたはあなたの無線LANを介してインターネットを取得します、つまり、LAN経由で接続せずにWifiのみを使用する場合、Googleなどの外部サイトにアクセスできますか?
ローレンス

はい、WiFiはgoogle.comなどの一般的なトラフィック用です(主にgoogleマップapi用)
jakebird451
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.