Ubuntuをアクセスポイント化させて接続端末のDNSクエリログを記録する
はじめに
研究室のプロジェクトで 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 アドレスはwlpos20f3
で10.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 アドレスを変更してみてください.
Discussion