サーバの構築などの仕事をしていると、自分があまり知らない環境で仕事をすることもある。
そんな時に、よくわからない踏み台経由で作業を行ったりすることもあり、どの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を利用した結果。

shell
# 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アドレスから仮想マシンであることを判断しているのがすごいところ。