Linuxを使用してネットワーク上の未使用のIPアドレスを見つけるにはどうすればよいですか?


28

ネットワーク上の2台のコンピューター(AとB)にアクセスできます。両方とも、255.255.255.128のサブネットマスクを持つ静的IPアドレスを取得しています(DHCPサーバーが使用されていないことを確認しました)。同じマシンに複数のIPアドレスを設定したいので、サブネットですべてのIPアドレスがすでに使用されているものを知りたいです。

以前の質問から、nmap -sP -PR 172.16.128.*コマンドを試しましたが、2台のコンピューター(AとB)で同じコマンドが異なる結果を与えるため、その結果については懐疑的です。Aでは、結果には、AおよびBの IPアドレスを含めて、(おそらく)すでに使用されている8つのIPアドレスのリストが表示されます。

Nmap done: 256 IP addresses (8 hosts up) scanned in 1.23 seconds

しかし、Bでは結果が異なります。つまり、

Nmap done: 256 IP addresses (0 hosts up) scanned in 0.00 seconds

Bの結果は、AのIPアドレスだけでなく、自身のIPアドレスも表示していません!

ここで何が間違っていますか?Red Hat Linux(RHEL)で、私のコンピューターが属しているサブネットで使用されているすべてのIPアドレスを検出する確実な方法はありますか?

RHEL: 6.5
Nmap version: 5.51

9
誰がネットワークを管理していますか?任意のIPアドレスをホストに割り当てる許可を持っていますか?
ロジャーリップスコム

4
はい、許可されています。それは良い質問です。
ヴィシャルシャルマ

11
適切な答えを得る唯一の方法は、ネットワーク管理者に尋ねることです。あなたが何かをなど、デバイスがオフにされるかもしれないので、不正確であること、再起動、応答しないリスク
ジョン・ベントレー

7
RogerとJonのコメントを完成させるために、ネットワーク内のIPがDHCPなしで手動で割り当てられている場合、すべてのIP割り当てが記録され、人々ネットワークの管理には、この情報が必要です。他のマシンのIPを不本意に盗まないことを保証する技術的な解決策はありません(ダウンしたサーバーまたはリモートユーザーのラップトップとします)。このレジスタが失われたり存在しない場合、完全なインベントリが必要です。
ザキンスター

シェルが可能性のあるファイル名としてそれを展開しようとしないように、ワイルドカードのIPアドレスを引用する必要があります。たとえば、nmap -sP -PR '172.16.128.*'
ロアイマ

回答:


39

イーサネットLAN上の正常に動作するデバイスは、ほとんどすべてのトラフィックを自由に無視できるため、PING、ポートスキャンなどはすべて信頼できません。ただし、デバイスはARP要求を自由に無視できません。あなたがローカルネットワークをスキャンしていると指定した場合、あなたが望むことをする最も脆弱な方法は、リモートアドレスに接続してからARPキャッシュを調べることです。

以下に、単純な、フィルタリングを行わないデバイス(つまり、IPトラフィックの一部のクラスを無視するように構成されていないデバイス)を示します。

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.351 ms
[...]
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.1
? (192.168.3.1) at b8:27:eb:05:f5:71 [ether] on p1p1

フィルタリングデバイスは次のとおりです(すべてのトラフィックiptablesを無視するように1行で構成されたデバイス)。

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.31
? (192.168.3.31) at b8:27:eb:02:e4:46 [ether] on p1p1

これがダウンしているデバイスです。MACアドレスがないことに注意してください。

[me@risby tmp]$ ping -c 1 -W 1 192.168.3.241
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.241
? (192.168.3.241) at <incomplete> on p1p1

この方法は絶対的ではありません-オフになっているデバイスを見逃しますが、それは私が今まで試した中で最も恐ろしい方法ではありません。

編集:エリック・ドゥミニル、はい、それはローカルネットワークでのみ動作します。パラグラフ1を参照してください。

Vishal、メソッドは機能的に同じです。レオの答えで引用されているテキストに注意してくださいnmap

特権ユーザーがローカルイーサネットネットワーク上のターゲットをスキャンしようとすると、--send-ip指定されない限りARP要求が使用されます。

彼の方法では、タイピングが少なくて済みます。私は特権なしで行うことができ、実際に何が起こっているのかをよりよく理解できるかもしれません。ただし、どちらの場合も同じことがワイヤ上で行われます。


2
これは、同じローカルネットワーク内のデバイスでのみ機能しますか?私のサーバーで試してみましたが、pingリクエストはその間のどこかにドロップされ、関連する行が見つかりませんarp
エリックドゥミニル

