サーバの構築などの仕事をしていると、自分があまり知らない環境で仕事をすることもある。
そんな時に、よくわからない踏み台経由で作業を行ったりすることもあり、どのIPアドレスにどのマシンが紐付いているのかを調べるところから始めることも多い。

そんな時に、少なくともネットワーク越しにOSの種類及びコンピュータ名を取得する方法についてをまとめてみることにした。

1.Ping

ネットワーク越しにざっくりとしたOSの種類を調べるならば、Pingを利用するとよいだろう。
以前こちらでも記述したが、Pingに応答するメッセージのTTL値は、各OSの種類によって異なっている。

大まかに分けると、OSの種類別でのデフォルトのTTL値は以下のような感じだ。

  • 64  … Linux系
  • 128 … Windows系
  • 255 … UNIX系

この値はPingを発信したクライアント ⇔ サーバ間のルーターの数(厳密には、間にあるルーターの数 + 1)に応じて減っていくので、実際に出力される値はこれよりも少ない値が出力されるだろう。

2.nmap

より詳細に調べたいというのであれば、利用できる環境は限られるがnmapを用いるといいだろう。
nmapには、ターゲットのOSの種類を分析する「-O」オプションが存在するので、それを利用すると良いだろう。以下の例は、検証用のWindows 7が搭載されているマシンに対し、nmap -Oを利用した結果。

# nmap 192.168.0.XXX -O

Starting Nmap 5.51 ( http://nmap.org ) at 2015-02-18 02:13 JST
Nmap scan report for 192.168.0.183
Host is up (0.00031s latency).
Not shown: 993 filtered ports
PORT     STATE SERVICE
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
2869/tcp open  icslap
3389/tcp open  ms-term-serv
5357/tcp open  wsdapi
6000/tcp open  X11
MAC Address: 00:0C:29:EE:A7:35 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows 2008|7|Vista
OS details: Microsoft Windows Server 2008, Microsoft Windows 7 Professional, Microsoft Windows Vista SP0 or SP1, Server 2008 SP1, or Windows 7
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.44 seconds

地味に、macアドレスから仮想マシンであることを判断しているのがすごいところ。