LabHub
배우기 러닝패스 코스

LFCS — Linux Foundation認定システム管理者

アドレス・名前・経路を設定して読む

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

정적 주소 설정 파일을 쓰고, 이름 해석 경로를 구간별로 확인하고, 소켓과 라우팅을 읽어 요약을 만든다.

왜 중요한가

이 실습의 1~2단계는 저자의 홈랩에서 실제로 클러스터를 죽인 사고의 재발 방지 절차 그대로다. DHCP 임대 갱신으로 컨트롤 플레인의 주소가 바뀌자 인증서 SAN 과 어긋나 apiserver 가 기동하지 못했다. 그때 배운 것은 dhcp4: false 만으로는 고정이 아니라는 것이다. cloud-init 이 부팅마다 네트워크 설정을 다시 생성하기 때문에 그 생성을 함께 막아야 하고, 공유기 쪽 DHCP 예약까지 세트로 해야 비로소 주소가 고정된다.

나머지 단계는 진단 순서를 몸에 익히는 과정이다. getentdig 의 결과가 갈리는 지점이 곧 문제 구간이고, ss 의 소켓 상태와 ip route 의 기본 경로는 "여기까지는 정상" 을 확정해 주는 근거다. 이 환경에서는 pingiptables 가 막혀 있으므로 도달성 확인 대신 설정 파일과 관찰 도구로만 판단하는 훈련을 한다.

단계

  1. /root/lfcs-net/01-static.yaml 에 netplan 설정을 쓰세요. network.version 은 2, 인터페이스는 enp3s0, dhcp4: false, 주소는 10.0.0.120/24, 기본 경로는 to: defaultvia: 10.0.0.1, 네임서버는 10.0.0.11.1.1.1 입니다.
  2. /root/lfcs-net/99-disable-network-config.cfg 에 cloud-init 의 네트워크 설정 생성을 끄는 내용을 쓰세요. 실제 서버라면 이 파일은 /etc/cloud/cloud.cfg.d/ 아래에 둡니다.
  3. /etc/hosts 에 주소 10.0.0.120, 정규 이름 cp-1.homelab.internal, 별칭 cp-1 항목을 추가하고, getent hosts cp-1 의 출력을 /root/lfcs-net/getent.txt 에 저장하세요.
  4. /root/lfcs-net/resolv-summary.txtnameservers=<nameserver 줄 개수>ndots=<옵션 값 또는 none> 두 줄을 /etc/resolv.conf 기준으로 적으세요.
  5. 127.0.0.1:8087 에서 듣는 TCP 리스너를 하나 띄우고, 현재 LISTEN 중인 소켓의 로컬 주소를 /root/lfcs-net/listen.txt 에 한 줄씩 담으세요.
  6. /root/lfcs-net/route.txtdefault_via=<기본 경로의 게이트웨이 또는 none>primary_iface=<기본 경로가 나가는 장치> 두 줄을 적으세요.
  7. /root/lfcs-net/nsswitch.txthosts=<'/etc/nsswitch.conf' 의 hosts 행 값들> 한 줄을 적으세요. 값 사이는 공백 하나로 구분합니다.
  8. /root/lfcs-net/firewall-plan.txt 에 규칙 다섯 줄을 <동작> <프로토콜> <포트> <출발지> 형식으로 아래 순서 그대로 적으세요.
allow tcp 22 10.0.0.0/24
allow tcp 6443 10.0.0.0/24
allow tcp 80 0.0.0.0/0
allow tcp 443 0.0.0.0/0
deny any any 0.0.0.0/0

참고

netplan 정적 주소 설정

/root/lfcs-net/01-static.yaml 에 netplan 설정을 쓰세요. network.version 은 2, 인터페이스는 enp3s0, dhcp4: false, 주소는 10.0.0.120/24, 기본 경로는 to: defaultvia: 10.0.0.1, 네임서버는 10.0.0.11.1.1.1 입니다.

netplan 은 YAML 이고 최상위 키는 network 입니다. 인터페이스 아래에 DHCP 를 끄는 키와 주소 목록, 경로 목록, 네임서버가 들어갑니다. 주소에는 프리픽스 길이를 함께 씁니다.

cloud-init 네트워크 설정 끄기

/root/lfcs-net/99-disable-network-config.cfg 에 cloud-init 의 네트워크 설정 생성을 끄는 내용을 쓰세요. 실제 서버라면 이 파일은 /etc/cloud/cloud.cfg.d/ 아래에 둡니다.

한 줄이면 됩니다. cloud-init 이 네트워크 설정을 다시 만들지 못하게 하는 키를 비활성화 값으로 두세요.

hosts 항목과 getent 확인

/etc/hosts 에 주소 10.0.0.120, 정규 이름 cp-1.homelab.internal, 별칭 cp-1 항목을 추가하고, getent hosts cp-1 의 출력을 /root/lfcs-net/getent.txt 에 저장하세요.

hosts 파일의 한 줄은 주소, 정규 이름, 그리고 별칭 순서입니다. 확인은 DNS 만 보는 도구 말고 이름 서비스 스위치 전체를 타는 도구로 하세요.

리졸버 설정 요약

/root/lfcs-net/resolv-summary.txtnameservers=<nameserver 줄 개수>ndots=<옵션 값 또는 none> 두 줄을 /etc/resolv.conf 기준으로 적으세요.

nameserver 로 시작하는 줄의 개수를 세고, options 줄에서 점 개수 임계값을 찾습니다. 그 항목이 없으면 none 이라고 적으세요.

리스너를 띄우고 소켓 목록 만들기

127.0.0.1:8087 에서 듣는 TCP 리스너를 하나 띄우고, 현재 LISTEN 중인 소켓의 로컬 주소를 /root/lfcs-net/listen.txt 에 한 줄씩 담으세요.

파이썬 내장 모듈로 간단한 서버를 띄울 수 있고, 주소를 루프백으로 묶는 옵션이 있습니다. 소켓 목록은 헤더 없이 뽑는 옵션을 쓰면 가공이 쉽습니다.

기본 경로 파싱

/root/lfcs-net/route.txtdefault_via=<기본 경로의 게이트웨이 또는 none>primary_iface=<기본 경로가 나가는 장치> 두 줄을 적으세요.

기본 경로만 골라 보는 하위 명령이 있습니다. 출력에서 다음 홉과 나가는 장치를 나타내는 키워드 뒤의 값을 뽑으세요.

이름 해석 순서 기록

/root/lfcs-net/nsswitch.txthosts=<'/etc/nsswitch.conf' 의 hosts 행 값들> 한 줄을 적으세요. 값 사이는 공백 하나로 구분합니다.

hosts 로 시작하는 행의 값들을 공백 하나로 구분해 그대로 옮깁니다. 이 나열 순서가 곧 질의 순서입니다.

방화벽 규칙 설계 문서

/root/lfcs-net/firewall-plan.txt 에 규칙 다섯 줄을 <동작> <프로토콜> <포트> <출발지> 형식으로 아래 순서 그대로 적으세요.

규칙은 위에서부터 평가됩니다. 관리 접속 포트를 먼저 열고 기본 차단은 맨 끝에 두어야 원격에서 자기 자신을 잠그지 않습니다.