서버의 netstat를 통해 Nextcloud 동기화 클라이언트에서 들어오는 연결을 감지할 수 없습니다.
Docker 컨테이너에서 Nextcloud 및 MySQL을 실행하는 LAN에 서버가 있습니다. 여러 Nextcloud 클라이언트(Linux, macOS, iOS)를 사용하고 있는데 모든 것이 잘 작동합니다.
클라이언트가 호스트 수준에서 내 서버에 연결되어 있는지 확인하고 싶습니다. netstat을 사용하면 Nextcloud 웹 UI를 통해 클라이언트가 연결되어 있는지는 알 수 있지만 Nextcloud 동기화 클라이언트의 연결은 식별할 수 없습니다.
내가 누락된 netstat 매개변수를 아는 사람이 있나요? 어떤 조언이라도 환영합니다.
BR 스테판
답변1
이러한 연결에는 용기에 대한 DNA 링크가 있을 수 있습니다. 이는 이제 호스트가 "외부"와 컨테이너 사이의 라우터 역할을 한다는 것을 의미합니다. netstat
이러한 연결은 표시되지 않습니다. 누락된 프로세스를 처리하려면 추가 도구가 필요합니다.
그러한 도구 중 하나는conntrack
, 연결 추적에 대한 정보를 찾기 위해 conntrack을 쿼리합니다. 옵션과 함께 이 명령을 사용하십시오 -j
.
conntrack -L -j
NAT 연결만 표시되며, 컨테이너와 외부 세계 사이에 현재 활성화된 흐름과 보충 출력을 보여줍니다 netstat
.
비슷한 출력을 원하면 netstat
시도해 볼 수 있습니다 (사용 가능한 경우)netstat-nat
이는 동일한 메커니즘에 어느 정도 의존합니다.
루프를 실행하는 또 다른 방법은 docker
각 컨테이너의 마스터 PID에 대해 Docker를 쿼리(호스트 시스템에서 직접 사용)하고 그 결과를 사용하여 컨테이너의 네트워크에 액세스하여 정상적으로 실행하는 것입니다 netstat
. conntrack을 사용하면 더 이상 표시되지 않습니다. 특정 상태(예 CLOSE_WAIT
: 종종 애플리케이션 문제의 증상)
실행 중인 Docker 컨테이너가 containername
자체 관점에서 보면 컨테이너 자체에 유용한 명령이 없더라도 모든 네트워크 연결을 확보해야 합니다.
nsenter --target $(docker inspect --format '{{.State.Pid}}' containername) --net netstat -utn