Oracle Cloud 서버에서 "포트를 열었는데도 접속이 안 된다"는 문제를 겪은 적 있나요? OCI는 AWS나 GCP와 달리 3개의 독립적인 방화벽 계층이 존재합니다. 하나라도 막혀있으면 트래픽이 차단됩니다.
이 글은 실제 서브도메인 배포 과정에서 겪은 "Connection refused" 문제를 진단하고 해결한 과정을 정리한 것입니다.
각 계층에서 막히면 그 이후는 의미가 없습니다. 반드시 1 → 2 → 3 순서로 확인해야 합니다.
HTTPS(443)는 정상 접속되는데 HTTP(80)가 거부되는 상황:
# 443: 정상
curl -v https://<서버IP> -k --connect-timeout 10
# HTTP/1.1 403 Forbidden ← Apache 응답 (접속 자체는 됨)
# 80: 거부
curl -v http://<서버IP> --connect-timeout 10
# Connection refused ← 어딘가에서 차단
OCI 콘솔에서 확인:
Networking → Virtual Cloud Networks → VCN → Subnets → Security Lists
→ Ingress Rules 확인
80 포트 규칙이 이미 존재했습니다. 1계층은 통과.
Source Port Range에 80을 입력하는 것. Source Port는 클라이언트의 임의 포트입니다. Destination Port Range에 80을 넣어야 합니다. Source Port Range는 비워두세요.
# firewalld 서비스 확인
sudo firewall-cmd --list-services
# dhcpv6-client http https ssh ← http 포함 → 통과
# iptables 확인
sudo iptables -L -n | grep -E "80|DROP|REJECT"
# OCI 메타데이터 서비스(169.254.x.x) 규칙만 있음 → 통과
2계층도 문제없었습니다.
# Apache 리스닝 포트 확인
sudo ss -tlnp | grep -E ":80 |:443 "
# 443만 있고 80이 없음! ← 원인 발견
# Listen 설정 확인
grep -r "Listen" /etc/httpd/conf/ /etc/httpd/conf.d/ | grep -v "#"
# /etc/httpd/conf.d/ssl.conf: Listen 443 https ← 443만 있음
# httpd.conf의 Listen 80이 주석 처리됨
OCI WAF가 HTTP→HTTPS 리다이렉트를 해주니까, 서버에서 80을 굳이 안 열어둔 것이었습니다. 직접 연결 서브도메인을 추가하려면 80이 필요합니다:
sudo sed -i 's/^#Listen 80$/Listen 80/' /etc/httpd/conf/httpd.conf
sudo apachectl configtest && sudo systemctl restart httpd
# 확인
sudo ss -tlnp | grep ":80 "
# LISTEN 0 511 *:80 *:* ← 정상
외부에서 서버 접속이 안 될 때, 이 순서대로 확인하세요:
| 순서 | 확인 대상 | 명령어 | 정상 결과 |
|---|---|---|---|
| 0 | DNS | dig 도메인 +short | 서버 IP 표시 |
| 1 | OCI Security List | 콘솔 → Ingress Rules | 해당 포트 규칙 존재 |
| 2a | firewalld | sudo firewall-cmd --list-services | http/https 포함 |
| 2b | iptables | sudo iptables -L -n | grep DROP | 해당 포트 DROP 없음 |
| 3 | Apache Listen | sudo ss -tlnp | grep ":포트 " | LISTEN 표시 |
| 4 | Apache 설정 | sudo apachectl configtest | Syntax OK |
| 5 | 에러 로그 | sudo tail -20 /var/log/httpd/error_log | 에러 없음 |
OCI WAF를 사용하면 트래픽 경로가 다릅니다:
이 구조에서는:
| 동작 | 설명 |
|---|---|
| 서버 80 포트 불필요 | WAF가 HTTP 리다이렉트를 처리 |
| 서버 IP 직접 접속 차단 | 보안 목적 (WAF 우회 방지) |
| DNS는 서버 IP가 아닌 WAF CNAME | xxx.o.waas.oci.oraclecloud.net |
WAF를 우회하는 서브도메인(A레코드 직접 연결)을 추가하려면, 서버가 직접 80/443을 받을 수 있어야 합니다. 이때 Security List → OS 방화벽 → Apache Listen 3계층 모두 확인이 필요합니다.