LabHub

네트워크 기초 — 리눅스 VM 에서 손으로 · 방화벽과 NAT · 퀴즈

확인: 방화벽과 NAT

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. SSH 로 접속한 채 input 체인을 `policy drop` 으로 만들었더니 세션이 얼어붙었다. 빠뜨린 것은?

    1. `tcp dport 22 accept` 를 정책보다 뒤에 넣었다
    2. `ct state established,related accept` 를 먼저 넣지 않아 내 세션의 패킷이 죽었다
    3. output 체인에도 같은 정책을 넣어야 했다
    4. lo 허용을 빼먹어 sshd 가 자기 자신과 통신하지 못했다
  2. 라우터 역할의 리눅스에서 통과 트래픽을 막는 규칙은 어느 훅에 두나?

    1. input — 들어오는 것은 전부 input 이므로
    2. postrouting — 나가기 직전이 가장 확실하므로
    3. forward — 자기 주소가 아닌 패킷만 지나는 자리이므로
    4. prerouting — 라우팅 전에 막아야 자원을 아끼므로
  3. 마스커레이드 규칙을 넣었는데 사설 네임스페이스가 인터넷에 못 나간다. `ip_forward` 는 1 이다. 다음으로 볼 것은?

    1. masquerade 대신 snat to 로 주소를 명시해야 한다
    2. postrouting 이 아니라 prerouting 에 넣어야 한다
    3. conntrack 모듈이 안 올라와 NAT 가 기록되지 않는다
    4. forward 체인의 정책이 drop 이라 NAT 전에 이미 버려진다
  4. DNAT(포트 포워딩) 규칙을 prerouting 에 두는 이유는?

    1. 라우팅 전에 목적지를 바꿔야 바뀐 목적지로 경로를 찾기 때문에
    2. prerouting 이 가장 먼저 실행되어 성능이 좋기 때문에
    3. postrouting 에는 nat 타입 체인을 만들 수 없기 때문에
    4. conntrack 이 prerouting 에서만 항목을 만들기 때문에
  5. 마스커레이드 규칙의 `counter packets` 가 실제 오간 패킷 수보다 훨씬 작은 이유는?

    1. counter 는 바이트가 1500 을 넘는 패킷만 세기 때문에
    2. NAT 체인은 연결의 첫 패킷만 타고 나머지는 conntrack 이 처리하기 때문에
    3. ICMP 는 NAT 대상이 아니라 세지 않기 때문에
    4. 응답 패킷은 postrouting 을 지나지 않기 때문에
  6. 네임스페이스 안의 `nft … log` 규칙이 `dmesg` 에 아무것도 남기지 않는다. 무엇이 필요한가?

    1. `net.netfilter.nf_log_all_netns=1` 로 네임스페이스 밖 로그를 허용한다
    2. log 대신 counter 를 써야 netns 에서 동작한다
    3. 네임스페이스 안에서 rsyslog 를 따로 띄워야 한다
    4. log 규칙을 input 이 아니라 prerouting 에 두어야 한다