外部IPを見つけるには、外部Webベースのサービスを使用するか、システムベースの方法を使用します。より簡単な方法は外部サービスを使用するifconfig
ことですNAT
。また、ベースのソリューションは、あなたがの背後にいない場合にのみシステムで動作します。2つの方法については、以下で詳しく説明します。
外部サービスを使用して外部IPを見つける
最も簡単な方法は、コマンドラインブラウザーまたはダウンロードツールを介して外部サービスを使用することです。以来wget
のUbuntuでデフォルトで提供されています、我々はそれを使用することができます。
IPを見つけるには、
$ wget -qO- https://ipecho.net/plain ; echo
礼儀:
また、lynx
(ブラウザ)を使用するか、上記のコマンドのわずかなバリエーションのcurl
代わりにwget
、外部IPを見つけることもできます。
curl
IPの検索に使用:
$ curl https://ipecho.net/plain
より良いフォーマットの出力を使用するには:
$ curl https://ipecho.net/plain ; echo
リゾルバーとしてdig
with OpenDNS
を使用する、より高速な(ほぼ最速の)メソッド:
ここでの他の回答はすべて、HTTPを介してリモートサーバーに送られます。それらのいくつかは、出力の解析を必要とするか、User-Agentヘッダーに依存してサーバーがプレーンテキストで応答するようにします。また、非常に頻繁に変更されます(下に行く、名前を変更する、広告を表示する、出力形式を変更するなど)。
- DNS応答プロトコルは標準化されています(形式の互換性は維持されます)。
- 歴史的に、DNSサービス(OpenDNS、Google Public DNS、..)は、今日流行している新しいwhatismyip.com HTTPサービスよりもはるかに長く存続する傾向があり、安定性、拡張性が高く、一般的に管理されています。
- (マイクロ最適化を重視するオタクの場合)、この方法は本質的に高速である必要があります(数マイクロ秒だけ)。
リゾルバとしてOpenDNSでdigを使用する:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
コピー元: https : //unix.stackexchange.com/a/81699/14497
外部サービスに依存せずに外部IPを見つける
端末に次のように入力します。
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
上記では、交換してください<interface_name>
:例えば、あなたの実際のインタフェースの名前でeth0
、eth1
、pp0
など、...
使用例:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
端末に次のように入力します(これにより、システム内のすべてのネットワークインターフェイスの名前とIPアドレスが取得されます)。
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
使用例:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
注意:出力は指標であり、実際のものではありません。
礼儀: https : //www.if-not-true-then-false.com/2010/linux-get-ip-address/
更新
LANG=c
ifconfig
ベースの使用法に追加されたため、ロケール設定に関係なく、常に英語の出力が得られます。