回答ありがとうございます。あなたの方法が@Leoの方​​法とどのように比較されるか知りたいだけです。何らかの方法でそれよりも優れていますか(そうでなければ、1つのコマンドだけを使用する方が簡単です)。
ヴィシャルシャルマ

2
@VishalSharma、EricDuminil:上記の編集を参照してください。
MadHatterは、Monicaを

明確にするために、@ Leoのメソッドは、特権ユーザーが使用する場合にのみあなたのメソッドに似ていることを意味します。また、特権ユーザーとは、ユーザーがsudoアクセスを持っているということですか?
ヴィシャルシャルマ

1
@VishalSharmaコメントの最初の部分は正しいです。特権ユーザーには、sudo -u root(通常はに短縮されるsudo)の下で何かを行うことが含まれますが、単にrootとしてログインするか、または行ったこと/bin/suがあるため、包括的な用語です。
MadHatterは、Monicaを

20

デバイスはARP要求を無視できないため、という名前のツールを使用するのが好きですarp-scan。ほとんどのリポジトリで利用可能です。

--localnetスイッチでコマンドを実行すると、内部ネットワーク全体の概要が表示されます。

sudo arp-scan --localnet

ネットワーク上のすべてのIPアドレスとMACアドレスのリストを提供します。スキャンするネットワーク範囲を指定することもできます。

sudo arp-scan 172.16.128.0/25

複数のネットワークインターフェイスが構成されている場合は、スイッチで使用するネットワークインターフェイスを指定できます-I

sudo arp-scan -I eth0 172.16.128.0/25

可能なスイッチの詳細については、https://linux.die.net/man/1/arp-scanで、またはを実行してくださいman arp-scan


有望なツールのように見えますが、RHEL 6.5には付属していません(少なくとも私の場合はありません)。
ヴィシャルシャルマ

@VishalSharmaそれは残念です。CentOSでも利用できるので、RHELでも利用できると思いました。
ソーシー

4
FedoraのEnterprise Linux用追加パッケージEPELにあります。
mattdm

LaBreaが実行されている場合は機能しません。
-joshudson

@joshudson LaBreaの実行中に、ツールやソフトウェアがネットワークで未使用のIPアドレスをスキャンすることは不可能だと確信しています。
Thorchy

11

Red Hat 6.5で実行しているnmapのバージョンはわかりませんが、最近のリリースでは、正しい(より高速な)方法は次のようになります。

nmap -sn -n 172.16.128.0/25

これにより、ネットワーク内のすべてのホストが一覧表示されます(したがって、使用可能なはずのサブネットから他のIPを使用できます)。

編集してメモ:言及したサブネットは255.255.255.128ですが、254個のホストをスキャンしているとして出力を表示します。何かが足りない場合を除き、/ 25マスクと126個のホストが使用可能である必要があります。/ 24をスキャンする場合は、上記のコマンドを変更して、すべての254ホストを照会します。

nmapブックから、-sP廃止され、次のものに置き換えられ-snます。

-sn(ポートスキャンなし)

このオプションは、ホスト検出後にポートスキャンを実行せず、ホスト検出プローブに応答した使用可能なホストのみを出力するようにNmapに指示します。これは多くの場合「pingスキャン」として知られていますが、tracerouteおよびNSEホストスクリプトの実行を要求することもできます。デフォルトでは、これはリストスキャンよりも1段階だけ邪魔になり、多くの場合同じ目的で使用できます。注目を集めることなく、ターゲットネットワークの軽度の偵察を可能にします。起動しているホストの数を知ることは、すべての単一IPおよびホスト名のリストスキャンによって提供されるリストよりも攻撃者にとって価値があります。

多くの場合、システム管理者はこのオプションも有用だと感じています。ネットワーク上で使用可能なマシンを数えたり、サーバーの可用性を監視したりするのに簡単に使用できます。これはしばしばpingスイープと呼ばれ、多くのホストがブロードキャストクエリに応答しないため、ブロードキャストアドレスにpingするよりも信頼性が高くなります。

-snで行われるデフォルトのホスト検出は、ICMPエコー要求、ポート443へのTCP SYN、ポート80へのTCP ACK、およびデフォルトでICMPタイムスタンプ要求で構成されます。特権のないユーザーが実行すると、SYNパケットのみが(接続呼び出しを使用して)ターゲットのポート80および443に送信されます。特権ユーザーがローカルイーサネットネットワーク上のターゲットをスキャンしようとすると、-send-ipが指定されていない限り、ARP要求が使用されます。-snオプションは、柔軟性を高めるために、任意のディスカバリプローブタイプ(-Pnを除く-P *オプション)と組み合わせることができます。これらのプローブタイプとポート番号オプションのいずれかが使用されている場合、デフォルトのプローブは上書きされます。Nmapを実行しているソースホストとターゲットネットワークの間に厳密なファイアウォールが配置されている場合は、これらの高度な技術を使用することをお勧めします。

