로컬 네트워크 권한

LAN의 기기는 INTERNET 권한이 있는 모든 앱에서 액세스할 수 있습니다. 이렇게 하면 앱이 로컬 기기에 쉽게 연결할 수 있지만 사용자의 지문 생성, 위치의 프록시 역할 등 개인 정보 보호 관련 문제가 발생할 수 있습니다.

로컬 네트워크 보호 프로젝트는 새로운 런타임 권한 뒤에 로컬 네트워크에 대한 액세스를 제한하여 사용자의 개인 정보를 보호하는 것을 목표로 합니다.

영향

Android 16에서는 이 권한이 선택 기능이므로 선택한 앱에만 영향을 미칩니다. 선택의 목표는 앱 개발자가 향후 Android 출시에서 권한 보호를 준비할 수 있도록 앱의 어떤 부분이 암시적 로컬 네트워크 액세스에 종속되는지 이해하는 것입니다.

다음을 사용하여 사용자의 로컬 네트워크에 액세스하는 앱은 영향을 받습니다.

  • 로컬 네트워크 주소에서 원시 소켓의 직접 또는 라이브러리 사용 (예: mDNS 또는 SSDP 서비스 검색 프로토콜)
  • 로컬 네트워크에 액세스하는 프레임워크 수준 클래스 (예: NsdManager) 사용

영향 세부정보

로컬 네트워크 주소와의 트래픽에는 로컬 네트워크 액세스 권한이 필요합니다. 다음 표에는 몇 가지 일반적인 케이스가 나와 있습니다.

앱 하위 수준 네트워크 작업 로컬 네트워크 권한 필요
아웃바운드 TCP 연결 만들기
수신 TCP 연결 수락
UDP 유니캐스트, 멀티캐스트, 브로드캐스트 전송
수신 UDP 유니캐스트, 멀티캐스트, 브로드캐스트

이러한 제한은 네트워킹 스택 깊숙한 곳에 구현되므로 모든 네트워킹 API에 적용됩니다. 여기에는 플랫폼 또는 관리 코드에서 생성된 소켓, Cronet 및 OkHttp와 같은 네트워킹 라이브러리, 그 위에 구현된 모든 API가 포함됩니다. 로컬 네트워크(예: .local 접미사가 있는 서비스)에서 서비스를 확인하려면 로컬 네트워크 권한이 필요합니다.

위 규칙의 예외:

  • 기기의 DNS 서버가 로컬 네트워크에 있는 경우 포트 53에서 DNS 서버와의 트래픽에는 로컬 네트워크 액세스 권한이 필요하지 않습니다.
  • 출력 전환 도구를 인앱 선택기로 사용하는 애플리케이션에는 로컬 네트워크 권한이 필요하지 않습니다 (추가 안내는 향후 출시에서 제공).

가이드

로컬 네트워크 제한을 선택하려면 다음 단계를 따르세요.

  1. Android 16 베타 3 이상이 포함된 빌드로 기기 플래시
  2. 테스트할 앱 설치
  3. adb를 사용하여 Appcompat 구성 전환

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. 기기 재부팅하기

이제 앱의 로컬 네트워크 액세스가 제한되며 로컬 네트워크에 액세스하려고 하면 소켓 오류가 발생합니다. 앱 프로세스 외부에서 로컬 네트워크 작업을 실행하는 API (예: NsdManager)를 사용하는 경우 선택하는 동안 영향을 받지 않습니다.

액세스 권한을 복원하려면 앱에 NEARBY_WIFI_DEVICES 권한을 부여해야 합니다.

  • 앱이 매니페스트에서 NEARBY_WIFI_DEVICES 권한을 선언하는지 확인합니다.
  • 설정 > 앱 > [애플리케이션 이름] > 권한 > 근처 기기 > 허용으로 이동합니다.

이제 앱의 로컬 네트워크 액세스가 복원되고 모든 시나리오가 앱을 선택하기 전과 동일하게 작동합니다. 앱 네트워크 트래픽에 미치는 영향은 다음과 같습니다.

권한 아웃바운드 LAN 요청 아웃바운드/인바운드 인터넷 요청 인바운드 LAN 요청
승인됨 작동의 원리 작동의 원리 작동의 원리
허용되지 않음 실패 경험 작동의 원리 실패 경험

다음 명령어를 사용하여 Appcompat 구성을 사용 중지합니다.

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

오류

이러한 제한으로 인해 발생하는 오류는 호출 소켓이 send 또는 send 변형을 로컬 네트워크 주소로 호출할 때마다 호출 소켓에 반환됩니다.

오류 예시:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

버그

다음에 대한 버그 및 의견을 제출하세요.

  • LAN 액세스 불일치 (특정 액세스를 '로컬 네트워크' 액세스로 간주해서는 안 된다고 생각함)
  • LAN 액세스가 차단되어야 하지만 차단되지 않는 버그
  • LAN 액세스가 차단되어서는 안 되지만 차단되는 버그

다음은 이번 변경사항의 영향을 받지 않습니다.

  • 인터넷 액세스
  • 모바일 네트워크