インターフェースとアドレスを読み、サブネットを切る
한국어 원문으로 표시합니다.
이 실습은 VM 에서 돕니다
우분투 24.04 VM 한 대입니다. root 이고 커널 권한이 있어서 인터페이스를 만들고 주소를 붙일 수 있습니다. 처음 뜨는 데 1~2분 걸립니다(패키지를 깔기 때문입니다).
목표
내 컴퓨터가 어떤 인터페이스로 어떤 주소를 갖고 어디로 나가는지 읽고, 서브넷을 계산하고, 인터페이스를 직접 만들어 주소를 붙입니다.
왜 중요한가
"같은 서브넷인가" 는 네트워크에서 가장 먼저 갈리는 질문입니다. 같으면 ARP 로 직접 부르고, 다르면 게이트웨이에 맡깁니다. 그래서 마스크를 하나 틀리면 옆 자리 컴퓨터가 지구 반대편이 되고, 게이트웨이 주소를 다른 대역에 적으면 "Network is unreachable" 이 납니다. 이 계산은 방화벽 규칙·쿠버네티스 파드 대역·VPC 설계의 바닥이라, 여기서 손에 익혀 두면 뒤의 모든 실습이 쉬워집니다.
단계
ip -br link결과를/root/ip/links.txt에 저장하세요.lo와 기본 경로가 나가는 인터페이스(이 VM 은enp1s0)가 UP 으로 보여야 합니다.- 기본 경로 인터페이스의 IPv4 주소를 프리픽스와 함께
/root/ip/addr.txt에 한 줄로 저장하세요(예:10.0.2.2/24꼴). 172.16.37.200/20을 계산해/root/ip/calc.txt에network=·broadcast=·first=·last=·hosts=다섯 줄로 저장하세요.10.42.0.0/24를/26넷으로 나눠/root/ip/split.txt에 한 줄에 하나씩네트워크/26 첫호스트 마지막호스트로 적으세요.- 더미 인터페이스
lab0을 만들어192.0.2.10/28을 붙이고 UP 하세요. lab0에 두 번째 주소192.0.2.20/28을 더하고ip -br -4 addr show lab0결과를/root/ip/lab0.txt에 저장하세요.- 다섯 쌍이 같은 서브넷인지 판정해
/root/ip/pairs.txt에주소/프리픽스 상대주소 same|different로 적으세요. 쌍은10.0.0.5/24 10.0.0.200,10.0.1.5/24 10.0.0.200,192.168.1.77/25 192.168.1.130,172.16.5.9/12 172.31.0.1,172.16.5.9/16 172.31.0.1입니다. /root/ip/report.md에uplink=·address=·gateway=세 줄과 함께 게이트웨이가 왜 반드시 같은 서브넷에 있어야 하는지를 적으세요.
참고
ip -br은 한 줄 요약,ip -j는 JSON 입니다.ip -j addr | jq로 값을 뽑을 수 있습니다.ipcalc 172.16.37.200/20이 네트워크·브로드캐스트·호스트 수를 계산해 줍니다.python3 -c 'import ipaddress'로 검산할 수 있습니다.- 더미 인터페이스는
ip link add lab0 type dummy로 만듭니다. 케이블이 없어도 주소를 붙일 수 있어 서비스 주소를 두는 데 씁니다. - 흔한 실수:
/12를/16으로 읽는 것. 172.16.0.0/12 는 172.16 부터 172.31 까지입니다.
인터페이스 목록
ip -br link 결과를 /root/ip/links.txt 에 저장하세요. lo 와 기본 경로가 나가는 인터페이스가 UP 으로 보여야 합니다.
mkdir -p /root/ip 먼저. -br 은 brief 로, 인터페이스마다 이름·상태·MAC 한 줄입니다. 기본 경로 인터페이스는 ip route show default 의 dev 뒤에 있습니다.
내 주소와 프리픽스
기본 경로 인터페이스의 IPv4 주소를 프리픽스와 함께 /root/ip/addr.txt 에 한 줄로 저장하세요.
ip -br -4 addr show <인터페이스> 의 세 번째 열이 주소/프리픽스 입니다. JSON 이 편하면 ip -j addr show <인터페이스> | jq 로 .addr_info[].local 과 .prefixlen 을 뽑으세요.
서브넷 계산
172.16.37.200/20 을 계산해 /root/ip/calc.txt 에 network=·broadcast=·first=·last=·hosts= 다섯 줄로 저장하세요.
ipcalc 172.16.37.200/20 이 전부 계산해 줍니다. /20 은 세 번째 옥텟의 앞 4비트까지가 네트워크라, 37 은 32~47 블록 안에 있습니다. hosts 는 전체에서 네트워크·브로드캐스트 둘을 뺀 수입니다.
서브넷 나누기
10.42.0.0/24 를 /26 넷으로 나눠 /root/ip/split.txt 에 한 줄에 하나씩 네트워크/26 첫호스트 마지막호스트 로 적으세요.
/24 에서 /26 으로 2비트를 빌리면 64개짜리 블록 넷이 됩니다. 블록 경계는 0·64·128·192 입니다. 각 블록의 첫 호스트는 네트워크+1, 마지막은 브로드캐스트-1 입니다.
인터페이스를 만들어 주소 붙이기
더미 인터페이스 lab0 을 만들어 192.0.2.10/28 을 붙이고 UP 하세요.
ip link add lab0 type dummy → ip addr add 192.0.2.10/28 dev lab0 → ip link set lab0 up. 더미는 케이블이 없으니 상태가 UNKNOWN 으로 보여도 플래그에 UP 이 있으면 켜진 것입니다.
한 인터페이스에 주소 둘
lab0 에 두 번째 주소 192.0.2.20/28 을 더하고 ip -br -4 addr show lab0 결과를 /root/ip/lab0.txt 에 저장하세요.
ip addr add 를 한 번 더 하면 됩니다. 인터페이스 하나에 주소는 얼마든지 붙습니다. 저장한 파일에 두 주소가 모두 보여야 합니다.
같은 서브넷인가
다섯 쌍이 같은 서브넷인지 판정해 /root/ip/pairs.txt 에 주소/프리픽스 상대주소 same|different 로 적으세요. 쌍은 10.0.0.5/24 10.0.0.200, 10.0.1.5/24 10.0.0.200, 192.168.1.77/25 192.168.1.130, 172.16.5.9/12 172.31.0.1, 172.16.5.9/16 172.31.0.1 입니다.
판정은 '상대 주소가 내 네트워크 안에 있는가' 입니다. /25 는 128 에서 갈리고, /12 는 172.16~172.31 을 한 덩어리로 봅니다. 파이썬 ipaddress.ip_address(b) in ipaddress.ip_network(a, strict=False) 로 검산하세요.
무엇을 배웠나
/root/ip/report.md 에 uplink=·address=·gateway= 세 줄과 함께 게이트웨이가 왜 반드시 같은 서브넷에 있어야 하는지를 적으세요.
uplink 는 기본 경로 인터페이스 이름, address 는 2단계의 값, gateway 는 ip route show default 의 via 뒤 주소입니다. 설명에는 ARP 가 같은 링크에만 닿는다는 점이 들어가야 합니다.