배경
이번 주말에 친구를 위해 집에 묵을 예정인데 친구가 나에게 WiFi SSID와 비밀번호를 문자로 보냈습니다. 그런데 그녀는 먼저 나에게 WiFi 세부 정보를 문자로 보냈고 그 결과 다음과 같은 생각이 들었습니다.
그곳에 도착하면 그녀의 네트워크에 연결하지 말고 내 노트북(Ubuntu 19.10 사용)과 휴대폰(Android 10 사용)에 WiFi 자격 증명을 저장해야 합니다. 이렇게 하면 내 노트북과 휴대폰이 자동으로 그녀의 WiFi 네트워크에 연결될 수 있습니다!
그래서 몇 가지 조사를 한 결과 가능할 수도 있다는 것을 알아냈습니다(적어도 내 노트북의 경우, Android에서는 루트 액세스가 필요하다고 생각합니다). 하지만 여전히 몇 가지 문제가 있습니다.
내 연구에 따르면 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이 실행되는 동안 파일을 편집하면 제대로 작동하지 않을 수 있습니다.