web-dev-qa-db-ja.com

dnsmasqとhostapdを使用して、DHCPサーバーから提供されたすべてのIPアドレスを取得する

Raspbian Jessie Litesystemdアプリケーション用のhostapdサービスを作成しました。ソースコードはこれに似ています GitHub Gist ですが、192.168.50.x/24

すべてが機能し、さまざまなデバイスがDHCPサーバーからIPアドレスを取得します。ただし、クライアントに渡されたすべてのIPアドレスのログがあるかどうかはわかりません。 dnsmasqhostapdのMACアドレスに。

DHCPサーバーの配布されたIPアドレスを解決する方法はありますか?おそらく、私が知らないファイルにログインしている可能性があります。たとえば、冗長モードでは、クライアントがIPアドレスを要求したときにメッセージが表示される傾向があるため、この情報がファイルに記録されている可能性があります。

5
Shan-Desai

/var/lib/misc/dnsmasq.leasesが必要なファイルだと思います

そうでない場合は、dhcp-script =を使用して独自に記述します manpage を参照してください

起動時に、dnsmasqは/etc/dnsmasq.confを読み取ります。このファイルのフォーマットは、OPTIONSセクションで詳述されている長いオプションとまったく同じですが、先頭に "-"が付いていません。

--dhcp-script =新しいDHCPリースが作成されるか、古いリースが破棄されるか、TFTPファイル転送が完了すると、このオプションで指定された実行可能ファイルが実行されます。絶対パス名でなければなりません。PATH検索は行われません。プロセスへの引数は、「追加」、「古い」または「削除」、ホストのMACアドレス(またはIPv6の場合はDUID)、IPアドレス、およびホスト名(わかっている場合)です。 「add」はリースが作成されたことを意味し、「del」はリースが破棄されたことを意味します。「old」は、dnsmasqの開始時の既存のリースの通知、または既存のリースのMACアドレスまたはホスト名の変更(また、リース期間またはexpiryとclient-id(leasefile-roが設定されている場合)。 MACアドレスがイーサネット以外のネットワークタイプからのものである場合、トークンリングの場合は「06-01:23:45:67:89:ab」などのネットワークタイプが前に付加されます。 dnsmasqがUIDを非特権ユーザーに変更するように構成されている場合でも、プロセスはrootとして実行されます(dnsmasqが最初にrootとして実行されたと想定)。

6
Ross

Rossの回答の補足として、dnsmasq.conf(または/etc/dnsmasq.dのc​​onfファイル)ファイルでオプションdhcp-leasefile=<lease file>を指定してリースファイルを指定できます。例えば。 dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

また、一部のインスタンスではリースファイルにホスト名が入力されますが、タブレットやスマートTVなどの一部のランダムデバイスは、リースファイルから明確に識別できない場合があります。 dnsmasq confで、リースファイルに表示されるデバイスのMACアドレスとわかりやすいホスト名を含むdhcp-Hostオプションを追加できます。例えば。

dhcp-Host=10:08:c1:08:9d:53,LG-TV

dnsmaq.confは、リースファイルでは次のようになります。

1502229042 10:08:c1:08:9d:53 192.168.10.94 LG-TV *
3
Darren