問題タブ [traceroute]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - root なしで Python に UDP traceroute を実装する
Python 2.6 で UDP traceroute ソリューションを実装しようとしていますが、オペレーティング システムに付属の traceroute ユーティリティと同じようなアクションを実行するためにルート権限が必要な理由を理解できません。
このコードが実行される環境が root 権限を持っていることは非常に疑わしいので、Python の実装をやめて、OS traceroute の出力を UDP モードで解析するために何かを書かなければならない可能性が高くなりますか? または、のように構成されたソケットを開くことについて、私が見逃していることがありますかself.rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
。ルート権限がないとアクセスできないようですsocket.SOCK_RAW
。これにより、これをPythonで実装するために必要なデータを効果的に消費できなくなります。
traceroute - tracert コマンドがタイムアウトを返す
tracert は要求されたタイムアウトを返します。このことから私が理解しているのは、ネットワーク上のどこかで失われたパケットです。
問題は ISP にあるのか、ホスティング プロバイダーにあるのか、自分の Windows システムにあるのか?
最初の 9 個は成功しました。
c - 仮想マシンで TTL が小さい UDP パケットの ICMP TTL 超過パケットを受信できない
raw ソケットを使用して TTL=1 で UDP パケットを送信するプログラムを作成しました。ローカル ホストでこのプログラムを実行すると、ICMP パケットを受信できます。しかし、Planetlab ノードで実行すると、ICMP パケットを受信できません。
Planetlab ノードでは、各ノードは多くのユーザーによって共有され、各ユーザーには仮想スライスのみが割り当てられます。したがって、一般的に、プロセスが特定のポートにバインドされている場合にのみ、そのポートからパケットを受信できます。そうでない場合、システムはランダムなパケットをスライスに配信できません。
しかし、traceroute のソース コードをダウンロードして、planetlab ノードで実行したところ、ICMP TTL を超えたパケットを受信できました。
つまり、tcpdump を使用して、Planetlab ノードで ICMP パケットをキャプチャします。プログラムを実行して TTL=1 で UDP パケットを送信すると、tcpdump は ICMP パケットをキャプチャできませんが、tcpdump を使用して TTL=1 で UDP パケットを送信すると、tcpdump は ICMP パケットをキャプチャできます。
この違いの潜在的な理由は何ですか?
ありがとう!
私のソースコードのいくつか:
ruby - ICMP メッセージを受信できないのはなぜですか?
ライブラリなしで簡単なtracerouteを作りたいです。
Wireshark で着信応答が表示されますが、メッセージを受信できません。のポートは のポートreceive_socket
と同じsend_socket
であり、指定されたプロトコルは正しい必要があります。
誰かが私を助けることができれば、それは素晴らしいことです.
java - InetAddress.isReachable メソッドを使用して中間ホップを取得する
InetAddress.isReachable(NetworkInterface , int ttl, int timeOut) は、ttl からのホップ数で特定のアドレスに到達できる場合は true、そうでない場合は false を返します。
また、成功または失敗のメッセージを取得した IP アドレスを知ることはできますか? つまり、isReachable が成功または失敗の応答を取得する中間ホップの IP を取得できるということです。
php - Traceroute スクリプトが間違った IP からトレースしている
ホスト/IP への traceroute を実行するためのスクリプトを作成しましたが、何らかの理由で、それを使用しているローカル ユーザーからではなく、サーバーからのトレースとして出力されます。端末で traceroute をプルアップすると、出力がまったく異なります。
ここで試すことができます http://beta.tracert.us コードをいじろうとしましたが、取得できないようです。私はこれを仕事用のユーティリティとして、そして他のユーティリティが仕事で少し遅れているのでそれを使用する人々のために、これを立ち上げようとしています.
すべてのヘルプは大歓迎です
networking - クライアントへの「プライベートWAN」を備えたインターネットプロバイダー?
変ですね。これが実際にどのように機能するか。これまでのところ、このようなネットワークを持つことは「不可能」であることを知っています。私のネットワークがどのように機能するかを詳しく説明します。
私はLANを持っています。192.168.1.0/24 で、ルーターは 192.168.1.1 にあります。このルーターにはパブリック アドレスがあります。テスト用のサーバーを実行しているので、IPアドレスを共有できます。ここまでは問題ありません。今、魔法が起こります。IPへのルートをトレースすると、これが得られました(Google DNSへ):
2 番目、3 番目、4 番目のホップとは何ですか? 192.168.1.1 が LAN と外部の 3 つのパブリック アドレスを持つ NAT サービスを実行している場合、クラス A のプライベート アドレスにするにはどうすればよいですか (はい、3 つあり、88,89,93 ネットワーク上に 3 つの「クラス A」IP があります)。 .
もう 1 つの問題は、4 番目のホップで 2 番目のオクテット 255 を取得する方法です。
誰でも気軽に私の no-ip ドメインを traceroute してください: synackfiles.no-ip.org 私のルーターを台無しにしないでください (ポートスキャンを行ったり、ssh または http auth でのログインに失敗するとブロックされるため、禁止されます。 traceroute だけなら問題ありません) :P
さて、2番目の魔法と奇妙なことが起こります。nmap を実行します。だから私はこれを手に入れました:
うーん、これは奇妙です。自国の WAN がどのように設計および構築されているかわかりません。私はポルトガル出身で、ISP は「ZON TVCABO」です。今すぐ検索できます。:P これは非常に非常に興味深い..
心から、
int3
c - 仮想マシンを介して gcc でコンパイルする際の問題
現在、Ubuntu を実行している仮想マシンを介してファイルをコンパイルしようとしていますtraceroutet.c
が、これが問題の原因であると考えています。大学の VPN 経由でもファイルにアクセスしていますが、問題が発生する可能性はありますか?
を使用して vm の端末からコンパイルしようとすると、次のgcc -o traceroutet traceroutet.c
エラーが発生します。
traceroutet.c:13:16: fatal error: ip.h: No such file or directory
compilation terminated
問題は、ヘッダー ファイルがソースと同じフォルダーに保存されているので、ここで動作すると思いgcc -o
ましたか? -I/h/SCC203/Lab 2/ip.c
コンパイル時にも使用してみましたが、同様のエラーが発生します。
私はgcc
しばらく使用していますが、問題はありませんでしたので、これは仮想マシンまたは VPN に関係していると思いますか?