RADIUS (FreeRADIUS) で mschapv2 やEAP-TLS (PEAP) のテストをするには FreeRADIUS同梱の radtest では力不足で、 wpa_supplicant に付属している eapol_test ツールが必要 なんですが、 Ubuntu の wpasupplicant パッケージでは同梱コンパイルされていないので、 仕方なく自分でコンパイルします。
$Id$
wpa-supplicant のホームページをwpasupplicantパッケージの情報から探す:
$ apt-cache show wpasupplicant #dpkg-query で出せないのかな Package: wpasupplicant Architecture: amd64 Version: 2:2.9-1ubuntu4.1 Multi-Arch: foreign Priority: optional Section: net Source: wpa Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian wpasupplicant Maintainers <wpa@packages.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 3407 Depends: libc6 (>= 2.29), libdbus-1-3 (>= 1.9.14), libnl-3-200 (>= 3.2.21), libnl-genl-3-200 (>= 3.2.7), libnl-route-3-200 (>= 3.4.0), libpcsclite1 (>= 1.0.0), libreadline8 (>= 6.0), libssl1.1 (>= 1.1.1), lsb-base, adduser Suggests: wpagui, libengine-pkcs11-openssl Breaks: initscripts (<< 2.88dsf-13.3) Filename: pool/main/w/wpa/wpasupplicant_2.9-1ubuntu4.1_amd64.deb Size: 1182640 MD5sum: 06cbf9c983dee8248efbe3c104c3d767 SHA1: e01f11343b4213b6ee07a826845307663e8c8830 SHA256: 47c86350302ab551943f06b3a121da6c06e2d33bb518daf1630f6473e49c4fdf SHA512: a83c83d2b614ff87085a1f7a2af3b2134d627ee92dd27f876a8cec58754f98c785014f3546aafec3f409d4b76dbbd1fa66f3b88078ba5f9b0a378aeb8d41faaf Homepage: http://w1.fi/wpa_supplicant/ Description-en: client support for WPA and WPA2 (IEEE 802.11i) WPA and WPA2 are methods for securing wireless networks, the former using IEEE 802.1X, and the latter using IEEE 802.11i. This software provides key negotiation with the WPA Authenticator, and controls association with IEEE 802.11i networks. Description-md5: db096b22f8ec5f5c7a8ec614d12ca20a Task: ubuntu-desktop-minimal, ubuntu-desktop, ubuntu-core, kubuntu-desktop, xubuntu-core, xubuntu-desktop, lubuntu-desktop, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop
http://w1.fi/wpa_supplicant/ に アクセスして、ソースパッケージを探す。 本文執筆時点では http://w1.fi/releases/wpa_supplicant-2.9.tar.gz 。
ダウンロードして展開し、wpa_supplicant ディレクトリへ移動する。
$ wget http://w1.fi/releases/wpa_supplicant-2.9.tar.gz $ tar zxvpf wpa_supplicant-2.9.tar.gz $ cd wpa_supplicant-2.9/wpa_supplicant
./.config
を作る。テンプレートが ./defconfig
にあるが、eapol_test のビルドはデフォルトでは無効なので、有効にする。
$ sed -e 's/^#CONFIG_EAPOL_TEST=.*/CONFIG_EAPOL_TEST=y/' defconfig > .config
libnlの開発者パッケージ(-dev)が必要なことがわかっているので、 インストールする。
$ sudo apt install libnl-3-dev
make eapol_test
で eapol_test だけコンパイルする。
$ make eapol_test pkg-config: Command not found
apt-file コマンドで、pkg-config コマンドが含まれているパッケージを探す。
$ sudo apt-get update $ apt-file search -x '/pkg-config$' acr: /usr/share/doc/acr/pkg-config bash-completion: /usr/share/bash-completion/completions/pkg-config check-all-the-things: /usr/share/check-all-the-things/data/pkg-config cruft-common: /usr/lib/cruft/filters-unex/pkg-config pkg-config: /usr/bin/pkg-config pkgconf: /usr/bin/pkg-configpkg-config パッケージが正しそうなので、インストールする。
$ sudo apt install pkg-config
$ make eapol_test Package dbus-1 was not found in the pkg-config search path. Perhaps you should add the directory containing `dbus-1.pc' to the PKG_CONFIG_PATH environment variableapt-file で dbus-1.pc を探して、該当パッケージをインストールする。 今回は libdbus-1-dev
$ sudo apt install libdbus-1-dev
$ make eapol_test /bin/sh: 1: cc: not foundコンパイラはデフォルトでは入っていない。
$ sudo apt-get update $ sudo apt install gcc
$ make eapol_test ../src/common/dpp.c:12:10: fatal error: openssl/opensslv.h: No such file or directoryOpenSSL の開発者用パッケージが必要。
$ sudo apt install libssl-dev
$ make eapol_test dbus/dbus_new.c: In function ‘wpas_dbus_unregister_p2p_group’: dbus/dbus_new.c:4793:3: error: ‘%s’ directive argument is null [-Werror=format-overflow=] 4793 | wpa_printf(MSG_DEBUG, | ^~~~~~~~~~~~~~~~~~~~~ 4794 | "%s: Group object '%s' already unregistered", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4795 | __func__, wpa_s->dbus_groupobj_path); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errorsパッチ が出ている。 [2/2] dbus: Suppress to show NULL string
$ vi dbus/dbus_new.c
$ make eapol_test /usr/bin/ld: cannot find -lnl-genl-3libnl-genl-3.so が含まれているパッケージを探す。今回は libnl-genl-3-dev
$ sudo apt install libnl-genl-3-dev
$ make eapol_test エラー無しldd で、not found なライブラリが無いかチェックする。
$ ldd ./eapol_test linux-vdso.so.1 (0x00007ffc8f9d0000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb5ffd80000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fb5ffced000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fb5ffa17000) libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fb5ff9c6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb5ff7d4000) /lib64/ld-linux-x86-64.so.2 (0x00007fb5fffb4000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb5ff7b1000) libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fb5ff702000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb5ff6f7000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fb5ff6ce000) liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fb5ff6ad000) libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fb5ff58f000) libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fb5ff56a000) ※インストールした libnl-genl-3.so (libnl-genl-3-devパッケージ) にはなぜか依存していない。特に問題なければ、 /usr/local/bin/ あたりに手動でインストールする。
$ sudo cp ./eapol_test /usr/local/bin/ $ sudo chmod 755 /usr/local/bin/eapol_test
.debの作り方、よくわかってないんですが作ってみました。