OS Xの特定のインターフェイスを介してIPルートを転送する方法は?


40

私はMacで、wifi接続の特定のゲートウェイを介して特定のアドレスをルーティングしようとしています。

私は使用しています:

route add -host 54.81.143.201 192.168.15.1

時々これは機能しますが、そうでない場合もあります。私が見つけたのは、選択するインターフェイスが毎回異なるということです。en0仕事をする必要があります

netstat -nr 動作しない場合の出力:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

これが動作するのは次の場合です:(en0に注意)

54.81.143.201      192.168.15.1       UGHS            0        1     en

なぜこれをしているのですか?当社には、HipChatが機能しないプロキシがあるためです。だから、私は職場のイーサネット上にいる間に、オープンWi-Fiネットワークを介してhipchatトラフィックをルーティングしています。

編集:

また、インターフェイスのみを使用してエントリを追加しようとしました

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0

HipChatは接続に失敗します。

編集2:誰かが私の全体のルーティングテーブルを求めた、ここに今日です。54.81.143.201は現在en0ではなくen3にバインドされていることに注意してください。

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.7.90.1          UGSc           31        6     en3
10.7.90/24         link#4             UCS             4        0     en3
10.7.90.1          0:23:ac:3d:db:c2   UHLWIir        16        0     en3   1200
10.7.90.44         40:6c:8f:19:4a:bb  UHLWI           0        3     en3    946
10.7.90.63         127.0.0.1          UHS             0        0     lo0
54.81.143.201      192.168.15.1       UGHS            0        0     en3
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3      209     lo0
169.254            link#4             UCS             1        0     en3
169.254.255.255    0:23:ac:3d:db:c2   UHLSW           0        0     en3

機能しない場合のために、完全なルーティングテーブルを投稿します。192.168.15.1はen5を介して到達可能ですか?もしそうなら、なぜ機能しないのですか?そうでない場合、そのルートがどのように追加されたかを確認するのは困難です。
デビッドシュワルツ

@DavidSchwartz、それは私にとって興味深いことです。192.168.15.1はen5を介して到達できません。正しくen0に割り当てられたときに動作します。
Sean256

ルーティングテーブルまたはen5の構成を表示します。ルートがそのようにインストールされている何らかの理由がなければならず、それはおそらく本当の問題です。
デビッドシュワルツ

@DavidSchwartz常にen5であるとは限らず、時にはen3である場合もあります。現在、ルーティングテーブル全体を投稿しています。
Sean256

示したルーティングテーブルでen3は、明らかに正しいです。192.168.15.1は、他のインターフェースからは到達できません。そのルーティングテーブルで192.168.15.1に到達する唯一の方法は、デフォルトルートを使用することです。(一言で言えば、何をしているのかわからないようです。システムが不可能なことをしていないことに驚いているようです。)
デビッドシュワルツ

回答:


34

試してください:

route add -host 54.81.143.201 -interface en0

2
これは私がそれを試みるときに得られるものです:route:bad address:en0
Sean256

申し訳ありませんが、これをテストするMacがありません。構文が間違っていたようです。答えを修正しました。もう一度やり直してください。
drk.com.ar

1
悲しいことに同じこと->ルート:悪いアドレス:en0
Sean256

再試行する。今回はゲートウェイを削除しました。また、ifconfigの出力を質問に追加して、関連するIP構成を確認できますか?
drk.com.ar

私はちょうどそれを試しました(実際には私も前に持っています)、それは私のテーブルにエントリを追加します、それは問題を解決しません。HipChatは接続に失敗します。ルーティングテーブルのエントリは、次のとおりです-> 54.81.143.201 78:31:c1:c7:52:74 UHS 0 2 en0
Sean256

3

