
背景
今週末、友達のために家に泊まる予定ですが、友達が私にWiFi SSIDとパスワードを文字で送りました。ところで、彼女は最初に私にWiFiの詳細を文字で送り、その結果次のような気がしました。
そこに着いたら、彼女のネットワークに接続しないで、私のラップトップ(Ubuntu 19.10を使用)と携帯電話(Android 10を使用)にWiFi資格情報を保存する必要があります。これにより、私のラップトップと携帯電話が自動的に彼女のWiFiネットワークに接続することができます!
そのため、いくつかの調査を行った結果可能かもしれないことがわかりました(少なくとも私のラップトップの場合、Androidではrootアクセスが必要だと思います)。しかし、まだいくつかの問題があります。
私の研究によると、Ubuntu 19.10の場合、ネットワーク資格情報は次のディレクトリに保存されているようです。
/etc/NetworkManager/system-connections
、各ファイルは資格情報を表します。たとえば、そのフォルダ内の特定の接続のetaoin-shrdlu
内容は次のとおりです。
$ sudo cat /etc/NetworkManager/system-connections/etaoin-shrdlu.nmconnection
[connection]
id=etaoin-shrdlu
uuid=515ab528-986b-4bb8-97fe-f744beaa0f2f
type=wifi
interface-name=wlp3s0
permissions=
[wifi]
mac-address-blacklist=
mode=infrastructure
ssid=etaoin-shrdlu
[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=nice try hackers
[ipv4]
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
[proxy]
このファイル〜らしい比較的簡単です。つまり、変更する唯一のことは次のとおりです。
- ファイル名。
- 値
id
。 - この
uuid
値(オンライン読み取りでランダムに生成できます) - 値
ssid
。 - 値
psk
。
おそらく使用されるキー管理システムはwpa-psk
。
さらに、この意識に関連すると思われる別のファイルが見つかりました:
/run/NetworkManager/devices/3
、構成は次のとおりです。
$ sudo cat /run/NetworkManager/devices/3
[device]
managed=true
connection-uuid=515ab528-986b-4bb8-97fe-f744beaa0f2f
route-metric-default-effective=600
これは資格情報ファイルで指定されたものと同じですconnection-uuid
。uuid
試験を受ける
だから私が試したことは次のとおりです。
- ネットワーキングを忘れてください
etaoin-shrdlu
。 - 飛行機モードをオンにします。
- 次のファイルを作成します
/etc/NetworkManager/system-connections/etaoin-shrdlu.nmconnection
(ネットワークを忘れてから以前に削除されました)。 - 以前と同じ内容をファイルに
etaoin-shrdlu.nmconnection
入れます。uuid
630b5230-48cb-4929-9777-fa0f30399810
- 以前のバージョンを修正して
/run/NetworkManager/devices/3
。uuid
630b5230-48cb-4929-9777-fa0f30399810
- 飛行機モードをオフにします。
- 待って、効果があることを願っています...
その結果は?これはうまくいきません。
質問
- 私は何が間違っていましたか?
- 鍵はどのような用途
uuid
に使用されますか?なぜランダムに生成できますか? - キー値
psk
に許可される文字に制限がありますか?
答え1
nmcli connection reload
ディスクで接続プロファイルを編集した後、または(またはD-Bus APIを介して)nmcli connection load [FILES...]
を使用して再ロードする必要があります。これを行うことは、D-Bus APIを介して行うのと同じです(例:nmcli connection modify ...
。
編集NetworkManager.conf
(またはフラグメントのいずれかconf.d
)する場合は、SIGHUPまたは再読み込みできますsystemctl reload NetworkManager.service
。一部の設定は再ロードできず、サービスを再起動する必要があります。しかし、通常、再起動は必要なく、優先されません。
問題のファイルを編集しないでください/var/lib
。欲しいものではないかもしれません。
とにかくプロファイルを編集/作成し、飛行機モードを切り替えることができます。その後、自動接続が発生する可能性があります。作成した設定ファイルがconnection.autoconnect
有効になっているため、デフォルトでは問題ありません。ただし、以前に正常に接続したことのないWi-Fiプロファイルは、自動接続には適していません。これは、プロファイルを少なくとも一度は手動で有効にする必要があることを意味しますnmcli connection up ...
。
また、NetworkManagerをだましてプロファイルが過去に有効になっていると考えるようにすることもできます。これを行うには、connection.timestamp
正の値(秒単位のUnixタイムスタンプ)に設定します。タイムスタンプは通常、構成ファイルの外に保持されます(アクティブになるたびに更新されます)。このファイルはにありますが、/var/lib/NetworkManager/timestamps
NMの実行中にファイルを編集すると正しく機能しない可能性があります。