Network3분 읽기· 연습 문제 3개

firewalld에서 열려 보이는데 접속은 계속 막힐 때

port rule은 있어 보이지만 zone, runtime/permanent drift, source binding, 상위 방화벽 때문에 연결이 실패하는 상황에서 먼저 볼 신호, CLI 확인 순서, 흔한 오진, 안전한 복구 방향을 정리한 InfraTree 가이드입니다.

목차
  1. firewalld에서 포트를 열었는데 막힌다면, 방화벽이 하나가 아니다
  2. 1) zone이 다르다
  3. 2) permanent와 reload를 안 맞췄다
  4. 3) rich rule이 앞서 막는다
  5. 4) firewalld 밖의 계층
  6. 순서
  7. 빠른 진단 체크리스트

firewalld에서 포트를 열었는데 막힌다면, 방화벽이 하나가 아니다

포트를 --add-port로 열었는데도 막힌다면, firewalld 안의 문제이거나 firewalld 밖의 다른 계층이다. firewalld 안부터 정확히 좁힌다.

1) zone이 다르다

firewalld는 zone 단위다. 규칙을 default(public)에 넣었는데 그 인터페이스가 다른 zone(예: internal)에 묶여 있으면 규칙이 적용되지 않는다.

firewall-cmd --get-active-zones        # 인터페이스가 어느 zone 인지
firewall-cmd --zone=public --list-all  # 그 zone 에 실제 반영된 규칙

2) permanent와 reload를 안 맞췄다

--permanent 없이 넣으면 재시작 때 사라지고, --permanent만 넣고 --reload를 안 하면 지금은 반영이 안 된다. 둘 다 필요하다.

3) rich rule이 앞서 막는다

더 구체적인 rich rule의 drop/reject가 일반 포트 허용보다 앞서면 허용을 덮는다. --list-rich-rules로 충돌을 확인한다.

4) firewalld 밖의 계층

여기까지 맞는데도 막히면 방화벽 밖을 본다.

  • 클라우드 보안그룹/NACL — 호스트 방화벽을 다 열어도 이게 막으면 그대로 실패한다.
  • SELinux 포트 라벨 — 서비스가 표준 아닌 포트를 쓰면 semanage port로 라벨을 줘야 바인딩/수신이 된다.
  • rp_filter — 비대칭 라우팅에서 리턴 패킷이 조용히 드롭된다.
ss -tlnp        # 실제로 그 포트를 듣고 있는지(방화벽 이전 문제)
# 반대편에서:  nc -vz <host> <port>

순서

실제 listen 확인(ss) → zone → permanent+reload → rich rule → 보안그룹/SELinux/rp_filter. “firewalld를 열었다”는 방화벽 계층 하나를 통과했다는 뜻일 뿐이다.

빠른 진단 체크리스트

  • ss -tlnp로 그 포트를 실제 듣고 있는지 먼저 본다
  • --get-active-zones로 인터페이스가 어느 zone인지 확인한다
  • 규칙을 넣은 zone과 인터페이스 zone이 같은지 본다
  • --permanent와 --reload를 함께 적용했는지 확인한다
  • rich rule의 drop/reject가 포트 허용을 덮는지 본다
  • 클라우드 보안그룹·NACL이 막는지 확인한다
  • 비표준 포트면 SELinux 포트 라벨(semanage)을 확인한다
  • 비대칭 라우팅이면 rp_filter가 리턴 패킷을 드롭한다

이 가이드로 연습하기

같은 장애를 다룬 검수된 문제입니다. 원인·복구·재발 방지를 직접 적어 보고 모범 풀이와 비교해 보세요.

다음에 읽을 가이드