内部IPアドレスを見つけるにはどうすればよいですか?


208

Ubuntuサーバー12.04がインストールされているため、GUIがありません。ifconfigコマンドを実行すると、自分のIPアドレスが見つかりません。inet addr:127.0.0.1と書かれています。

出力はifconfig -a次のとおりです。

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c 
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo     Link encap:Local Loopback
    inet addr 127.0.0.1  Mask:255.0.0.0
    inet6 addr:  ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536  Metric:1
    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)

etc / network / interfacesの内容は次のとおりです。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

誰かが私のためにこれを編集できるなら、etc / network / interfacesの内容は別々の行にあるべきです。

ホストaskubuntu.comの出力は次のとおりです。

;; connection timed out; no servers could be reached.

私は数ヶ月前にowncloudとwebminをセットアップし、問題なく1ヶ月使用していました。2か月前に電源が切れたと思いますが、昨日までサーバーの電源を入れませんでした。インターネットのセットアップに影響を与えるようなことは何もしていないので、なぜそれがもう機能しないのか分かりません。ネットワークトポロジに関する限り、PC用のpci-eネットワークカードがあります。イーサネット回線は、ネットワークカードからスイッチに行き、そこからモデム/ルーターに行きます。


1
@AvatarPartoこれらのパブリックアクセスが直面しているインタフェースするためのもので、この質問は、内部ネットワークについてです...
ブルーノ・ペレイラ

好奇心から/etc/network/interfaces、それは何を持っていますか?
パワーロード14年

ディレクトリ変更コマンドの使用方法は知っていますが、一度ファイルをリストする方法はわかりませんが、どうすればよいですか?
カムジョーンズ14年

lsディレクトリ内のファイルをリストします。ls -l詳細なリストが表示されます。特定のディレクトリの内容をリストするには、ls -l /etc/network。ディレクトリに変更して内容を一覧表示するにはcd /etc/network ;ls -letc/network/interfaces(これはファイルです)の内容を読み取るためsudo pico /etc/network/interfaces。(pico軽量のテキストエディター-読書と基本的な編集にvi
適して

回答:


205

これらのコマンドは、すべてのネットワーク情報を教えてくれます

ip add

または

ifconfig -a

あなたが言うようにそれがあなたに127.0.0.1だけを与えるなら、2つのオプションがあります:

  1. ネットワークカードが接続されていないか、システムで認識されていません

  2. ネットワークDHCPサーバーが稼働していないか、接続されていません


ログインすると、いくつかのアップグレードまたは更新があることがわかりますので、公式のubuntuウェブサイトに連絡して更新があることを確認する必要があると思いますので、インターネットが機能していると思います。
カムジョーンズ14年

@Skateguyはaskubuntu.comを開こうとし、すべてのifconfig -a
kamil 14年

GUIはありませんが、入力しようとしています。
カムジョーンズ14年

1
あなたの2つの選択肢がもたらす質問にどのように答えられますか?
カムジョーンズ

1
最初ipオプションを提案し、その後(非推奨)を提案します。ifconfig
カンパ

213
hostname -I

これにより、追加情報なしでIPアドレスのみが得られます。


16
それは最高です。非常に複雑な(しかし悪くはない)多くの答え..これは非常に単純です。
user1003916

3
完璧な答え。:)
john400

2
manページによると: `-I、--all-ip-addressesホストのすべてのネットワークアドレスを表示します。このオプションは、すべてのネットワークインターフェースで設定されたすべてのアドレスを列挙します。ループバックインターフェイスとIPv6リンクローカルアドレスは省略されます。`これにより、接続先のネットワークのIPアドレスが提供されますが、イーサネットまたはlxdサーバーとして使用している場合は、マシンのIPも提供されます。私の場合、lxdがあるので2つのアドレスが与えられます:192.168.0.78および10.0.3.1
Sergiy Kolodyazhnyy

6
うん。私の場合、10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1Dockerコンテナを実行しているため、もっとひどいです;)
アレックス

4
例えば、未加工の
docker

185

これは私が現在推奨しているものです:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

このコマンドの利点は、使用しているインターフェイス(eth0?eth1?またはwlan0?)を知る必要がないこと、ローカルホストアドレス、Dockerアドレス、またはVPNトンネルなどを除外する必要がないことです。そして、その瞬間にインターネット接続に現在使用されているIPアドレスを常に取得します(たとえば、イーサネットとwifiの両方、またはVPNなどで接続している場合に重要です)。

これにより、一部のインターフェイスで正しいIPが構成されていること(の出力の解析などifconfig)だけでなく、ルーティングテーブルが正しく使用されるように構成されていることもテストされます。

私は中にそのアイデアを発見したこの答え によってコリン・アンダーソン

GitHubのスクリプトコレクションのinternalipスクリプトで使用します。

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip

そして次のように使用します:

internalip

または:

internalip TARGET

TARGET IPアドレスとの接続に使用されるIPアドレスを取得します。デフォルトのターゲットは8.8.8.8GoogleのパブリックDNSリゾルバーであり、インターネットの適切なデフォルトです。

ただし、別のIPで実行する場合:

internalip 127.2.3.4

次に、あなたが取得します:

127.0.0.1

