web-dev-qa-db-ja.com

WindowsコマンドラインからパブリックIPアドレスを取得するにはどうすればよいですか?

http://whatismyipaddress.com/ などのサイトを使用せずに、cmdを介してパブリックIPアドレスを取得することは可能ですか?ルーターの後ろにいます。

できるだけ詳しくお気軽にどうぞ。 Net +試験に向けて勉強しています

7
MIchael S

PowerShell Invoke-RestMethodを使用できます。

PS > Invoke-RestMethod ipinfo.io/ip
99.109.97.210

またはエイリアス:

PS > irm ipinfo.io/ip
99.109.97.210
11
Rachel Duncan

できません。どうして? 「パブリックIPアドレス」の明確な定義はありません。答えは大規模な抽象概念であり、私のポイントを説明するには十分ですが、小さな穴がたくさんあります。大きなものについてコメントしてください(プラグインできるように)。

基本的に、すべてのパブリックIPアドレスは、プライベート使用のために予約されていないサブネット上のアドレスです。ネットワークスタックに関する限り、パブリックIPアドレスとプライベートIPアドレスの違いはありません。サブネット間の単なるルーティングです。理論的には、閉じたネットワークでは、そのひどい実践中に、パブリックIPアドレス範囲を使用し、その逆を行うことができます-RFC 1918アドレスを使用する公共のインターネット上では、物事を壊す可能性があります。

Pathpingを実行した場合(そして、自分のIPアドレスをインターネット上に表示するつもりはないが、cgnではなく、101で始まる場合)

enter image description here

私のIPアドレスはルート上のどこにもありません(したがって、実際にはPCがパブリックIPアドレスを認識していない可能性があります)。

パブリックIPアドレスの概念も曖昧です。 double nat(eww!)、さらにはtriple nat(多分IPアドレス範囲が重複している!)の背後には何がありますか? CGNの背後にあるのは何でしょうか?

基本的に、各ルーターまたはシステムは、次のホップを知る必要があるだけで、PCがパブリックIPアドレスを知る必要も方法もありません。

外部サービスが「パブリック」IPアドレスを見つけることができるのは、サーバーが関係する限りメッセージが配信されたホップだからです。また、それがエンドユーザーのコンピューター、エンドユーザーのコンピューターの背後にあるプロキシ、ルーター/スイッチ、またはトースターであるかどうかを知る必要はありません。

9
Journeyman Geek

これを実行するWindowsに自動的に組み込まれるものはありません。他のユーザーが過去に提案したように、次のようなことを試すことができます。

C:\> nslookup myip.opendns.com resolver1.opendns.com

dNSリクエストを使用して、公開IPを返します。回答は最初に見つかりました ここ

4
Sam Waldie

これを試して。 %MyIP%を変数として、または単に表示するために使用できます。

@echo off
nslookup myip.opendns.com resolver1.opendns.com | find "Address" >"%temp%\test1.txt"
more +1 "%temp%\test1.txt" >"%temp%\test2.txt"
del %temp%\test1.txt
set /p MyIP=<%temp%\test2.txt
del %temp%\test2.txt
set MyIP=%MyIP:~10%
cls
echo .
echo %MyIP%
echo .
1
ArthurG

Cmdを使用してパブリックIPアドレスを取得することはできますか?

あなたが間違った質問をしているので、あなたの質問は現状では答えることができません。

あなたは尋ねるべきだった:

コマンドラインからインターネット接続の[〜#〜] wan [〜#〜]アドレスを取得するにはどうすればよいですか?

WANアドレスは、パブリックまたはプライベートIPアドレスです。

  • ISPはWANアドレスを提供します。
  • 静的/動的のどちらでもかまいません
  • パブリック/プライベートにすることができます

それはすべて、ISPがインターネットサービスを提供するためにあなたのネットワークに接続するためにhis networkをどのように構成したかに依存します。

1
DavidPostill
nslookup myip.opendns.com resolver1.opendns.com | find "Address:" >"%temp%\test1.txt"
more +1 "%temp%\test1.txt" >"%temp%\test2.txt"
del %temp%\test1.txt
set /p MyIP=<%temp%\test2.txt
del %temp%\test2.txt
set MyIP=%MyIP:~10%
echo My IP is %MyIP%

これは自動クリーニングしますが、2つのIPアドレス(resolver1.opendns.comからのIPアドレスと現在のIPアドレス)を取得し、resolver1アドレスを切り取って、変数MyIPを現在のIPアドレスとして設定します。バッチファイルでうまく機能します。

1
ArthurG

これはPowershellを使用したソリューションです:

@powershell -NoProfile -Command "(new-object net.webclient).DownloadString('http://www.trackip.net/ip')"
0
heavyd