他の人が示したように、これは実際には3つの問題です。

  1. ワイヤレスインターフェイスがen0、en3、およびen5の間で変化しているようです。

    私のMacBook Airでは、en0は常にワイヤレスです。Thunderbolt-to-Ethernetは常にen3で、USB-to-Ethernetは常にen5です。ただし、アダプターをMacの別のポートに接続すると、NIC名が変更されます。最初にこれを解決する必要があります。ワイヤレスの名前が常に同じであることを確認してください。それ以外の場合、static routeコマンドを入力するときに、そのen0場所に接続されているNICがない場合、コマンドは(明らかに)「アドレスエラー」(物理アドレスにリンクがない)で失敗します。

    同様に、アダプターが常に同じSSIDに接続していることを確認してください。ゲートウェイアドレスは明らかにサブネットに対して有効である必要があり、異なるWiFiネットワークには異なるサブネットがあります。これにより、別のタイプのエラーが発生する可能性があります。

    ワイヤレスが唯一のネットワーク接続であるかどうかを指定しませんでした。上記を考えると、私はそうではないと思います...?VMwareまたはParallelsによるこの仮想ネットワークは、さらに複雑になります。(たとえば、接続された両方のネットワークが同じIPスペースを使用する場合...仮想マシンは多くの場合ブリッジされ、独自のIP /ルート/リンクを持っています...)ネットワークトポロジの投稿が役立ちます。

  2. 完了したら、sudo route add -host 54.81.143.201 -iface en0またはのいずれかを試してくださいsudo ipfw。アダプタの名前がわからない場合は、次のように、代わりにそのMACアドレスを指定できます。sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    関連:https : //discussions.apple.com/thread/5049994?searchText=policy%20route

  3. 再起動すると、これが持続しない場合があります。それを個別に処理する必要があります。



2

-linkオプションを使用してMACアドレスを指定することにより、インターフェイスを介してルートを追加できました。

route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]

これ54.81.143.201により、適切なインターフェイスにトラフィックが送信されます。

192.168.15.*各インターフェイスに1つずつ、2つの個別のホストアドレスが割り当てられていますか?それ以外の場合は、どちらのインターフェイスからでもトラフィックを送信できますが、トラフィックはパケットのソースIPで返されます。


だから私はあなたがmac addrを使用して提案したことを試みました、そして奇妙なことに私のルーティングテーブルはen0ではなくen3のエントリを表示します-> 54.81.143.201 00:1d.88.4a.21.da UGHS 0 0 en3
Sean256

「arp -an」を実行すると、どのようなエントリがありますか...?
ネビンウィリアムズ

2

このソリューションは、最新のMacOS 10.12(Sierra)で動作します。ここに要点があります。

#!/bin/bash

# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR=`ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*/\1/p'`
TO=`echo -n ${TOADDR//[[:space:]]}`

echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -host $1 $wifi_router -ifp $wifi_address -ifa $TO -static

echo ""
echo "ROUTE ADDED:"
route get $1

次のように使用します。

> sudo ./route_wifi.sh IP_ADDRESS

wifiインターフェースがen1であると想定しています。

wifi_routerおよびwifi_address変数に正しい値を入力することを忘れないでください。wifi_addressの形式に注意してください。これは、ネットワークインターフェイス名 ' ' interface mac address with ' です。' 区切り文字。確かに、必要な情報のほとんどはifconfigコマンドの出力から解析できますが、私はそのために怠けすぎです=)


スーパーユーザーへようこそ。投稿のリンクから最も関連する情報を含めるようにしてください。詳細はこちらをご覧ください
発泡スチロールフライ

1

OS X routeコマンドについては、こちらをご覧ください-ifscopeパラメータとその値を使用すると、インターフェイス・バウンドのルートを指定することができます。

しかし、これはあなたが望むものではありません。IP範囲が一意になるようにネットワークを修正する必要があります。それ以外は、インターフェースメトリック(別名優先順位)は、他の方法で同様に適切なオプションから選択されるインターフェースに影響します。


-1

だからあなたが主張するサービス「HipChat」に関してあなたが話をしようとしているベンダーサーバーは54.81.143.201ですか?この場合、54.81.143.0 255.255.255.0のルーティングエントリを作成して、範囲を広げます。ソフトウェアを使用しているときは、この特定のサーバーと常に通信しているのではなく、同じサブネット54.81.143.0/24上のそれらのクラスターと通信している可能性があります。また、新しいエントリを作成するときに、ルートメトリックが正しいことも確認してください。54.81.143.0/24 192.168.15.1 Metric 20 En5へのルートを作成するが、0.0.0.0 / 0 10.7.90.1 Metric 10 En0へのルートもある場合。コンピューターは新しいエントリを無視し、デフォルトのルート(En0経由)を介したトラフィックのルーティングを継続します。私はこれをざっと目を通して、それを指摘したかったです。乾杯!


-1

NIC名を追加してみてください:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

これはCentOSで機能します。


私はこれを取得する->ルート:悪いアドレス:dev
Sean256
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.