📚

Ubuntuをアクセスポイント化させて接続端末のDNSログクエリを記録する

2022/10/28に公開約3,200字

はじめに

研究室のプロジェクトで Ubuntu を AP 化させて,接続した端末の DNS クエリログを記録する必要がありました.今回の記事では Ubuntu を AP 化させる方法から,DHCP サーバ経由で DNS サーバのアドレスを配布する方法までを紹介します!

やりたかったこと

かなり複雑なので図を用いて説明します.

ネットワーク構成

結論から言うと,アクセスポイント化させた Ubuntu PC に接続した端末の DNS クエリログを記録するということです.まず,クライアントがアクセスポイントに接続します.次に AP 端末は DHCP で IP アドレスと接続先 DNS サーバの情報が配布します.そして,クライアントが Web サイトを閲覧する際の IP アドレスの名前解決は全てクライアント・AP 兼 DNS サーバ内で行われ,AP にアクセスした端末の DNS クエリログを自動で記録したり,監視できるようにします.今回構築したものは下記 3 つです.

WIFi アクセスポイント

今回は Ubuntu の PC をアクセスポイント化させます.Ubuntu20.04 にはインターネット共有の機能があるため,hostapd のようなライブラリを入れなくてもほぼ GUI 上で簡単に AP 化させることができます.

DNS キャッシュサーバ

AP に接続した端末の名前解決とクエリログを記録することができます.DNS サーバの構築方法に関しては前の記事で書いたのでそちらを参考にしてください.

DHCP サーバ

AP に接続した端末にIPアドレスDNSサーバアドレスを配布するために必要です.Ubuntu のインターネット共有で設定できそうになかったので,今回実装しました.端末はアクセスポイントに接続するだけで IP アドレスの名前解決を指定した DNS サーバで行うことになり,ログを取ることができます.

Ubuntu を AP 化

参考
Ubuntu にはインターネット共有機能があるため,GUI 上で AP 化させることができます.
ターミナルを起動させて下記コマンドを実行してください.

$ nm-connection-editor

そうするとネットワークの設定ウィンドウが表示されると思います.
ウィンドウ上左下に表示されている+ボタンを押してください.
ネットワーク設定

まずウィンドウ上部に表示されている接続名は好きな名前を入力してください.
次に編集画面上部のタブからWi-Fiを選択してください.
そうすると編集画面が表示されると思います.
ここで設定は下記のようにしてください.

  • SSID: LAB_AP(WiFi のアクセスポイント名なので好きな名前にしてください.)
  • モード: ホットスポット
  • デバイス: 無線インターフェース名(AP 化させたいもの)

ネットワーク設定の編集

次に編集画面上部のタブからWi-Fiセキュリティを選択してください.
ここでは WiFi のパスワードが設定できますので,好きなものにしてください.
入力したら,保存ボタンを押してウィンドウを閉じて大丈夫です.

ネットワーク設定の編集

再びターミナルを開いて下記コマンドを実行してください.

$ nmcli device wifi hotspot

ここまで完了したら動作確認をします.
iPhone や Macbook などの WiFi 設定から,構築した AP の SSID を選択しインターネットにつながることを確認してください.
これで WiFi のアクセスポイント化は完了です.

DNS キャッシュサーバ構築

DNS サーバの構築方法に関しては前の記事で書いたのでそちらを参考にしてください.

DHCP サーバ構築

初めに先ほど構築した AP の無線インターフェースの IP アドレスを確認します.Ubuntu にはifconfigコマンドが入っていないので入れていきます.

$ sudo apt install net-tools
$ ifconfig

IPアドレス

私の環境での無線インターフェースの IP アドレスはwlpos20f310.42.0.1

次に DHCP サーバのライブラリをインストールします.ターミナルを起動して下記コマンドを実行してください.

$ sudo apt install -y isc-dhcp-server

次に使用する無線インターフェースにDHCPサーバの設定を割り当てます.

$ cd /etc/default
$ sudo vim isc-dhcp-server
INTERFACESv4="(使用するインターフェース名)"

次に配布する IP アドレスなどの設定ファイルの編集を行います.

$ cd /etc/dhcp
$ sudo vim dhcpd.conf
subnet 10.42.0.0 netmask 255.255.255.0 {
	range 10.42.0.2 10.42.0.254
	option subnet-mask 255.255.255.0
	option domain-name-servers 10.42.0.1
	option routers 10.42.0.1
}

今回 DNS サーバのアドレスは自身の IP アドレスを指定しています.ここまで設定できたら,DHCP サーバを起動しましょう.

$ sudo systemctl restart isc-dhcp-server
$ sudo systemctl status isc-dhcp-server

ここでエラーが出たらdhcpd.confの設定にミスがあるはずなので,確認してください.これができると接続した端末の DNS ログクエリが/var/log/named/queries.logに記録できていると思います.もし,macbook から接続した際に ip アドレスがありませんと表示された場合.サーバの isc-dhcp-server サービスをもう一度起動してみてください.

最後に

今回の記事ではアクセスポイントに接続した端末の DNS ログクエリを収集する方法を紹介しました.本来アクセスポイントと DNS サーバは別の端末で構築することがほとんどだと思いますが,その場合は紹介した配布する IP アドレスを変更してみてください.

GitHubで編集を提案

Discussion

ログインするとコメントできます