Linux 방화벽과 패킷 경로
서비스가 듣는 소켓, 호스트 방화벽, 라우팅을 구분하고 패킷이 지나가는 경로에 맞춰 규칙을 해석합니다.
개념부터 찾아보기
정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.
이 노트에서 설명할 수 있게 되는 것
- 로컬 입력·전달·출력 경로를 목적지에 따라 선택한다.
- 주소 변환 전후와 conntrack 상태를 규칙 해석에 적용한다.
- 리스닝·라우팅·firewalld 정책을 구분해 통신 장애를 찾는다.
01규칙 관리 프로그램과 커널의 패킷 처리 지점
- 는 커널 네트워크 처리 중 특정 지점에서 필터링·주소 변환 등을 수행할 수 있게 하는 틀이다.
- ·iptables는 규칙을 표현하고 관리하는 인터페이스 계열이고, 나 UFW는 서비스·영역 같은 더 높은 수준의 정책을 관리한다.
- 따라서 패킷이 , iptables, 라는 독립된 세 방화벽을 차례로 통과한다고 그리면 구현 관계를 오해하게 된다.
- 에서는 테이블 아래 체인이 있고, base chain을 hook과 priority에 연결하여 실제 처리 위치를 정한다.
- 체인·규칙일반 체인은 다른 규칙이 jump 또는 goto로 호출해야 방문한다.
- 우선순위·체인같은 hook 안에서도 우선순위와 여러 체인의 평가 관계가 있으므로 한 체인의 accept가 언제나 뒤의 모든 정책을 무시하는 전역 허용이라는 뜻은 아니다.
- drop은 그 패킷을 버리는 판단이다.
02입력·전달·출력 경로를 라우팅 결정으로 나누기
- 패킷·PREROUTING외부에서 들어온 패킷은 PREROUTING을 지나 목적지가 이 호스트인지 판단을 받는다.
- INPUT로컬 주소로 전달되면 INPUT을 지나 소켓으로 향하고, 다른 호스트로 전달되면 FORWARD를 거쳐 POSTROUTING으로 나간다.
- 패킷·OUTPUT호스트 가 직접 생성한 패킷은 OUTPUT 경로를 사용한다.
- INPUT·규칙INPUT 규칙만 수정해도 모든 중계 트래픽이 제어된다고 생각하면 라우터나 환경을 설명할 수 없다.
- DNATDNAT가 목적지 주소를 바꾸면 이후 판단이 달라질 수 있다.
- 예를 들어 외부의 호스트 포트로 들어온 연결을 주소로 DNAT하면 최종 처리 경로는 호스트 INPUT이 아니라 전달 경로가 될 수 있다.
- SNATSNAT 또는 MASQUERADE는 보통 나가는 경로에서 출발지 주소를 바꾸고 응답은 연결 추적 정보에 따라 역변환된다.
- 는 과 필터 정책을 자동으로 대체하지 않는다.
INPUT 규칙의 순서·기본 정책·카운터 읽기
SSH 허용과 FTP 거부 규칙, 기본 ACCEPT 정책, 별도 테이블을 패킷 처리 경로에 연결한다.
실습 구성과 전제
- 화면은 iptables로 조회한 규칙이다. 를 직접 관리하는 환경이나 다른 주소 패밀리의 규칙까지 모두 보여 주는 출력은 아니다.
- 기존 실습 호스트의 규칙을 조회하는 예시이며 원격 접속 중 규칙을 변경하는 작업은 포함하지 않는다.
호스트 자신에게 오는 패킷의 규칙을 읽는다
- INPUT 체인은 결정 후 이 호스트가 수신할 패킷에 적용된다. 첫 규칙은 목적지 포트 22를 ACCEPT하고, 다음 규칙은 목적지 포트 21을 REJECT한다.
- 위에서부터 조건을 비교하므로 앞 규칙의 매치와 판정이 중요하다. 이 화면의 기본 정책은 ACCEPT이며, 일치하지 않는 패킷을 묵시적으로 모두 거부하는 구성이 아니다.
bashsudo iptables -L INPUT -n -v --line-numbers sudo iptables -S INPUT현재 filter/INPUT의 표시 결과와 규칙 문법을 함께 조회한다.
원본 크기로 보기 ↗- 체인 머리의 policy ACCEPT와 두 규칙의 번호가 함께 보인다.
- 22번 포트 ACCEPT의 카운터는 2642 packets, 21번 포트 REJECT의 카운터는 0으로 표시된다.
확인 기준카운터가 0인 규칙은 관찰 구간에 매치된 패킷이 없다는 뜻이다. 대상 서비스가 살아 있는지나 다른 경로의 차단 여부는 알 수 없다.
NAT 테이블의 빈 목록을 별도로 해석한다
- -t 는 filter가 아닌 테이블을 선택한다. 빈 체인은 해당 조회에 표시할 주소 변환 규칙이 없다는 뜻이며 INPUT의 허용·거부 규칙을 지우지 않는다.
- 필터 판정과 연결의 주소 변환은 목적이 다르다. 첫 패킷으로 정한 매핑과 이후 연결 추적의 동작도 단순히 모든 패킷이 모든 규칙을 통과한다고 읽어서는 안 된다.
bashsudo iptables -t nat -L -n -v ss -lnt주소 변환 규칙과 애플리케이션의 리슨 상태를 다른 증거로 조회한다.
원본 크기로 보기 ↗- PREROUTING·INPUT·OUTPUT·POSTROUTING의 체인 머리가 나열된다.
- 각 체인 아래 실제 변환 규칙 행이 없고, 조회 명령은 -t nat를 사용한다.
확인 기준가 비어 있어도 서비스 리슨, INPUT 필터, 문제 때문에 접속이 실패할 수 있다.
한 번의 연결 시험을 카운터 변화와 대응시킨다
- 허용된 실습 클라이언트에서 지정 서비스에 한 번 연결하고 직전·직후 카운터를 비교한다. 22번 규칙 증가가 보이면 그 규칙을 지난 패킷이 있었다는 근거가 된다.
- 연결 성공은 수립과 애플리케이션 응답까지 봐야 한다. REJECT의 응답, 서버가 닫힌 포트에 보내는 RST, 경로 중간의 DROP은 서로 다른 실패 양상이다.
확인 기준시험한 시각·목적지·포트를 기록한다. 트래픽이 많은 환경에서는 카운터 차이 전부를 자신의 한 요청으로 단정하지 않는다.
실습에서 확인한 동작 원리
- 기본 정책은 체인 머리에서 읽고, 개별 규칙은 번호·조건·판정·카운터를 묶어 해석한다.
- 빈 테이블, 필터 허용, 서비스 실행은 각각 다른 계층의 상태다.
설정·출력 추가로 확인하기 22장
아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.
실습 화면 묶음 01 8장
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 「iptables」 문맥에 삽입된 원본 코드와 실행 결과이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 방화벽에 수록된 화면·도식이다.
실습 화면 묶음 03 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 방화벽에 수록된 화면·도식이다.
실습 화면 묶음 04 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 방화벽에 수록된 화면·도식이다.
실습 화면 묶음 05 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 방화벽에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 방화벽에 수록된 화면·도식이다.
실습 화면 묶음 07 1장
원본 크기로 보기 ↗- 학습 원본 · Linux 방화벽 설정과 정책 출력의 내장 이미지 1에 수록된 화면·도식이다.
실습 화면 묶음 08 8장
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 명령·상태 출력이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 명령·상태 출력이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Linux 방화벽과 패킷 경로 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
동작·명령 참고 문서
03연결 추적과 첫 패킷·응답 패킷의 차이
- 연결 흐름 식별은 프로토콜과 주소·포트 등의 정보를 이용하여 패킷을 연결 흐름에 연결한다.
- 연결 추적 상태NEW는 새 연결을 시작하는 흐름, ESTABLISHED는 이미 추적하는 양방향 통신의 후속 흐름, RELATED는 추적 연결과 관련된 별도 흐름, INVALID는 유효하게 연결하기 어려운 패킷이라는 정책상 분류다.
- 상태와의 차이 소켓의 상태 이름과 상태가 정확히 같은 상태 기계는 아니다.
- established·related에서 established,related를 허용하는 규칙을 두면 허용된 요청의 응답을 간단하게 처리할 수 있다.
- 응답 허용 규칙첫 패킷을 통과시켰다는 사실만으로 방화벽이 모든 응답을 자동 허용하는 것은 아니다.
- 허용 규칙이 실제로 있어야 한다.
- ·규칙 규칙은 일반적으로 첫 패킷에서 연결의 변환 관계를 만들고 후속 패킷에 그 관계를 사용하므로 규칙을 바꿔도 기존 연결의 동작이 남아 있을 수 있다.
sudo nft list ruleset
sudo conntrack -L
ss -tan
# 방화벽 연결 추적과 프로세스의 TCP 소켓을 서로 다른 관점으로 읽는다.교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.
04firewalld의 zone·service·runtime·permanent
- ·인터페이스은 인터페이스 또는 출발지와 정책을 연결한다. 같은 ssh 서비스 허용이라도 어떤 에 적용했는지, 실제 인터페이스가 그 에 속하는지에 따라 결과가 달라진다.
- 는 필요한 프로토콜·포트 등을 이름으로 묶어 표현하는 설정 단위이며 애플리케이션 를 시작하는 와는 다르다.
- 간 정책정책 객체는 사이의 전달 정책을 표현하는 데 사용할 수 있다.
- 은 현재 적용 중인 규칙 상태이고 는 다음 로드에 사용할 저장 상태다.
- --로 설정을 바꾸어도 즉시 커널 규칙에 반영되지 않으며 reload가 저장 구성을 불러온다.
- 반대로 변경을 저장하지 않으면 reload나 재부팅 때 없어질 수 있다.
- 겹치는 허용 규칙출발지 제한 rich rule을 추가해도 같은 전체에 더 넓은 ssh 허용이 남아 있으면 원한 제한이 되지 않으므로 규칙 하나의 문법보다 전체 허용 집합을 보아야 한다.
firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --permanent --zone=public --list-all
# 두 출력은 현재 정책과 저장 정책이라는 서로 다른 상태다.교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.
05작은 nftables 예제로 규칙의 순서를 읽기
- 입력 정책 예제아래는 실습용 입력 정책의 개념 예시다.
- 기본 허용 조건loopback과 이미 허용된 연결의 응답을 처리한 뒤 문서용 관리 대역의 SSH 신규 요청을 허용하고 나머지는 기본 정책으로 버린다.
- 192.0.2.0/24192.0.2.0/24는 실제 배포에 쓰는 주소가 아니라 문서용 예시다.
- 예제의 적용 범위전체 규칙 집합을 교체하는 명령이 아니며 ····서비스 요구를 모두 포함한 운영 정책도 아니다.
- accept·연결 추적첫 SYN이 출발지 대역과 목적지 포트 조건을 만족하면 accept되고 연결 추적 상태가 이어진다.
- 불일치 후 다음 규칙다른 출발지의 SYN은 해당 규칙에 일치하지 않아 다음 규칙 또는 체인 정책으로 간다.
- 패킷로컬 웹 서버가 127.0.0.1에만 listen한다면 외부 패킷이 방화벽을 통과해도 그 주소에서 서비스가 제공되지 않는다. 패킷 정책, listen 주소, 애플리케이션 인증은 각각 다른 조건이다.
table inet lesson {
chain input {
type filter hook input priority 0; policy drop;
iifname "lo" accept
ct state established,related accept
ip saddr 192.0.2.0/24 tcp dport 22 ct state new accept
}
}교육용 설정·명령 예시. 실행 환경과 대상 경로를 가정하며 이 페이지를 만들면서 실행하지 않았다.
06체인 순서와 연결별 NAT 매핑의 수명
- hook과 체인base chain은 hook·priority에 연결되어 패킷 처리 시 방문된다. 같은 hook에서 작은 우선순위 값의 체인이 먼저 실행되므로 파일에 적힌 표의 위치만으로 전체 순서를 알 수 없다.
- accept의 범위한 체인의 accept 뒤에도 뒤 우선순위 체인이 적용될 수 있다. 다른 체인의 drop은 최종 전달을 막으므로 한 규칙의 hit만 보고 전체 허용으로 단정하지 않는다.
- 첫 패킷의 상태 기반 는 첫 패킷에서 변환 규칙을 찾아 연결의 바인딩을 만든다. 후속 패킷은 매번 같은 규칙을 새로 검색하는 대신 저장된 변환 관계를 사용한다.
- 기존 연결의 잔존규칙을 수정한 뒤 신규 연결은 새 조건을 사용할 수 있지만 이미 추적된 연결에는 이전 관계가 남을 수 있다. 같은 브라우저의 연결 재사용 때문에 시험 결과가 달라질 수 있다.
- 상태와 소켓의 구분 상태는 커널이 본 흐름의 관계이며 애플리케이션 로그인이나 DB 상태가 아니다. ESTABLISHED를 업무 인증 성공으로 해석할 수 없다.
07SNAT 전후의 5-튜플을 서로 대응시키기
- 원래 방향가상 요청이 192.0.2.20:51000에서 203.0.113.80:443으로 향한다. 프로토콜과 양쪽 주소·포트가 흐름을 식별하는 기본 튜플을 이룬다.
- 출구 변환게이트웨이가 출발지를 198.51.100.10:62000으로 바꾸면 외부 서버는 이 변환된 출발지를 본다. 원래 클라이언트 포트 51000을 그대로 본다고 가정하지 않는다.
- 응답 방향응답은 203.0.113.80:443→198.51.100.10:62000으로 돌아온다. 연결 추적의 대응 관계가 목적지를 192.0.2.20:51000으로 되돌리는 근거다.
- 필터 위치SNAT 전 내부 캡처와 출구 캡처는 같은 통신에도 주소가 다르다. 필터가 어느 hook에서 어떤 변환 전후 주소를 보는지에 맞춰 조건을 읽어야 한다.
- 진단 결론내부 SYN과 외부 SYN이 둘 다 보이고 외부 응답이 돌아오지 않으면 로컬 INPUT의 허용만 늘려도 원인과 맞지 않는다. 반환 경로·상대 응답·상태 매핑을 따로 대조한다.
| 관찰 구간 | 출발지 | 목적지 |
|---|---|---|
| 내부 요청 | 192.0.2.20:51000 | 203.0.113.80:443 |
| 외부 요청 | 198.51.100.10:62000 | 203.0.113.80:443 |
| 외부 응답 | 203.0.113.80:443 | 198.51.100.10:62000 |
| 복원된 응답 | 203.0.113.80:443 | 192.0.2.20:51000 |
08규칙 카운터와 패킷 캡처가 다른 사실을 보여 주는 이유
- 카운터 증가규칙의 packet/byte 카운터 증가는 해당 규칙까지 와서 조건에 맞았다는 근거다. 뒤 단계의 drop· 실패·서비스 오류까지 성공했다고 말해 주지는 않는다.
- 카운터 정지다른 chain··주소 계열로 들어가거나 앞에서 판정됐으면 예상 규칙 카운터가 늘지 않는다. 트래픽이 장비 자체에 오지 않은 경우도 구별해야 한다.
- 입력과 전달로컬 서비스의 INPUT과 중계· 경로의 FORWARD를 나눈다. 같은 목적지 포트 번호라도 경로가 다르면 적용되는 체인이 다르다.
- 차이현재 카운터와 ruleset은 상태다. 저장한 구성의 내용만으로 지금 적용 상태를 대체하지 않는다.
- 한 연결 재사용기존 세션에서만 통신이 되고 새 세션이 실패하면 state 또는 신규 허용 규칙의 차이를 의심한다. 전체 초기화는 진단 조회가 아니라 다른 연결도 바꾸는 작업이다.
09통신 실패의 분리
- 통신 실패의 계층이름 해석, 경로와 게이트웨이, 소켓 바인딩, 방화벽, 애플리케이션 응답을 차례로 확인한다.
- 원격 접속 유지 조건원격 관리 중 정책을 바꿀 때는 관리 경로와 복구 수단을 먼저 확보해야 한다.
- 규칙문제 해결을 위해 전체 규칙을 지우는 방식은 다른 서비스까지 노출할 수 있다.
ss -lnt
firewall-cmd --get-active-zones
firewall-cmd --list-all리스닝 소켓과 활성 , 기본 의 현재 규칙을 조회한다. 방화벽 조회에는 권한이 필요할 수 있다.
10호스트가 받는 패킷과 통과시키는 패킷
- 외부 클라이언트외부 클라이언트가 이 서버 자체의 웹 서비스에 접속하는 경우와 이 서버를 게이트웨이로 삼아 다른 서버에 접속하는 경우를 비교한다.
- 패킷·수신된 패킷은 관련 처리와 판단을 거쳐 목적지가 로컬인지 전달 대상인지 결정된다.
- 인터페이스전자는 로컬 입력 경로에서 애플리케이션 소켓으로 향하고, 후자는 전달 경로를 통해 다른 인터페이스로 나간다.
- 따라서 로컬 서비스 허용 규칙을 고쳤다고 라우터를 통과하는 트래픽도 같은 방식으로 허용된다고 볼 수 없다.
- ·목적지 가 적용되면 판단에 쓰이는 목적지가 원래 패킷의 목적지와 달라질 수 있다.
- 출발지 는 응답이 돌아올 수 있도록 주소 관계를 추적하는 구성과 연결된다.
- 은 원래 방향과 응답 방향의 흐름 관계를 관리하지만 패킷 내용의 안전성을 검증하는 인증 장치가 아니다.
- ·규칙도식은 설명을 위해 일반적인 경로를 축약했으며 실제 규칙 순서와 우선순위는 사용 중인 · 설정에서 확인한다.
- 전달 패킷 수신다른 호스트로 전달할 패킷 한 건을 가정한다. 수신 경로의 PREROUTING 처리에서 연결 추적 및 설정된 목적지 변환 등이 적용될 수 있다.
- 으로 출력 현재 목적지에 대한 결과가 로컬 호스트가 아니라 다른 호스트를 가리키면 전달 경로를 선택한다. 로컬 목적지의 INPUT 경로와는 별도 분기다.
- 전달 허용과 필터 판정IP forwarding 등 전달 조건과 FORWARD 경로에 적용되는 필터 정책을 만족해야 한다. 경로가 있어도 전달이 금지되거나 필터가 drop하면 나가지 못한다.
- 송신 전 변환과 출력허용된 패킷은 POSTROUTING 처리를 거쳐 출력 인터페이스로 나간다. SNAT·masquerade 규칙이 있으면 그 조건에 맞춰 출발지를 변환한다.
- 응답의 반대 방향 처리응답은 자신의 ·필터 경로를 따른다. 연결 추적을 사용하는 라면 기존 연결의 대응 정보로 반대 방향 변환을 적용하며, 응답 허용 정책도 필요하다.
설명과 함께 보는 보조 도식
목적지에 따라 갈라지는 입력과 전달
주소 변환 세부 hook은 생략하고 라우팅 판단 이후의 갈림길을 보여 준다.
수신
패킷이 들어온 인터페이스와 zone을 확인한다.
- 관찰
- 입력 인터페이스
전체 단계를 한 번에 읽기
- 01
수신
패킷이 들어온 인터페이스와 zone을 확인한다.
- 관찰
- 입력 인터페이스
- 02
목적지 판단
라우팅 결과가 로컬인지 다른 호스트인지 구분한다.
- 분기 기준
- 라우팅된 목적지
- 03
로컬 사례
로컬 목적지이면 입력 정책을 거쳐 해당 소켓으로 향한다.
- 경로
- 로컬 입력
- 04
전달 사례
다른 호스트 목적지이면 전달 허용과 경로를 확인한다.
- 경로
- FORWARD 계열
- 05
전달과 반환 경로 확인
그림은 요청 방향이다. 실제 통신에는 반대 방향의 경로와 상태 추적·변환 대응도 필요하다.
- 양방향 조건
- 요청과 응답 모두 필요
화살표: 진행 또는 참조 방향 · 파란색: 현재 단계에서 다루는 관계
11차단처럼 보이는 여러 실패
- 패킷연결 시간 초과는 패킷 차단뿐 아니라 잘못된 경로, 응답 경로 문제, 대상 무응답에서도 나타난다.
- 연결 거절연결 거절은 해당 지점에서 소켓이 없거나 명시적인 거절 응답을 보낸 경우의 단서이며, 둘을 동일한 방화벽 차단으로 묶지 않는다.
- 먼저 ss로 실제 리스닝 주소와 프로토콜을 확인한다.
- 인터페이스루프백에만 듣는 서버는 외부 인터페이스의 포트를 허용해도 외부 접속을 받을 수 없다.
- ·에서는 기본 이름만 보지 말고 현재 인터페이스와 출발지에 적용되는 을 대조한다.
- 허용은 프로그램의 실행을 뜻하지 않고 포트·프로토콜 같은 정책 묶음을 뜻한다.
- ·과 의 차이를 기록해 재적용 뒤 결과가 달라지는지 확인한다.
- 규칙 포트 공개나 다른 규칙 관리 도구가 함께 사용되면 생성된 규칙과 적용 경로가 추가되므로 한 도구의 간단한 목록만으로 전체 정책을 단정하지 않는다.
| 구성·관찰 대상 | 확인하는 정보 | 구분할 문제 |
|---|---|---|
| ss의 리스닝 | 주소·포트·프로토콜 | 프로그램이 다른 주소에 바인딩 |
| 경로·응답 | 목적지와 반환 경로 | 비대칭 경로·게이트웨이 오류 |
| 연결 | 인터페이스·출발지 | 기본 과 실제 불일치 |
| · | 현재와 저장된 정책 | 재적용 뒤 정책 변화 |
이해했는지 확인하기
- 목적지가 호스트 자신인지 전달 대상인지 구분한다.
- 인터페이스의 활성 zone과 규칙을 함께 확인한다.
- 소켓 리스닝과 방화벽 허용을 각각 확인한다.