LabHub
배우기 러닝패스 코스

LFCS — Linux Foundation System Administrator

Configuring and Reading Addresses, Names and Routes

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 에 규칙 다섯 줄을 <동작> <프로토콜> <포트> <출발지> 형식으로 아래 순서 그대로 적으세요.

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