アウトバウンドWebリクエストを行わずに外部IPアドレスを確認することはできますか?


21

接続がNATされている場合、アウトバウンドWebリクエストを行わずに外部IPアドレスを見ることができますか?

どのOS(Windows、Linuxなど)でも問題ありません。


7
HTTPのみを回避しようとしていますか、それとも発信トラフィックの送信をまったく回避しようとしていますか?唯一の普遍的なソリューションは、ある種の発信トラフィックの送信を伴いますが、HTTPである必要はありません。
18年

これは単なる仮説に過ぎず、アウトバウンドトラフィックをまったく作成したくありませんでした。
アクセルパーシンガー

2
ネットワーク/ルーターがエンタープライズグレードのNATセットアップの背後にある(つまり、ISPからプライベートIPアドレスを取得している)と言っていますか?もしそうなら、何かがパブリックネットワークに届き、基本的にwhatsmyip.comまたは同様のサービスのように「振り返る」ことなく、パブリックIPアドレスを見つけることができるとは思いもしません。
アセジャベリン

私が使っていたハックはルーターで確認することでした-実際には、何らかの理由でほとんどのWebベースのサービスがIPを正しく検出できないため、それをスクレイピングする非常に汚いスクリプトがありました。私のISPはそのように本当に楽しいです。
ジャーニーマンオタク

2
ISPに電話をかけて、顧客の詳細を試すことができます。インターネット接続もコンピューターも必要ありません。
トーマス

回答:


24

コンピューターがNATの背後にある場合、ルーターの外部IPアドレスを確認することはできますが、ルーターへの管理アクセスが必要です。

ルーターは外部IPアドレスを知っているので、構成ページにアクセスすると、そのIPアドレスを見つけることができます。この方法では、Webブラウザ以外の特別なツールは必要ありません。

情報を取得するためのツールを必要とする他のプロトコル:

ユーザー@dirktがテストしたように、すべてのメソッドはIPv4でのみ機能します(PCPを除く)。


@NicHartleyの誇張は確かに皮肉の一部になりますが、皮肉は口調やモックの意図に関するもので、どちらも人よりもテキスト形式で伝えられます。ただし、どのプロトコルでもIPを使用してIPアドレスを決定する必要があるのは明らかであり、トートロジー要件です(使用していないものを決定できないため)が、IPの上に構築されたプロトコルはまだ別のプロトコルであり、理論的には、その目的を達成する複数の方法を使用できます。Lightnessからのポイントは、Web要求の要件に関する主張に対抗することでした。
eques

2
ウェブ(すなわちHTTP)把握することが、おそらく必要ですが、最も簡単なされていない「その他の方法は、外部のWeb要求を行う必要があります」
eques

1
他の回答で述べたように、uPnP、NAT-PMP、PCPは、設定ページにアクセスする以外に、ルーターから情報を取得するための異なる方法です。言い方をすれば、「構成ページにアクセスする以外に、他の方法ではWebリクエストを行う必要がある」ように見えます。正しいのは、「ルーターから情報を取得する以外に、他の方法ではアウトバウンド接続の試行が必要になる」ことです(Web要求である必要はありません)。
Dirkt

@dirkt:UPnPについては確信がありません。NAT-PMP IPv4でのみ機能すると思います。IPv6ネットワーク上のPCPはIPv6プレフィックスを返し、さらに多くの処理を実行できますが、これは通常、商用ルーターには実装されていません。
ハリーマック

1
@harrymc:FritzboxのUPnPサービスエンドポイントはWANIPConn1/GetExternalIPAddressで、正しいアドレスを正常に返しました。
Dirkt

12

一部のNATで機能する方法はいくつかありますが、どこでも機能することが保証されているものはありません。

uPnP、NAT-PMP、およびPCP(ユニバーサルプラグアンドプレイ、NATポートマッピングプロトコル、およびポート制御プロトコル)にはすべて、対応するNATゲートウェイにパブリックアドレスを尋ねる方法があると思いますが、すべてのNATがこれらのプロトコルをサポートしているわけではありません。サポートは、企業またはキャリアグレードのNATソリューションよりもホームゲートウェイルーターで一般的です。

NATの背後にいることがわかった場合、トラフィックを変換するパブリックIPアドレスを確認する唯一の確実な方法は、NATが変換しない方法で、レポートするパブリックホストに送信トラフィックを送信することですあなたのトラフィックが来ているように見えたアドレス。Webベースのサービスを使用することも1つの方法ですが、クラウドサーバーインスタンスにsshdSSHで接続し、SSHセッションの発信元を確認することもできます。


8
また、システムが二重(またはそれ以上)NATの背後にある場合、UPnPなどは誤った結果を与える可能性があります。
user71659

@ user71659その種の要求に使用できるように、最も外側のNATに自動的にルーティングされるエニーキャストアドレスが存在するかどうか疑問に思っていました。
カスペルド

1
@kasperdすべてのNATは、それが最も外側のNATであると考えています。確かに、すべてのNATの外部に自動的にルーティングされるIPがあります。これらはパブリックIPと呼ばれます。
user253751

1
@ user20574いいえ、NATはそのように考えていません。ほとんどは気にしません。そのようなエニーキャストアドレスを定義する場合、標準では、NATがそのIPをそれ自体に割り当てる場合とそうでない場合を定義する必要があります。その答えは、外部IPがRFC 1918またはRFC 6598にある場合、NATはそれ自体にエニーキャストアドレスを割り当てません。
カスペルド

