LFCS — Linux Foundation認定システム管理者
アドレス・名前・経路を設定して読む
한국어 원문으로 표시합니다.
목표
정적 주소 설정 파일을 쓰고, 이름 해석 경로를 구간별로 확인하고, 소켓과 라우팅을 읽어 요약을 만든다.
왜 중요한가
이 실습의 1~2단계는 저자의 홈랩에서 실제로 클러스터를 죽인 사고의 재발 방지 절차 그대로다. DHCP 임대 갱신으로 컨트롤 플레인의 주소가 바뀌자 인증서 SAN 과 어긋나 apiserver 가 기동하지 못했다. 그때 배운 것은 dhcp4: false 만으로는 고정이 아니라는 것이다. cloud-init 이 부팅마다 네트워크 설정을 다시 생성하기 때문에 그 생성을 함께 막아야 하고, 공유기 쪽 DHCP 예약까지 세트로 해야 비로소 주소가 고정된다.
나머지 단계는 진단 순서를 몸에 익히는 과정이다. getent 와 dig 의 결과가 갈리는 지점이 곧 문제 구간이고, ss 의 소켓 상태와 ip route 의 기본 경로는 "여기까지는 정상" 을 확정해 주는 근거다. 이 환경에서는 ping 과 iptables 가 막혀 있으므로 도달성 확인 대신 설정 파일과 관찰 도구로만 판단하는 훈련을 한다.
단계
/root/lfcs-net/01-static.yaml에 netplan 설정을 쓰세요.network.version은 2, 인터페이스는enp3s0,dhcp4: false, 주소는10.0.0.120/24, 기본 경로는to: default와via: 10.0.0.1, 네임서버는10.0.0.1과1.1.1.1입니다./root/lfcs-net/99-disable-network-config.cfg에 cloud-init 의 네트워크 설정 생성을 끄는 내용을 쓰세요. 실제 서버라면 이 파일은/etc/cloud/cloud.cfg.d/아래에 둡니다./etc/hosts에 주소10.0.0.120, 정규 이름cp-1.homelab.internal, 별칭cp-1항목을 추가하고,getent hosts cp-1의 출력을/root/lfcs-net/getent.txt에 저장하세요./root/lfcs-net/resolv-summary.txt에nameservers=<nameserver 줄 개수>와ndots=<옵션 값 또는 none>두 줄을/etc/resolv.conf기준으로 적으세요.127.0.0.1:8087에서 듣는 TCP 리스너를 하나 띄우고, 현재 LISTEN 중인 소켓의 로컬 주소를/root/lfcs-net/listen.txt에 한 줄씩 담으세요./root/lfcs-net/route.txt에default_via=<기본 경로의 게이트웨이 또는 none>과primary_iface=<기본 경로가 나가는 장치>두 줄을 적으세요./root/lfcs-net/nsswitch.txt에hosts=<'/etc/nsswitch.conf' 의 hosts 행 값들>한 줄을 적으세요. 값 사이는 공백 하나로 구분합니다./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
참고
- 리스너는
python3 -m http.server 8087 --bind 127.0.0.1을 백그라운드로 띄우면 만들어집니다. ss -ltnH는 헤더 없이 LISTEN 중인 TCP 소켓만 보여 줍니다. 로컬 주소는 네 번째 칸입니다.getent는 이름 서비스 스위치 전체 경로를 타지만dig는 DNS 만 봅니다. 둘의 결과가 다르면 범인은 DNS 가 아닙니다.- 흔한 실수: 기본 차단 규칙을 맨 앞에 두면 뒤의 허용 규칙에 닿기 전에 자기 접속부터 끊깁니다.
netplan 정적 주소 설정
/root/lfcs-net/01-static.yaml 에 netplan 설정을 쓰세요. network.version 은 2, 인터페이스는 enp3s0, dhcp4: false, 주소는 10.0.0.120/24, 기본 경로는 to: default 와 via: 10.0.0.1, 네임서버는 10.0.0.1 과 1.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.txt 에 nameservers=<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.txt 에 default_via=<기본 경로의 게이트웨이 또는 none> 과 primary_iface=<기본 경로가 나가는 장치> 두 줄을 적으세요.
기본 경로만 골라 보는 하위 명령이 있습니다. 출력에서 다음 홉과 나가는 장치를 나타내는 키워드 뒤의 값을 뽑으세요.
이름 해석 순서 기록
/root/lfcs-net/nsswitch.txt 에 hosts=<'/etc/nsswitch.conf' 의 hosts 행 값들> 한 줄을 적으세요. 값 사이는 공백 하나로 구분합니다.
hosts 로 시작하는 행의 값들을 공백 하나로 구분해 그대로 옮깁니다. 이 나열 순서가 곧 질의 순서입니다.
방화벽 규칙 설계 문서
/root/lfcs-net/firewall-plan.txt 에 규칙 다섯 줄을 <동작> <프로토콜> <포트> <출발지> 형식으로 아래 순서 그대로 적으세요.
규칙은 위에서부터 평가됩니다. 관리 접속 포트를 먼저 열고 기본 차단은 맨 끝에 두어야 원격에서 자기 자신을 잠그지 않습니다.