Macのターミナル上でプライベートIPアドレスを調べる方法


最も簡単にプライベートIPアドレスを調べる方法

わざわざターミナルでコマンドを入力しなくても,システム環境設定>ネットワーク>[ 詳細 ]ボタン押下>TCP/IPタブ>IPv4アドレスの欄から簡単に調べる事ができるが,ネットワーク系のスキルを向上させるためにはやはり最低限のターミナルコマンドを使いこなせなければならないというのが筆者の持論である.

ターミナル上でプライベートIPアドレスを調べる方法 1

Macにおいてネットワーク状況を調べるための有名なコマンドと言えばifconfig.Windowsでいうところのipconfigに相当するものである.

$ ifconfig
lo0: flags=XXXX<UP,LOOPBACK,RUNNING,MULTICAST> mtu XXXXX
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen XXX 
    inet 127.0.0.1 netmask 0XXX000000 
    inet6 XXXX::XXXXX prefixlen 64 scopeid XXX 
    nd6 options=1<PERFORMNUD>
gif0: flags=XXXX<POINTOPOINT,MULTICAST> mtu XXXX
stf0: flags=0<> mtu XXXX
en0: flags=XXXX<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu XXXX
    options=27<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
    ether XX:XX:XX:XX:XX:XX 
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: inactive
en1: flags=XXXX<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu XXXX
    ether XX:XX:XX:XX:XX:XX 
    inet6 XXXX::XXX:XXXX:XXXX:XXXXXXXX prefixlen 64 scopeid XXX 
    inet 192.168.100.103 netmask XXXXXXXXXX broadcast 192.168.100.XXX
    inet6 XXXX:XXXX:XXX:XXXX:XXX:XXXX:XXXX:XXXX prefixlen 64 autoconf 
    inet6 XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 autoconf temporary 
    inet6 XXXX:XXXX:XXX:XXXX:XXX:XXXX:XXXX:X prefixlen 64 dynamic 
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
p2p0: flags=XXXX<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu XXXX
    ether XX:XX:XX:XX:XX:XX 
    media: autoselect
    status: inactive

上記コマンドだと余計な情報が多過ぎる.

プライベートIPアドレスはデバイス名en1のinetにある(今回の場合は192.168.100.103)

〜プライベートIPアドレスが割り当てられているデバイス名について〜
・古い年式のMacの場合はen1となっている.
・現行のMacの場合はen0となっている.

必要に応じて以降のコマンドは置き換えて頂きたい.

せっかくなので,スクレイピングしてプライベートIPアドレスの部分のみ取得を試みる.

$ ifconfig en1 inet
en1: flags=XXXX<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu XXXX
    inet 192.168.100.103 netmask XXXXXXXXXX broadcast 192.168.100.XXX

あと少し!

awkコマンドを用いて,スペース区切り2つ目の文字列を取得

$ ifconfig en1 inet | awk '{print $2}'
flags=XXXX<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST>
192.168.100.103

1行目が余分なので力技で正規表現で絞り込み

$ ifconfig en1 inet | awk '{print $2}' | grep '^192'
192.168.100.103

無事にプライベートIPアドレスの取得に成功!

ターミナル上でプライベートIPアドレスを調べる方法 2

ifconfigと比べると情報量が少ないが実はもうひとつ,ネットワーク状況を調べるための有名なコマンドが存在する.それがnetworksetup -getinfo Wi-Fiである.

それでは実行してみよう

$ networksetup -getinfo Wi-Fi
DHCP Configuration
IP address: 192.168.100.103
Subnet mask: 255.255.255.0
Router: 192.168.100.1
Client ID: 
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: XX:XX:XX:XX:XX:XX

確かに情報量が少なくプライベートIPアドレスを見つけやすい.

先程と同様に正規表現とawkコマンドを用いて取得を試みる.

$ networksetup -getinfo Wi-Fi | grep '^IP address' | awk '{print $3}'
192.168.100.103

無事にプライベートIPアドレスの取得に成功!

プライベートIPアドレスの用途

筆者のようにPHPでWebアプリケーションを開発する際にビルトインウェブサーバを立て,同じネットワーク内の他のマシンからサーバマシンに接続しテストを行う際にプライベートIPアドレスを把握しなければならないケースが出てくる.

ビルトインウェブサーバの立て方

ドキュメントルートへ移動

$ cd /Library/WebServer/Documents

下記コマンドでも可(フルパス表記)

$ cd ~/../../Library/WebServer/Documents

ビルトインウェブサーバを立てる

例)プライベートIPアドレスが192.168.100.103の場合

$ php -S 192.168.100.103:8000