Nmapの以前のリリースでは、-snは-sPとして知られていました。

これ-nは、クライアントのDNS解決を回避することです(スキャンを高速化します)。

-n(DNS解決なし)

Nmapに、検出したアクティブなIPアドレスに対して逆DNS解決を行わないよう指示します。Nmapの組み込み並列スタブリゾルバーを使用してもDNSは低速になる可能性があるため、このオプションはスキャン時間を短縮する可能性があります。

他の組み合わせを使用してスキャンまたはサービスを深めることもできますが、ホストが自分自身をマスクしているかすべてをドロップしていない限り、探しているものにはこれで十分です。

ソース:https : //nmap.org/book/man-host-discovery.html


言及した出力はコマンドnmap -sP -PR 172.16.128。*であり、これが254のホストをスキャンする理由です。
ヴィシャルシャルマ

私の場合、ネットワークIDは172.16.128.128であるため、提案されたコマンドを変更する必要がありました。nmap -sn -n 172.16.128.128/25を使用しました。
ヴィシャルシャルマ

ネットワークIDの意味がわかりませんが、デバイスにそのアドレスがあり、254個のホストすべてをサブネットでスキャンする場合は、nmap -sn -n 172.16.128.1/24代わりに実行する必要があり ます(上記の回答で述べたように、255.255をスキャンします)。 255.0マスク)
レオ

ネットワークIDとは、IP_Addressとサブネットマスクの「論理And」を実行することで取得した文字列のことです。
ヴィシャルシャルマ

そうですか。だから、私が投稿したnmapコマンドはあなたの質問に答えますか?両方のデバイスが使用されている同じアドレスをリストしていますか?
レオ

8

パート1- fping

このツールは、指定されたネットワーク範囲内のすべてにpingを実行し、ICMPを介して応答するものを表示します。

root@thionite:~# fping -a -g 10.28.1.0/24
10.28.1.1
10.28.1.2
10.28.1.3
10.28.1.4
10.28.1.5
10.28.1.12.....

パート2- arp

fpingはLAN上のすべてと通信したため、システムのARPテーブルにエントリが追加されました。arpテーブルは古いエントリをフラッシュするため、数分以内に読み上げてください。

root@thionite:~# arp -a | grep -v incomplete
? (10.28.1.1) at 00:0d:b9:35:29:c4 [ether] on eth0
? (10.28.1.2) at 68:05:ca:10:53:5f [ether] on eth0
? (10.28.1.3) at d2:f1:6e:54:05:22 [ether] on eth0
? (10.28.1.4) at 00:1a:4d:26:85:ee [ether] on eth0
? (10.28.1.5) at 6e:a6:e5:78:da:ca [ether] on eth0
? (10.28.1.12) at 3c:4a:92:76:85:d8 [ether] on eth0

また、ARPテーブルには最大サイズがあり、カーネルは古いおよび低い使用量のエントリを削除します。

すべて一緒に

 fping -a -g 10.28.1.0/24 && arp -a | grep -v incomplete > arp.txt

その後、自由にarp.txtを参照してください。


5

IPv6

IPv4が唯一の選択肢であると想定しないでください。ISPがV6接続を提供していない場合でも、最新のオペレーティングシステムの多くはIPv6をうまく処理します。

IPv6または他のプロトコルでのみ到達可能なデバイスもあります。

https://en.wikipedia.org/wiki/Multicast_address#IPv6に文書化された便利なマルチキャストアドレスがたくさんあり ますが、興味深いのはff02 :: 1です

