답변
여기에 신경을 써야한다는 것을 이해할 수 있습니다. MongoDB는 클러스터 된 시스템에서 상호 작용하도록 설계되어 있으므로 TCP 네트워킹이 해당 디자인의 일부입니다. 즉, 로컬 액세스에 사용할 수있는 유닉스 도메인 소켓 연결이 기본적으로 있습니다.
'--bind_ip'구성 옵션을 사용하여 루프백 ('127.0.0.1') 또는 사용하려는 인터페이스에만 바인딩 할 수 있습니다. 기본적으로 mongod는 사용 가능한 모든 인터페이스에 바인딩됩니다. 시작 옵션의 전체 목록을 보려면 manual page을보고 필요한 항목을 결정하십시오.
다른 보안을 위해 방화벽 규칙을 참조 할 수 있습니다.
이것은 적어도 5 년 된 버그입니다. 내가 발견 한 유일한 문제는 WONTFIX 및 RTFM으로 끝났지 만이 문제는 2.4와 관련하여 여기에서 다소 문제와 관련이 있습니다 : https://jira.mongodb.org/browse/SERVER-9383.
IPV4 IP 주소가 127.0.0.1 또는 0.0.0.0이 아니면 MongoDB는 유닉스 도메인 소켓 생성을 거부합니다. 하나의 인터페이스에서 실행하거나 비활성화 할 수 있습니다 (이유없는 이유로). 나에게 이것은 MongoDB 코드의 품질을 반영한 것이다.
나는 2011 년까지 코드를 추적했으며 실수로 2 개의 mongodb 프로세스가 동일한 소켓 파일을 만들지 못하도록 막아주는 해킹이라고 믿습니다. 192.168.1.1:27017 및 192.168.1.2:27017에서 하나의 인스턴스를 실행 한 경우 /tmp/mongod-27017.sock에서 동일한 소켓 파일을 만들려고합니다. 10gen에 아무도 그 수표가 왜 있는지에 대한 단서가 없기 때문에 아무도 2011 년 이후에 그것을 고쳤습니다. EADDRINUSE 때문에 127.0.0.1:27017이 이미 사용 중인지 확인하는 것은 쉽지만 그 것을 확인하는 것은 어렵습니다. 소켓 파일이 오래되었거나 다른 프로세스가 소켓 파일을 만든 경우. 왜 그들이 소켓 파일의 이름을 다르게 지정하지 않았는지 나는 잘 모르겠습니다. 그것은 단지 TCP를 통해 작동 https://github.com/mongodb/mongo/blob/r2.2.4/src/mongo/util/net/listen.cpp#L91
if (useUnixSockets && (sa.getAddr() == "127.0.0.1" || sa.getAddr() == "0.0.0.0")) // only IPv4
out.push_back(SockAddr(makeUnixSockPath(port).c_str(), port));
- 1. TCP 포트를 활성화/비활성화하는 Windows 10 스크립트
- 2. Sqlconnection에서 tcp 포트를 받으십시오.
- 3. PHP를 사용하여 TCP 포트를 수신하는 방법은 무엇입니까?
- 4. TCP 포트를 열려면 어떻게합니까
- 5. 누가 TCP 포트를 사용합니까?
- 6. weblogic console없이 weblogic에서 관리 포트를 비활성화하는 방법은 무엇입니까?
- 7. C 포트를 사용하여 TCP 연결에서 메시지 받기 #
- 8. TCP 드라이버에 가상 COM 포트를 쓰는 방법은 무엇입니까?
- 9. Delphi에서 TCP 포트를 사용할 수 있는지 확인하는 방법은 무엇입니까?
- 10. 새 서비스를위한 기본 TCP/IP 포트를 선택하는 방법은 무엇입니까?
- 11. azur VM에서 다중 TCP 포트를 설정하는 방법은 무엇입니까?
- 12. tcp 클라이언트 모드에서 수신 포트를 고정하는 방법은 무엇입니까?
- 13. 어떤 프로세스가 tcp 포트를 하이재킹합니까?
- 14. 들어오는 TCP 연결 포트를 가져옵니다
- 15. mongodb 샤드 포트를 다시 설정합니다.
- 16. mongodb 기본 포트를 변경하는 방법
- 17. Windows에서 TCP 연결 중 TCP 대상 포트를 다시 쓰는 방법은 무엇입니까?
- 18. TCP 포트를 구현하기 위해 libpcap을 사용합니다.
- 19. 모든 TCP UDP 열린 포트를 검색하려면 어떻게해야합니까?
- 20. adb 포트 전달을 비활성화하는 방법은 무엇입니까?
- 21. tcp 세션에서 libcurl이 사용하는 소스 tcp 포트를 찾는 방법
- 22. devcon을 사용하여 직렬 포트를 비활성화하는 방법
- 23. 위젯을 비활성화하는 방법은 무엇입니까?
- 24. 포논을 비활성화하는 방법은 무엇입니까?
- 25. scrollView를 비활성화하는 방법은 무엇입니까?
- 26. 링크를 비활성화하는 방법은 무엇입니까?
- 27. Dexguard를 비활성화하는 방법은 무엇입니까?
- 28. 이벤트를 비활성화하는 방법은 무엇입니까?
- 29. 타이머를 비활성화하는 방법은 무엇입니까?
- 30. websocket 포트를 올바르게 nmap하는 방법은 무엇입니까?
:
여기에 코드를 참조하십시오. 다른 액세스를 차단하려면 방화벽을 사용하십시오. – WiredPrairie유닉스 소켓에서도 작동합니다. – user3188101
Stackoverflow는 개발자를위한 교환 사이트입니다. 그러나 이것은 구성 및 관리에 대한 질문입니다. 이러한 질문은 http://dba.stackexchange.com에서 훨씬 잘 맞습니다. – Philipp