接続がNATされている場合、アウトバウンドWebリクエストを行わずに外部IPアドレスを見ることができますか?
どのOS(Windows、Linuxなど)でも問題ありません。
接続がNATされている場合、アウトバウンドWebリクエストを行わずに外部IPアドレスを見ることができますか?
どのOS(Windows、Linuxなど)でも問題ありません。
回答:
コンピューターがNATの背後にある場合、ルーターの外部IPアドレスを確認することはできますが、ルーターへの管理アクセスが必要です。
ルーターは外部IPアドレスを知っているので、構成ページにアクセスすると、そのIPアドレスを見つけることができます。この方法では、Webブラウザ以外の特別なツールは必要ありません。
情報を取得するためのツールを必要とする他のプロトコル:
ユーザー@dirktがテストしたように、すべてのメソッドはIPv4でのみ機能します(PCPを除く)。
WANIPConn1/GetExternalIPAddress
で、正しいアドレスを正常に返しました。
一部のNATで機能する方法はいくつかありますが、どこでも機能することが保証されているものはありません。
uPnP、NAT-PMP、およびPCP(ユニバーサルプラグアンドプレイ、NATポートマッピングプロトコル、およびポート制御プロトコル)にはすべて、対応するNATゲートウェイにパブリックアドレスを尋ねる方法があると思いますが、すべてのNATがこれらのプロトコルをサポートしているわけではありません。サポートは、企業またはキャリアグレードのNATソリューションよりもホームゲートウェイルーターで一般的です。
NATの背後にいることがわかった場合、トラフィックを変換するパブリックIPアドレスを確認する唯一の確実な方法は、NATが変換しない方法で、レポートするパブリックホストに送信トラフィックを送信することですあなたのトラフィックが来ているように見えたアドレス。Webベースのサービスを使用することも1つの方法ですが、クラウドサーバーインスタンスにsshd
SSHで接続し、SSHセッションの発信元を確認することもできます。
DNSリクエストを使用できますが、これは「ウェブリクエスト」のカテゴリに該当しないと思います。
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
。私はここでコマンドを見つけました:groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/...
nsslookup
コマンドは私のために失敗します。私が得ます Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
Windowsにはないので避けました。myaddr
Google に関しては良い点ですが、私はそれを知りませんでした!Windowsでのnslookup
同等物はnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
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の問題にも対処します。
既存の回答に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 |
-----------
したがって、トラフィックを送信すると、より信頼性の高い結果を得ることができます。
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アドレスは確認できませんでした。
Webは一般にHTTPを指します。それが質問の意味である場合、たとえば、「NATのセッショントラバーサルユーティリティ」を表すSTUN(Wikipedia Article)を使用できます。
コメントで強調表示されたので、複数の外部IPが存在する場合があります。また、ワイヤレス接続がより一般的になっているため(4Gのもの)、ルーターから報告されたIPアドレスが公開されていないことも不可能ではありません。ISPがローカルルーターにプライベートIPを与え、後でネットワークを離れるときにパブリックIPに1対1で変換される一部の国では、光ファイバー接続でそのシナリオを満たしました。
したがって、「ネットワークからパケットを送信せずにパブリックIPを見つけることができる」という質問の場合は、状況に応じてMIGHTできますが、100%の確実な解決策はありません。