root@thionite:~# ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80::4261:86ff:fec4:cbaa%eth0 eth0: 56 data bytes
64 bytes from fe80::4261:86ff:fec4:cbaa%eth0: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from fe80::21a:4dff:fe26:85ee%eth0: icmp_seq=1 ttl=64 time=0.215 ms (DUP!)
64 bytes from fe80::6a05:caff:fe10:535f%eth0: icmp_seq=1 ttl=64 time=0.233 ms (DUP!)
64 bytes from fe80::226:55ff:feda:299c%eth0: icmp_seq=1 ttl=64 time=0.334 ms (DUP!)
64 bytes from fe80::20d:b9ff:fe35:29c4%eth0: icmp_seq=1 ttl=64 time=0.501 ms (DUP!)
64 bytes from fe80::21e:c2ff:fe13:36bf%eth0: icmp_seq=1 ttl=64 time=0.512 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=0.518 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=0.757 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=0.772 ms (DUP!)
64 bytes from fe80::60cc:69ff:fe4f:7db0%eth0: icmp_seq=1 ttl=64 time=0.992 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe32:3232%eth0: icmp_seq=1 ttl=64 time=1.00 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe30:3030%eth0: icmp_seq=1 ttl=64 time=1.24 ms (DUP!)
64 bytes from fe80::90e4:77ff:fe31:3131%eth0: icmp_seq=1 ttl=64 time=1.34 ms (DUP!)
64 bytes from fe80::6ca6:e5ff:fe78:daca%eth0: icmp_seq=1 ttl=64 time=2.35 ms (DUP!)
64 bytes from fe80::b639:d6ff:feab:1000%eth0: icmp_seq=1 ttl=64 time=7.04 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:85d8%eth0: icmp_seq=1 ttl=1 time=8.02 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:8506%eth0: icmp_seq=1 ttl=1 time=8.03 ms (DUP!)
64 bytes from fe80::3e4a:92ff:fe76:e550%eth0: icmp_seq=1 ttl=1 time=8.06 ms (DUP!)
64 bytes from fe80::212:12ff:fef7:8044%eth0: icmp_seq=1 ttl=64 time=8.24 ms (DUP!)
64 bytes from fe80::8edc:d4ff:fef2:67e0%eth0: icmp_seq=1 ttl=64 time=18.3 ms (DUP!)
64 bytes from fe80::21e:c2ff:fea9:6d71%eth0: icmp_seq=1 ttl=64 time=295 ms (DUP!)
...repeats

3

悪い答えは、ブロードキャストアドレスにpingすることです

root@thionite:~# ping -b 10.28.255.255
WARNING: pinging broadcast address
PING 10.28.255.255 (10.28.255.255) 56(84) bytes of data.
64 bytes from 10.28.2.7: icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from 10.28.3.12: icmp_seq=1 ttl=255 time=0.594 ms (DUP!)
64 bytes from 10.28.9.4: icmp_seq=1 ttl=64 time=1.03 ms (DUP!)
64 bytes from 10.28.1.151: icmp_seq=1 ttl=255 time=1.04 ms (DUP!)
64 bytes from 10.28.3.13: icmp_seq=1 ttl=255 time=2.22 ms (DUP!)
64 bytes from 10.28.3.11: icmp_seq=1 ttl=255 time=2.43 ms (DUP!)

そのネットワークには、/ 16ネットマスクを持つIPアドレスが最大50個あり、7個だけが応答しました。したがって、これは良い解決策ではありません。


1
なぜ別の答えですか?投稿を編集できます
デイジー

3
@daisyは異なる答えだからです。一つのモノリシックな答えは良いかもしれませんが、一つの部分によって抑えられます。個別の回答により、アップ/ダウン投票メカニズムが適切に機能します。この答えは実際には完全性のためだけであり、実際にはあまり役に立ちません。
クリギー

1
pingがテストする唯一のことは、デバイスがpingに応答するように構成されているかどうかです。
ロブ・モイア

@RobMoir true-これの主なポイントは、ブロードキャストアドレスが存在し、IPv4に設計されていることです。
クリギー


1

恐竜が地球を歩き回ったとき、原始オタクはarpwatchを使用していました

arpwatchは、コンピューターネットワーク上のアドレス解決プロトコルトラフィックを監視するためのコンピューターソフトウェアツールです。[1] ペアリングがネットワーク上に出現したとき、タイムスタンプとともに、IPアドレスとMACアドレスの観察されたペアリングのログを生成します。また、ペアリングが変更または追加されたときに管理者にメールを送信するオプションもあります。

arpwatch manページ


0

スイッチにログインし、show mac-address 同様のコマンドを発行し ます(メーカーとモデルによって異なります)。これにより、アクティブなデバイスのすべてのMACアドレスが得られます(スイッチ自体を除く)。これらのMACのいずれかが、他の回答のpingまたは他の方法のいずれかで見つかったMACの間で発生しない場合、どのデバイスであるかをさらに調査することができます。IPを話さないか、別のVLANに属しているため、問題ではないかもしれませんが、少なくとも、他のプローブが正確かどうかの概要を把握できます。

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