UbuntuにWi-Fiアダプタを挿してAPにする
今回は、900円ほどで購入したUSBドングルタイプのWi-FiアダプタのTL-WN725Nを、UbuntuからWi-Fiアクセスポイントにしてみます。この機種は箱には無線LAN子機と明記されているのですが、親機としての機能も併せ持ち、APとして利用可能なようです。
目的
Ubuntu20.04のUSBにTL-WN725Nを挿し、Wi-Fi APを構築する
背景
今回少し前に購入した怪しげなマイコン基板のWi-Fiからどんなデータが送られているのか調べるべく、転送されたパケットをキャプチャするべくWi-Fi APを構築しようとしています(なんか意図しないデータを送ってるように見えるので)。
※アダプタの開発元であるtp-link自体にも1秒に1回特定のサイトにアクセスしに行くという事件があったりします
ドライバの準備
普通にWi-Fi子機として使用する分には、Ubuntu 20.04の配布ドライバでいいのですが、APとして利用するためにはより別のバージョンを使用する必要があります。今回は以下のPPAを使用して出自の記載のないドライバをインストールしています。
https://launchpad.net/~kelebek333/+archive/ubuntu/kablosuz
出自に関する調査について
独自調査をした限りでは、以下の3つが有力なように感じました。
最初の2つが開発元のtp-linkさんが配っている
- TL-WN725N(EU)_V3_180510_Linux_beta
- TL-WN725N(EU)_V3_Linux
と、最後の1つが、有志がgithub上で配っている
です。
上記のいずれかが元であると疑い、差分を調べてみました。
結果はTL-WN725N(EU)_V3_180510_Linux_betaとの差分が一番少ないようでした。それでも差分は大量にあるため、確認は困難かと思います。とはいえ、ほとんどの修正はライセンスとLinux kernel独自の型や関数への移行と、不要条件コンパイルの削除、debian系パッケージ用の構成変更など、コード自体の書き方や構成の修正のようでした(ただし多すぎて機能的な修正部分の抽出を断念しました。調査の詳細も載せきれません)。
PPAの設定
上記のPPAを使用するので、まずは書いてある通りリポジトリを追加して、各リポジトリのパッケージリストを更新します。
$ sudo add-apt-repository ppa:kelebek333/kablosuz
$ sudo apt update
インストール
$ sudo apt install rtl8188eu-dkms
アクセスポイントとして設定
NetworkManager
ubuntuでネットワークの設定を行う方法は大きく2つあります。1つはデスクトップなどクライアント系に多いNetworkManagerを使う方法です。もう1つはNetworkManagerを使用しない昔ながらの方法です。
NetworkManagerを使うと、非管理者ユーザーがGUIで動的なネットワークを構成/接続/切断できます。NetworkManagerを使用しなくても動的なネットワークを操作することはできますが、GUIでなく操作はやや困難になります。Wi-Fiは特にユーザー操作起因での接続・切断が多いネットワークなので、今回はNetworkManagerを使用した方法になります。
アクセスポイントはTUI/CLIで設定する
NetworkManagerはGUIが使えるのがメリットなのですが、アクセスポイント(ホットスポット)として使用する場合は多くを設定できず(接続方法など)、(後述のバグを回避しても)実際に使用できませんでした。バグにも遭遇しましたし、アクセスポイントとしての使用はクライアント側ではあまり需要が多くないのかもしれません。
今回はGUIを断念し、TUI/CLIの操作方法を説明します。まずはnmtuiでテキスト端末操作により設定画面を開き設定を作成していき、運用的にはnmcliで状況を確認する、という感じです。
実際の操作
まずはrootでnmtuiを起動します。
$ sudo nmtui
┌────┤ NetworkManager TUI ├────┐
│ │
│ オプションを選択してください │
│ │
│ 接続の編集 │
│ 接続をアクティベートする │
│ システムのホスト名を設定する │
│ │
│ 終了 │
│ │
│ <OK> │
│ │
└──────────────────────────────┘
[接続の編集]を選択後[OK]すると、以下のような画面が表示されます。
┌───────────────────────────────┐
│ │
│ ┌─────────────────┐ │
│ │ Ethernet ↑ │ <追加> │
│ │ 有線接続 1 ▒ │ │
│ │ ▒ │ <編集...> │
│ │ ▒ │ │
│ │ ▒ │ <削除> │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▮ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ↓ │ <戻る> │
│ └─────────────────┘ │
│ │
└───────────────────────────────┘
上の画面で[追加]を選択すると、以下の画面が表示されます。
┌───────────────────────────────┐
│ │
│ ┌─────────────────┐ │
│ │ Ethernet ↑ │ <追加> │
│ │ 有線接続 1 ▒ │ │
┌────────────────────────┤ 新規の接続 ├────────────────────────┐
│ │
│ 作成したい接続タイプを選択してください。 │
│ │
│ DSL ↑ │
│ Ethernet ▮ │
│ InfiniBand ▒ │
│ Wi-Fi ▒ │
│ IP トンネル ↓ │
│ │
│ <取り消し> <作成> │
│ │
└──────────────────────────────────────────────────────────────┘
│ └─────────────────┘ │
│ │
└───────────────────────────────┘
Wi-Fiを選択します。
┌────────────────────────────────┤ 接続の編集 ├────────────────────────────────┐
│ │
│ プロファイル名 Hotspot_________________________________ │
│ デバイス wlx2887ba77a330 (xx:xx:xx:xx:xx:xx)_____ │
│ │
│ ╤ WI-FI <隠す> │
│ │ SSID testap__________________________________ │
│ │ モード <アクセスポイント> │
│ │ チャンネル <自動> │
│ │ │
│ │ セキュリティー <WPA & WPA2 パーソナル> │
│ │ パスワード *************___________________________ │
│ │ [ ] パスワードを表示する │
│ │ │
│ │ BSSID ________________________________________ │
│ │ クローンの MAC アドレス ________________________________________ │
│ │ MTU __________ (デフォルト) │
│ └ │
│ │
│ ═ IPv4 設定 <共有> <表示する>│
│ ═ IPv6 設定 <自動> <表示する>│
│ │
│ [X] 自動的に接続する │
│ [X] 全ユーザーに使用可能 │
│ │
│ <取り消し> <OK>│
│ │
└──────────────────────────────────────────────────────────────────────────────┘
こんな感じにアクセスポイントの設定をします。OK押下後は戻って終了します。
接続の設定が出来たので、以降はCLIで操作します。まずは接続状態の確認です。
$ nmcli connection
NAME UUID TYPE DEVICE
有線接続 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet enp3s0
Hotspot yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy wifi --
$
切断されていた場合は接続(アクティベート)しておきます(なぜかsudoでないとできませんでしたが、調べてません)。
$ sudo nmcli connection up Hotspot
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/3)
$
この状態になれば、アクセスポイントとしての利用が可能です。
確認
普通にスマホなどから設定したSSIDのAPに設定したパスワードで繋げるだけでOKです。
現在どこにWi-Fi接続を提供してるかを調べる機能は見つけられませんでした。arpかip nで同じサブネットに繋がるIPを探すことで代用することはできます。
$ ip n
192.168.0.1 dev enp3s0 lladdr xx:xx:xx:xx:xx:xx REACHABLE
192.168.0.2 dev enp3s0 lladdr yy:yy:yy:yy:yy:yy DELAY
10.42.0.131 dev wlx2887ba77a330 lladdr zz:zz:zz:zz:zz:zz REACHABLE
...
$
上記では10.42.0.131がHotspotに繋げてきたデバイスです。
まとめ
Ubuntu 20.04では、TL-WN725N用の標準ドライバだとAPとして利用できません。
怪しげなPPAからドライバを入れればAPとして利用可能です。
※このページでは以下のリンク先のフォントが使用されています。
ディスカッション
コメント一覧
まだ、コメントがありません