ループバックインターフェイスで127.2.3.4との接続に使用されるIPアドレスであるためです。ターゲットがLAN、VPN、またはその他の特別なネットワーク上にある場合に役立ちます。この場合、インターネットに到達するためのデフォルトIP以外のIPを接続に使用できます。

外部IP

あなた確認するには、外部 IPアドレス(あなたがそれらに接続したときに、インターネット上のサーバーが参照1 -ここで説明した内部IPアドレスとは異なる場合があります)を参照してください、この答えを


1
これは素晴らしい答えです、ありがとう!頭痛がとても減りました!:D
user65165

これは便利なトリックですが、OPは内部IPについて尋ねていたため、8.8.8.8にルーティング可能であると想定するのは安全ではありません。
mc0e

@ mc0e良い点。これが、私のスクリプトが他のIPに対してオプションの引数を取る理由です-これ8.8.8.8は単なるデフォルトです。私の答えでは127.2.3.4、例として使用しました。イントラネットまたはVPNでもIPを使用できます。ポイントは、通常、1つの内部IPアドレスではなく、異なるターゲットに使用される異なるアドレスがほとんどないということです。このようにして、特定のターゲットへの接続に実際に使用されているものを見つけることができます。
rsp

1
ご存知のように、これはMacの外部IPを提供します。
オジー

19

ifconfigを-aオプションとともに実行すると、インターフェイスにIPがあるかどうかに関係なく、すべてのインターフェイスが表示されることに言及する価値があると思います。

ifconfigを単独で実行すると、IPが割り当てられたインターフェースのみが表示されます。

Perlを使用してIPのみを表示するために使用できる素敵なトリックを次に示します。

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1

ネットワークカードがシステムによって認識され、その理由でeth0およびeth1が表示される

これは、インターフェイスにIPを割り当てる簡単な方法です。それに応じて有効なIP /サブネットを使用してください。

 ifconfig eth0 192.168.1.200/24 up 

次に、デフォルトルートを追加する必要があります

route add default gw 192.168.1.1

ベスト、


1
この方法を試してみますが、有効なIP、サブネット、および有効なデフォルトルートを見つける方法や知る方法など、理解するためにもう少し分解する必要があります。
カムジョーンズ14年

これは、ネットワークインターフェイスの静的IP割り当てです。つまり、192.168.1.0 / 24のサブネットを持つルーターの背後にいる場合は、ip exをpingできます。192.168.1.200で応答がない場合は、先頭に移動してifconfig interface_name IP_ADDRESS / MASK upを使用します。IPを割り当てた後、デフォルトのgwを追加する必要があります。
user1007727 14年

8

このコマンドは、単一のデバイスのすべてのIPアドレスを表示します。

dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1

1行または2行の出力を印刷します。システムがこれをサポートするように構成されている場合、最初のものはinet / IPv4アドレスであり、もう1つはinet6 / IPv6です。


6

ifconfigコマンドがIPアドレスを表示しなかった場合、GUIを介してUbuntuマシンのIPアドレスを見つける非常に簡単で簡単な方法があります。以下の手順に従ってください:

通知領域のネットワークアイコンをクリックして、[ 接続情報 ]をクリックします。 ネットワークアイコンオプション

これにより、IPアドレスなどの情報を含むウィンドウが表示されます。 IPアドレス情報


1

ここにはすでに多くの良い答えがありますが、システムに関するさまざまな事実を収集するために必ずしもパペットで使用されるわけではないファクターを指摘すると思いました。facterの主な利点は、それがであなたのすべての操作が保存されます素敵なきれいな出力与えることでgrepsedawkcutperlそして、あなたが興味を持っているどのインターフェイスあなたに言うつもりはないが、あなたはそれを知っている場合など以下は、クリーンアップするために他の残骸なしであなたにIPを与えます:

facter ipaddress_eth0 

1

ipコマンド

ここにip addr方法のバリエーションがあります。

ip-o単一ライン上のすべての情報を入れることができますオプションは、 -これはのようなツールで解析するために有用ですawkperl-4オプションとの組み合わせでは、IPv4アドレスのみが表示されます。したがって、出力は次のようになります(注-wlan7を確認するインターフェイスに置き換えてください)。

$ ip -4 -o addr show wlan7
3: wlan7    inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\       valid_lft 85654sec preferred_lft 85654sec

ご覧のとおり、出力のIPアドレスは4番目の列/ワードです。残りは、選択したツールを使用した単純な解析演習です。ここでは、Pythonを使用しています。

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

同じこと、ここでの文字列<<<とコマンド置換のみ$()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

個人的には、これは素晴らしい機能として保存されている~/.bashrcので、入力が少なくて済みます。

wlan_ip() {
    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 
} 

PerlとRubyのバージョンは少し短くなっています。

$ ip -4 -o addr show  wlan7 | perl -lane 'print $F[3]'                         
192.168.0.78/24

$ ip  -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'                 
192.168.0.78/24

Wireshark

ネットワーク分析ツールの使用に精通している場合、IPアドレスを取得するには、ブラウザーのキャッシュをクリアし、特定のインターフェイスでWiresharkのキャプチャを開始し、GET送信されているhttp パケットを探すだけです。宛先列にはIPアドレスが表示されます

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