ss에 CasaOS 또는 Docker 서비스가 :::80에서 수신 중으로 표시된다는 이유만으로 IPv6을 비활성화하지 마세요. Linux에서는 IPv6 와일드카드 리스너가 소켓 설정에 따라 IPv4 연결도 수락할 수 있으며, Docker는 일반적으로 호스트 주소를 지정하지 않으면 포트를 IPv4에 게시합니다.
원래 사례는 ZimaOS가 아니라 GCP의 Debian 12에서 실행되는 CasaOS였습니다. 올바른 진단 방법은 IPv4를 명시적으로 테스트하고, CasaOS 게이트웨이와 Docker 포트 바인딩을 확인하며, GRUB를 변경하거나 IPv6을 전역적으로 비활성화하기 전에 클라우드 방화벽을 점검하는 것입니다.
먼저 IPv4를 직접 테스트하세요
curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'
로컬 IPv4는 작동하지만 원격 IPv4가 실패한다면, 문제는 CasaOS의 바인딩보다는 호스트 또는 클라우드 방화벽이나 라우팅에 있을 가능성이 큽니다.
Docker의 포트 게시에는 일반적으로 IPv4가 포함됩니다
Docker의 최신 Docker 포트 게시 가이드에 따르면 일반적으로 게시된 포트는 호스트 주소 매핑을 통해 연결할 수 있으며, 명시적인 IPv6 전용 동작에는 다른 구성이 필요합니다.
CasaOS 자체를 확인하세요
systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'
현재 CasaOS 설치 프로그램은 대시보드 URL을 표시할 때도 IPv4 NIC 주소를 열거하므로, 정상적인 설치는 IPv6 전용 액세스를 요구하도록 설계되지 않았습니다.
GCP 방화벽을 확인하세요
VM에 IPv4 주소와 경로가 있고, 선택한 CasaOS 웹 포트에 대한 인바운드 규칙이 있는지 확인하세요. 서비스가 올바르게 수신 중이어도 클라우드 방화벽이 포트 80을 차단할 수 있습니다.
첫 번째 해결 방법으로 IPv6을 전역적으로 비활성화하지 마세요
이전 CasaOS 구성 요소는 역사적으로 /proc/net/tcp6가 존재할 것으로 예상했으며, 일부 빌드에서는 IPv6을 비활성화하면 앱 관리 문제가 발생했습니다. IPv6을 제거하면 첫 번째 문제는 해결하지 못한 채 두 번째 문제가 생길 수 있습니다.
IPv4 전용 Docker 바인딩이 필요한 경우
ports:
- "0.0.0.0:8080:80"
해당 Compose 정의를 직접 관리하고 노출에 따른 영향을 이해하는 경우에만 명시적인 IPv4 바인딩을 사용하세요.
CasaOS 웹 포트를 확인하세요
80번 포트가 이미 사용 중이면 설치 프로그램이 사용 가능한 다른 포트를 선택할 수 있습니다. 서비스가 실패했다고 가정하기 전에 실제 CasaOS HTTP 포트를 확인하세요.
Docker 네트워킹 가이드에서 동일한 네트워킹 기본 사항을 다룹니다.
실제 연결을 테스트한 후에만 sysctl을 확인하세요
그래도 듀얼 스택 소켓 동작이 의심된다면 sysctl net.ipv6.bindv6only를 확인하세요. 값이 0이면 많은 IPv6 와일드카드 소켓이 IPv4 매핑 연결을 수락할 수 있으며, 값이 1이면 IPv6 전용으로 동작합니다. 영향을 받는 모든 서비스를 이해하지 못한다면 시스템 전체 설정을 변경하지 마세요.
Docker의 실제 게시 주소를 확인하세요
docker ps --format 'table {{.Names}} {{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'
이 명령은 Docker가 0.0.0.0:PORT와 같은 IPv4 매핑을 생성했는지, IPv6 매핑을 생성했는지, 또는 둘 다 생성했는지를 보여줍니다. 단일 프로세스 목록 한 줄로 동작을 추론하는 것보다 신뢰할 수 있습니다.
GCP에는 두 개의 방화벽 계층이 있다는 점을 기억하세요
Debian 호스트에는 자체 nftables/iptables 규칙이 있을 수 있으며, GCP는 이와 별도로 VPC 방화벽의 인바운드를 제어합니다. 두 계층 중 하나가 포트를 차단하면 서비스가 로컬에서는 정상이어도 외부에서 연결되지 않을 수 있습니다.
FAQ
:::80은 항상 IPv6 전용을 의미하나요?
아니요. 그렇게 결론 내리기 전에 curl -4로 확인하세요.
GRUB에서 IPv6을 비활성화해야 하나요?
첫 번째 문제 해결 단계로는 권장하지 않습니다. IPv6 커널 인터페이스를 필요로 하는 구성 요소가 작동하지 않을 수 있습니다.
localhost에서는 작동하지만 공용 IPv4에서는 작동하지 않는 이유는 무엇인가요?
클라우드 방화벽, 보안 그룹, 경로 및 호스트 방화벽을 확인하세요.
이것은 ZimaOS 문제인가요?
원래 스레드는 ZimaOS가 아니라 Debian 12에 설치된 CasaOS에 관한 것입니다.