8

DNSリクエストを使用できますが、これは「ウェブリクエスト」のカテゴリに該当しないと思います。

nslookup myip.opendns.com resolver1.opendns.com

1
を使用することもできますdig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns。私はここでコマンドを見つけました:groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/...
kasperd

あなたのnsslookupコマンドは私のために失敗します。私が得ます Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd

1
@kasperd:IPv4でのみ機能します。申し訳ありません。digWindowsにはないので避けました。myaddrGoogle に関しては良い点ですが、私はそれを知りませんでした!Windowsでのnslookup同等物はnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad

IPv4とIPv6の両方を備えたマシンでこのコマンドを実行したため、IPv4を実際にサポートしていた場合は機能するはずです。問題はnslookup、どのIPバージョンをトランスポートに使用するかを指示できないようですが、OpenDNSがこれを行う方法は、あなたがする必要があることを意味します。それなしでは、どのIPバージョンnslookupがトランスポートに使用するかを予測し、それに応じてAまたはAAAAを要求する必要があります。行き詰まっているnslookup場合は、Googleなどの別のプロバイダーを使用できます。ただし、応答で取得できるプロトコルバージョンは1つのみであり、どちらを選択することもできません。
カスペルド

私はテストしましたがnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com、それは実際に機能します。しかし、IPv4とIPv6の両方がある場合、どちらを見るか選択できません。ほとんどの場合、IPv6アドレスが表示されます。NATのIPv4アドレスを知りたいので、おそらく使用しています。それを回避するには、IPv4のみの名前とIPv6のみの名前を持つサービスを使用する必要があり、それはNAT64の問題にも対処します。
カスペルド

7

既存の回答に1点追加したいと思います。

また、ネットワークの複雑さにも依存します。コンピューターが複数の外部IPアドレスを持つネットワーク内にあり、ルーターが行のどこかにある条件(宛先IPアドレス、時刻など)に基づいてインターネットにトラフィックを送信する可能性があります1つのアップリンクチャネルが夜間またはその他の理由で安価である)。

したがって、完全にするために、「外部IPアドレス」の概念では、アドレスが外部である宛先ポイントを定義する必要があります。

次の例でRouter #2は、NATを実行し、いずれかのアップリンクにトラフィックを送信でき、受信ホストはの異なる外部IPアドレスを見ることができますHost

または、特定の宛先(たとえばhost1.example.com)が常にを介してルーティングされUplink A、ホストがhost2.example.com常にを介してルーティングされる可能性がありUplink Bます。だから、それらのホストで見られるように、あなたの外部IPアドレスは、異なる場合がそれを提供しますUplink Aし、Uplink B異なるISPです。

   Uplink A                                  Uplink B
-------------                             -------------
      |                                         |
      |                                         |
      |     192.168.1.1         192.168.50.50   |
      |               -----------               |
      |---------------|Router #2|---------------|
                      -----------
                           |  192.168.100.1
                           |
                           |  192.168.100.2
                      -----------
                      |Router #1|
                      -----------
                           |  192.168.200.1
                           |
                           |  192.168.200.2
                      -----------
                      |   Host  |
                      -----------

したがって、トラフィックを送信すると、より信頼性の高い結果を得ることができます。


4

HTTPではなくDNSを使用できます。たとえば、次を使用できます。

dig +short TXT o-o.myaddr.l.google.com

これにより、使用しているDNSサーバーのユニキャストアドレスが表示され、EDNSがサポートされている場合は、IPアドレスも表示されますが、切り捨てられる場合があります。

完全なIPアドレスを取得するには、ローカルDNSサーバーをバイパスして、上記のリクエストをns {1,2,3,4} .google.comに直接送信できます

dig +short TXT o-o.myaddr.l.google.com @ns3.google.com

あなたが使用することができ、特定のプロトコルのバージョンでは、あなたのIPアドレスを確認する場合-6-4

dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com

必要に応じてOpenDNSを使用することもできます。OpenDNSはこのためにTXTレコードを使用せず、AおよびAAAAレコードを使用するため、探しているプロトコルバージョンを指定する必要があります。

dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com

トラフィックがプロトコル変換を通過する場合、異なる結果が得られるか、まったく得られないことに注意してください。NAT64の背後にあるマシンからのテスト上記のコマンドでIPv6アドレスを確認できましたが、NAT64のIPv4アドレスは確認できませんでした。

この答えは、これらのソース1 2 3および私自身の少しの研究に基づいています。


2

Webは一般にHTTPを指します。それが質問の意味である場合、たとえば、「NATのセッショントラバーサルユーティリティ」を表すSTUN(Wikipedia Article)を使用できます。

コメントで強調表示されたので、複数の外部IPが存在する場合があります。また、ワイヤレス接続がより一般的になっているため(4Gのもの)、ルーターから報告されたIPアドレスが公開されていないことも不可能ではありません。ISPがローカルルーターにプライベートIPを与え、後でネットワークを離れるときにパブリックIPに1対1で変換される一部の国では、光ファイバー接続でそのシナリオを満たしました。

したがって、「ネットワークからパケットを送信せずにパブリックIPを見つけることができる」という質問の場合は、状況に応じてMIGHTできますが、100%の確実な解決策はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.