개발자
문제 현재 Windows 데스크톱과 MacBook을 사용 중이며, 두 기기는 동일한 로컬 네트워크에 연결되어 있습니다. - 데스크톱(Windows): 유선 랜(Ethernet)으로 연결 - MacBook: Wi-Fi로 연결 Windows 데스크톱에서 Docker를 이용해 로컬 웹 서버(포트 9000)를 실행 중입니다. 컨테이너는 -p 9000:9000 옵션으로 실행되었으며, 0.0.0.0:9000에서 요청을 받을 수 있도록 설정되어 있습니다. 데스크톱에서는 Chrome를 통해 정상적으로 웹 인터페이스에 접속할 수 있습니다. 그러나 MacBook의 Chrome에서 접속하면 페이지를 찾을 수 없다고 합니다. 이상하게도,,, Chrome을 sudo로 실행하면 페이지가 정상적으로 로드됩니다. 추가 정보 - 데스크톱(Windows)과 MacBook은 같은 서브넷에 속해 있습니다. - 웹 서버는 0.0.0.0:9000에서 요청을 받을 수 있도록 설정되어 있어, 다른 기기에서도 접근 가능해야 합니다. - MacBook에서 nc -zv <데스크톱-IP> 9000을 실행하면 포트가 열려 있음을 확인했습니다. - Python 코드에서 requests.get("http://<데스크톱-IP>:9000")을 실행하면, 일반 실행 시 실패하지만 sudo로 실행하면 정상적으로 작동합니다. - MacBook에는 단 하나의 사용자 계정만 존재하며, 해당 계정은 관리자(Admin) 권한을 가지고 있습니다. - macOS 방화벽은 비활성화되어 있으며 (/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate로 확인), sudo pfctl -d로 pf 방화벽을 꺼도 문제가 해결되지 않았습니다. 현재까지 파악한 내용 sudo로 실행하면 정상적으로 동작하기 때문에, 현재 문제는 네트워크 연결 자체의 문제가 아니라 macOS의 보안 정책 또는 네트워크 제한과 관련된 것이 아닐까,, 생각하고 있습니다. 해결하고 싶은 질문 - 왜 Chrome을 sudo로 실행해야만 웹 서버에 접속할 수 있을까요? - 왜 일반 사용자 권한으로 실행한 Python의 requests.get() 요청이 차단되고, sudo를 사용해야만 정상적으로 동작할까요? - macOS에서 일반 사용자 프로세스의 네트워크 접근을 제한하는 정책이 있는 걸까요? 있다면 어떻게 해결할 수 있을까요? 스크립트에 모두 sudo를 붙이면 문제가 해결되긴 합니다만,, 명확한 원인이 궁금합니다. 혹시 비슷한 경험을 하신 적이 있는 분이 계시다면 조언 부탁드립니다! 혹은 힌트 키워드라도 던져주시면 감사하겠습니다!
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
3월 3일
발생하고 있는 이슈는 MacOS의 네트워크 보안 정책과 관련된 것으로 보입니다. MacOS에는 일부 애플리케이션에서 네트워크 연결을 수립할 때 추가 보안 조치가 필요한 경우가 있습니다. 특히 세션 초기화를 위해 루트 권한이 필요한 경우와 같은 상황에서 문제가 발생할 수 있습니다. Chrome을 실행하기 위해 sudo를 사용하는 경우, Chrome은 루트 사용자로 실행되므로 별도의 제한 없이 모든 시스템 리소스에 접근할 수 있게 됩니다. 이것이 Chrome이 웹 서버에 정상적으로 연결되는 원인일 것입니다. Python 스크립트 역시 sudo로 실행하면 정상적으로 동작하는데, 이 역시 스크립트가 루트 권한으로 실행되기 때문입니다. 해결 방안에 대해서는 아래와 같은 몇 가지 옵션이 있을 수 있습니다: 1. Docker 컨테이너 포트 범위 설정 변경: Docker 포트 범위를 비권한 사용자가 액세스 가능한 범위로 설정하여 문제를 해결할 수 있습니다. 2. MacOS 한정 - 서드 파티 소프트웨어(Network Kernel Extensions) 설치: Little Snitch나 Hands Off! 같은 소프트웨어를 설치하여 네트워크 접근 권한을 관리할 수 있습니다. 이런 소프트웨어는 애플리케이션 별로 네트워크 액세스 규칙을 설정할 수 있게 해줍니다. 그러나 두 가지 방법 모두 잠재적인 보안 위험을 안고 있으므로, 적절한 비용 대비 효과를 고려해야 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!