Private IP Range 確認

表題の通り。スクリプト内で取得したIPが、PublicIPなのかPrivateIPなのかを判別させたい。人間が目で見れば判別はすぐにできるのだがスクリプト内で判定させるのはどうしたら良いのだろう?と。

■ 環境

  • macOS High Sierra
  • Amazon Linux

■ ipcalc

先日の`ipcalc`で何かしら取得できないかと思ったのだが、特にこれと言った表記やオプションは無かった。

$ ipcalc -c 192.168.33.10
$

■ dig

逆引きさせて何も返らないんじゃないかと思いやってみた。

$ dig -x 192.168.33.10

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.57.amzn1 <<>> -x 192.168.33.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 54828
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;10.33.168.192.in-addr.arpa.    IN    PTR

;; AUTHORITY SECTION:
168.192.in-addr.arpa.    60    IN    SOA    localhost. nobody.invalid. 1 3600 1200 604800 10800

;; Query time: 1 msec
;; SERVER: 10.1.0.2#53(10.1.0.2)
;; WHEN: Fri May 18 15:17:09 2018
;; MSG SIZE  rcvd: 103

$

AUTHORITY SECTION“の結果が使えそうである。ここが”localhost.“であるとPrivateIPであるっぽい。表記を少なくして再度試す。

$ dig +noall +authority -x 10.0.1.10
10.in-addr.arpa.    60    IN    SOA    localhost. nobody.invalid. 1 3600 1200 604800 10800
$

良さげな感じである。

以上。

■ 関連

ipcalc

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA