web-dev-qa-db-ja.com

再起動せずにデフォルトのMac OSXルーティングテーブルをリロードする方法

ご挨拶、

VPNクライアントにvpncを使用しています。また、routeを使用して、ローカルネットワークなどに引き続きアクセスできるようにするために、いくつかの注意を払っています(ここでの詳細はあまり重要ではありません)。

ルーティングテーブルを取得することがあるので、ジャッキアップしてping: sendto: Network is unreachable他の方法で解決する必要があるURL。

現在、Mac OS Xを再起動すると、すべてが正常に戻ります。私がしたいことは、ルーティングテーブルを「デフォルト」にリセットすることです(たとえば、ブート時に設定されます)システム全体の再起動なし

ステップ1はroute flush(すべてのルートを削除します)。また、ステップ2では、すべてのデフォルトルートをリロードする必要があります。

これを行う方法について何か考えはありますか? (例:ステップ2とは?)

[〜#〜] edit [〜#〜]また、問題のアドレスでtracerouteも失敗するという別の症状があることにも気づきました。例えば:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

73
Nate Murray

ルートをフラッシュする必要があります。 route -n flushを数回使用します。その後、ルート追加でルートを追加します。

67
cavver

ホームOpenVPNサーバーを使用していて、MacのTunnelblickアプリケーションを使用してサーバーに接続しているときに、この問題が発生していました。

私の側で起こっていたのは、VPNから切断した後、ホームIPを宛先とし、誤ったゲートウェイを使用したルートが残っていたということです。このルートを削除すると、問題は簡単に解決されました

$ Sudo route -n delete the.good.dns.name

例:私は学校に通っており、コンピュータを再起動した後、ワイヤレスネットワークに接続します。 Tunnelblickで自宅のOpenVPNサーバーに接続します。

$ netstat -nr
Destination                   Gateway
....
[home-ip]/32                  [school-default-gateway-1] ....
....

VPNサーバーから切断します。無線ネットワークを変更します。これにより、デフォルトゲートウェイが変更されます。

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [school-default-gateway-1] ...
...
$ ping [home-ip]
PING [home-ip]: 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
Request timeout for icmp_seq 0
...

これが起こった後、どのような状況でもホームネットワーク(VPN、ping、その他)に接続できません。ルートを削除した場合:

$ Sudo route -n delete [home-ip]
delete net [home-ip]
$ ping [home-ip]
PING [home-ip]: 56 data bytes
64 bytes from [home-ip]: icmp_seq=1 ttl=56 time=13.111 ms

正常に動作します。

これを残すOpenVPNサーバー/クライアントの構成方法に問題がある可能性があります(それが何であるかを知りたいのですが)、このルートの削除を自動化するTunnelblick切断後スクリプトをインストールしました。

20
Sean

まず、ネットワークインターフェイスのルートが必要です。 VPNが切断されている場合は、ネットワークインターフェイスを停止してから、ifconfigを使用して起動してください。次に、ルートコマンドを使用して、デフォルトのgwをビルドします。だから次のようなもの:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

14
Jordan Eunson

@Seanと同じ問題が発生していました(OS Xも実行しています)。ホームネットワークと仕事用ネットワークを切り替えたときに、デフォルトルートが削除されていませんでした。

完全を期すため、自宅でVPNに接続して次のコマンドを実行すると、デフォルトゲートウェイが次のように表示されます。

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [work-default-gateway-1]

接続を切断しても、[home-ip]ゲートウェイはまだそこにあります。職場のネットワークに接続するとインターネットにまったく接続できず、OPと同じ問題が発生しました

$ traceroute the.good.dns.name    
$ traceroute: bind: Can't assign requested address

次に、手動でルートを削除する必要があります

$ Sudo route -n delete [home-ip]

最初は「route -n delete」をpost-disconnect.shスクリプトに入れましたが、少し面倒だったので、代わりにこのリンクを見つけました

https://code.google.com/p/tunnelblick/issues/detail?id=177

どうやらその理由は、私の.ovpnファイルに以下を設定するためです

user nobody
group nogroup

つまり、ルートはルートとして設定されますが、接続が切断されると、ユーザーはルートではなくなるため、ルートを削除できません。

.ovpnファイルでこれらの2行をコメント化すると、post-disconnect.shを使用せずに問題が解決しました。

6
jklp