WindowsおよびLinuxコマンドラインから外部IPアドレスを取得するにはどうすればよいですか?
Windowsでは、ipconfigは内部ネットワークIPアドレスを表示しますが、外部IPアドレスは表示しません。
WindowsもLinuxもその外部IPアドレスを認識していないため、ネイティブに通知することはできません。したがって、外部サービスを使用してIPアドレスを確認する必要があります。
Linuxでは、curl
と、アドレスを知らせる多くのサービスの1つを使用できます。
$ curl ip.alt.io
123.123.123.123
インストール curl など、Windowsには同等のオプションがあります。 curl自体がIPアドレスを決定するのではなく、外部WebサイトにどのIPアドレスから来ているように見えるかを尋ねているだけであることに注意してください。
ただし、これを行う最良の方法は、 no-ip.com のようなダイナミックDNS(DDNS)サービスを使用することです。ここで、外部IPアドレスをDNSに動的に登録できます。したがって、IPアドレスを使用する代わりに、myhomeip.no-ip.com
などのドメインアドレスを使用できます。
ほとんどの国内ルーターは、外部アドレスが変更されたときにDDNSを自動的に更新することをサポートしています。そうでない場合は、WindowsおよびLinux用のクライアント(ddclient)があります。
Google 検索私のIPアドレスは何ですか は非常にうまく機能します。
パブリックIPアドレスは##。###。###。178です
また、ネットワークに関する情報を取得して、何が起こっているかについての良いアイデアを得ることができます。 netstat 、 traceroute 、ssh、 telnet などのツールを使用すると、インターネットのpuplicネットワークにどのようにアクセスしているかを把握できます。
パブリックIPアドレスとプライベートIPアドレスがあります。プライベートIPアドレスの範囲がわかっている場合は、外部ネットワークで使用しているIPアドレスを推測できます。 traceroute
がプライベートIPアドレス範囲の使用を終了するとすぐに、パブリックネットワーク上に移動します。
プライベートネットワーク (ウィキペディア)
10.0.0.0/24
172.16.0.0/20
192.168.0.0/16
まず、デフォルトゲートウェイを見つけることから始めます。
Linuxの場合:
netstat -r
Windowsの場合:
netstat/r
これはあなたに次のようなものを表示するはずです
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.0.0 * 255.255.255.0 U 0 0 0 eth0
172.16.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
link-local * 255.255.0.0 U 0 0 0 eth0
default 172.16.0.2 0.0.0.0 UG 0 0 0 eth0
下部にあるデフォルトに注意してください。これは、パブリックワールドに出かける前の最後のステップです。
ここで、GoogleのDNSサーバーアドレス8.8.8.8へのtraceroute
を使用して、外の世界へのパスを確認します。
Linux:
トレースパス8.8.8.8
ウィンドウズ:
traceroute 8.8.8.8
これはあなたにこのようなものを与えるはずです
traceroute to 8.8.8.8 (8.8.8.8), 30 Hops max, 60 byte packets
1 172.16.0.2 (172.16.0.2) 0.564 ms 0.882 ms 0.848 ms
2 ##.###.###.177 (##.###.###.177) 12.239 ms 13.040 ms 13.859 ms
デフォルトルートの後のステップは、外部ネットワークへのルートでした。
Google検索 はtraceroute
とは異なりますが、1桁だけ異なります。これは、ISPと通信できるようにするには、ISPと同じ範囲のIPアドレスが必要になるためです。したがって、ルーターには、ISPがトラフィックを世界の他の地域にルーティングするために使用する外部IPアドレスから1つ下のIPアドレスがあります。
パブリックIPアドレスは##。###。###。178です
ここで役立つのは、ルーターが3つのIPアドレスすべてを持っている1つのデバイスを知ることです。プライベートルート172.16.0.2(デフォルトルート)と提供された内部ルートは、ISP ##。###。###。178と外部のもの##。###。###。177を購入します。インターネットへの接続に使用します。したがって、Telnet/sshを使用してルーターにリモート接続する方法を知っている場合は、ルーターに直接クエリを実行して、コマンドラインを使用してこの情報を取得できます。
ルーターやISPが異なれば、これを管理する方法も異なります。ほとんどの家庭用DSLモデムは、パスワードとログイン情報を持っているため、sshを簡単に利用できますが、ISPがオフィスにルーターを設置している場合、ルーターへのアクセスは許可されない可能性があります。
Lynxツールを使用して外部IPを取得できます。
lynx --dump http://whatismyip.org
あなたのマシンはあなたの外部アドレスを知りません。外部サービスを使用して結果を取得する必要があります(例:checkip.dyndns.org)。
任意のコマンドラインHTTPクライアントをwgetまたはcurlとして使用できます。
$ wget -q -O - checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 129.132.208.173</body></html>
wgetはWindowsとGNU/Linuxの両方で利用可能です
ifconfig.me は、ブラウザでアクセスして、必要なほぼすべての情報を取得できるサイトです。表示されている変数を使用してそのページでcurl
を使用して、特定の情報の一部だけを取得することもできます。データはJSON形式の文字列で返されるため、スクリプトを簡単に作成できます。その他の例については、ifconfig.meページの下部を確認してください。
例えば:
curl ifconfig.me/ip
curl ifconfig.me/all