Linux IP 주소 관리

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 환경에서 IP 주소를 관리하기 위한 핵심 기술을 배웁니다. 먼저 최신 ip 명령어를 사용하여 시스템의 네트워크 인터페이스를 확인하는 것부터 시작합니다. 그 후, 수동으로 고정 IP 주소를 설정하고 외부 네트워크와의 통신을 위해 기본 게이트웨이를 지정한 다음, ping 유틸리티를 사용하여 연결 상태를 확인합니다.

다음으로, 고정 IP를 해제하고 dhclient 명령어를 사용하여 DHCP 서버로부터 새로운 IP 주소를 자동으로 할당받는 동적 IP 구성 방법을 살펴봅니다. 마지막으로 arptraceroute 명령어를 사용하여 네트워크 구성을 상세히 검사하고 모든 구성 요소가 올바르게 작동하는지 확인합니다.

ip a를 사용한 네트워크 인터페이스 확인

이 단계에서는 Linux 시스템의 네트워크 인터페이스를 확인하는 방법을 배웁니다. IP 주소를 구성하기 전에 먼저 설정하려는 네트워크 인터페이스의 이름을 식별해야 합니다. 유선이든 무선이든 모든 연결은 네트워크 인터페이스를 통해 관리됩니다.

Linux에서 네트워크 인터페이스를 확인하고 조작하는 현대적이고 표준적인 명령어는 ip입니다. a(또는 address) 인수를 사용하여 모든 네트워크 인터페이스와 할당된 IP 주소를 표시해 보겠습니다.

  1. 터미널을 엽니다. 이미 ~/project 디렉토리에 있을 것입니다.

  2. 모든 네트워크 인터페이스와 현재 구성을 나열하려면 다음 명령어를 실행합니다.

    ip a
    

    다음과 유사한 출력이 표시됩니다. 인터페이스 이름(eth0, enp0s5), IP 주소, MAC 주소와 같은 정확한 세부 정보는 실습 환경을 시작할 때마다 달라질 수 있습니다.

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159972sec preferred_lft 1892159972sec
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
        link/ether 02:42:bb:cb:56:62 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
    

출력 이해하기:

  • 1: lo: **루프백 인터페이스(loopback interface)**로, 시스템이 자기 자신과 통신하기 위해 사용하는 가상 인터페이스입니다. 항상 127.0.0.1 IP 주소를 가집니다.
  • 2: eth0: 기본 이더넷(유선) 인터페이스입니다. 인터페이스 이름이 다르거나 enp0s5와 같은 altname(대체 이름)이 표시될 수 있습니다. 우리가 작업할 인터페이스입니다.
  • 3: docker0: Docker 컨테이너 엔진에서 사용하는 docker0와 같은 다른 인터페이스가 보일 수 있습니다. 이 실습에서는 무시해도 됩니다.
  • inet 172.16.50.11/24: 인터페이스에 할당된 IPv4 주소입니다. 표시되는 주소는 다를 수 있습니다. 이 주소를 통해 원격 실습 환경에 연결됩니다.
  • link/ether ...: 인터페이스의 MAC 주소로, 고유한 하드웨어 식별자입니다.

이제 기본 네트워크 인터페이스(eth0)를 식별할 수 있으므로, 이를 구성하는 방법을 배울 준비가 되었습니다.

보조 고정 IP 주소 구성

이 단계에서는 네트워크 인터페이스에 추가적인 고정 IP 주소를 수동으로 할당합니다. 고정 IP는 항상 동일한 주소로 접속해야 하는 서버에 유용합니다.

중요 참고: 원격 실습 세션 중이므로 기존 IP 주소를 제거하거나 네트워크 인터페이스를 다운시키면 안 됩니다. 그렇게 하면 연결이 끊어집니다. 대신 인터페이스에 두 번째 IP 주소를 추가하는 안전한 방법을 사용합니다.

  1. eth0 인터페이스에 /24 서브넷 마스크를 가진 새로운 고정 IP 주소 192.168.1.10을 할당합니다. 인터페이스 이름이 다르다면 해당 이름을 사용하세요.

    sudo ip addr add 192.168.1.10/24 dev eth0
    

    이 명령어는 기존 주소에 영향을 주지 않고 새 주소를 추가합니다. 성공하면 아무런 출력도 나타나지 않습니다.

  2. 마지막으로 새 IP 주소가 할당되었는지 확인합니다. ip a 명령어를 다시 사용하여 eth0 인터페이스를 지정합니다.

    ip a show eth0
    

    이제 eth0 인터페이스에 원래의 동적 IP 주소와 새로운 고정 IP 주소가 모두 나열되어야 합니다.

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159595sec preferred_lft 1892159595sec
        inet 192.168.1.10/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever
    

    두 번째 inet 필드에 192.168.1.10/24가 표시되는 것을 확인할 수 있습니다. 연결을 유지하면서 임시 고정 IP 주소를 성공적으로 추가했습니다.

기본 게이트웨이 설정 및 ping을 통한 연결 확인

이 단계에서는 기본 게이트웨이를 설정하고 네트워크 연결을 테스트합니다. **기본 게이트웨이(default gateway)**는 목적지가 다른 네트워크(예: 인터넷)에 있을 때 시스템이 트래픽을 보내는 라우터입니다.

시스템에는 이미 실습 환경에서 제공하는 기본 게이트웨이가 있습니다. 이를 변경하거나 제거하면 연결이 끊어집니다. 이 명령어를 안전하게 연습하기 위해 더 높은 메트릭(metric) 값을 가진 두 번째 기본 경로를 추가할 것입니다. 메트릭이 높을수록 우선순위가 낮으므로, 시스템은 실제 트래픽에 이 경로를 사용하지 않아 연결이 안전하게 유지됩니다.

  1. 192.168.1.0/24 네트워크에 대한 기본 게이트웨이 경로를 추가합니다. 게이트웨이 IP를 192.168.1.1로 설정하고 metric200으로 지정합니다.

    sudo ip route add default via 192.168.1.1 dev eth0 metric 200
    
    • default: 기본 경로임을 지정합니다.
    • via 192.168.1.1: 게이트웨이 라우터의 IP입니다.
    • dev eth0: eth0 인터페이스를 통해 경로에 접근합니다.
    • metric 200: 기존 경로(메트릭이 더 낮음)보다 우선순위를 낮게 설정합니다.
  2. 라우팅 테이블을 표시하여 경로가 추가되었는지 확인합니다.

    ip route
    

    출력은 복잡하고 다양할 수 있지만, 이제 default로 시작하는 줄이 두 개 포함되어야 합니다. 원래 게이트웨이는 더 낮은 메트릭(예: 100)을 가지고, 새로 추가한 경로는 메트릭 200을 가집니다.

    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    default via 192.168.1.1 dev eth0 metric 200
    172.16.50.0/24 dev eth0 proto kernel scope link src 172.16.50.11 metric 100
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
    ... (다른 경로가 존재할 수 있음)
    
  3. 이제 ping으로 연결을 테스트해 보겠습니다. ping은 호스트에 ICMP "에코 요청"을 보내 도달 가능한지 확인합니다. 방금 구성한 가상 네트워크의 게이트웨이에 핑을 보내봅니다.

    ping -c 3 192.168.1.1
    

    예상 결과: 이 명령어는 실패할 것으로 예상됩니다. 192.168.1.10/24eth0에 추가했기 때문에 시스템은 192.168.1.1이 동일한 로컬 네트워크에 있다고 가정합니다. 직접 도달하려고 시도하지만 해당 주소를 가진 장치가 없으므로 "Destination Host Unreachable" 메시지가 표시됩니다.

    PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
    From 192.168.1.10 icmp_seq=1 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=2 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=3 Destination Host Unreachable
    
    --- 192.168.1.1 ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2039ms
    

    이것이 올바르고 예상된 결과입니다. 기본 경로를 추가하고 테스트를 위해 ping을 사용하는 방법을 배웠습니다.

dhclient를 사용하여 동적 IP 주소로 복구

이 단계에서는 생성한 고정 구성을 제거한 다음, dhclient를 사용하여 DHCP 서버로부터 동적 IP 임대를 갱신합니다.

먼저 isc-dhcp-client 패키지의 일부인 dhclient 도구가 기본적으로 설치되어 있지 않을 수 있습니다. 사용 가능한지 확인해 보겠습니다.

  1. 시스템의 패키지 목록을 업데이트하고 DHCP 클라이언트를 설치합니다.

    sudo apt-get update
    sudo apt-get install -y isc-dhcp-client
    

    이제 연결을 방해하지 않고 이전 단계에서 추가한 고정 IP와 경로를 안전하게 제거합니다.

  2. eth0에서 고정 IP 주소를 삭제합니다.

    sudo ip addr del 192.168.1.10/24 dev eth0
    
  3. 추가했던 고정 기본 경로를 삭제합니다.

    sudo ip route del default via 192.168.1.1 dev eth0
    

    이제 네트워크 구성이 원래 상태로 돌아갔습니다. dhclient를 시연하기 위해 DHCP 서버에 IP 주소 갱신을 요청해 보겠습니다.

  4. 먼저 현재 DHCP 임대를 해제합니다.

    sudo dhclient -r eth0
    
  5. 다음으로 DHCP 서버에 새 임대를 요청합니다.

    sudo dhclient eth0
    

    RTNETLINK answers: File exists라는 메시지가 표시될 수 있습니다. 이는 정상입니다. dhclient가 이미 존재하는 경로를 추가하려고 시도하기 때문에 발생하는 메시지이며, 변경이 필요하지 않으므로 연결은 안정적으로 유지됩니다.

  6. eth0 인터페이스를 다시 확인하여 구성을 검증합니다.

    ip a show eth0
    

    출력에는 실습 환경의 원래 동적 IP 주소(예: 10.x.x.x 또는 172.16.x.x 사설 주소)만 표시되어야 합니다. 고정 IP 192.168.1.10은 사라져야 합니다.

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159460sec preferred_lft 1892159460sec
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever
    

    고정 구성을 성공적으로 정리하고 동적 IP 임대를 갱신했습니다.

arp와 traceroute를 사용한 네트워크 구성 검증

마지막 단계에서는 arptraceroute를 사용하여 네트워크 구성을 검사하는 방법을 배웁니다.

먼저 필요한 도구가 설치되어 있는지 확인합니다. arpnet-tools에 포함되어 있고, traceroute는 별도의 패키지에 있습니다.

  1. net-toolstraceroute를 설치합니다.

    sudo apt-get update
    sudo apt-get install -y net-tools traceroute
    

arp를 사용하여 ARP 캐시 보기

**ARP(Address Resolution Protocol)**는 로컬 네트워크에서 IP 주소를 물리적 MAC 주소로 매핑합니다. 결과는 ARP 캐시에 저장됩니다.

  1. ARP 캐시를 채우려면 먼저 라우팅 테이블에서 기본 게이트웨이의 IP를 찾습니다.

    ip route | grep default
    

    출력에 게이트웨이 IP가 표시됩니다. IP 주소는 다를 수 있습니다.

    default via 172.16.50.253 dev eth0
    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    
  2. 이제 해당 게이트웨이 IP(예: 위 예시의 172.16.50.253)에 핑을 보내 트래픽을 생성합니다.

    ping -c 1 <your-gateway-ip>
    
  3. arp -a를 사용하여 ARP 캐시를 표시합니다.

    arp -a
    

    게이트웨이의 IP와 MAC 주소가 표시됩니다. 앞서 핑을 시도했던 192.168.1.1 주소에 대해 <incomplete> 항목이 보일 수도 있는데, 이는 정상입니다.

    ? (192.168.1.1) at <incomplete> on eth0
    _gateway (172.16.50.253) at ee:ff:ff:ff:ff:ff [ether] on eth0
    

    이는 시스템이 게이트웨이의 IP를 MAC 주소로 성공적으로 확인했음을 보여줍니다.

traceroute를 사용하여 네트워크 경로 추적

traceroute 명령어는 패킷이 목적지에 도달하기 위해 거치는 라우터("홉")의 순서를 보여줍니다.

  1. google.com과 같은 공용 도메인으로 가는 경로를 추적해 봅니다.

    traceroute google.com
    

    명령어가 경로를 출력합니다. 참고: 많은 클라우드 환경에서 traceroute가 보여주는 첫 번째 홉은 라우팅 테이블의 기본 게이트웨이와 다른 내부 IP 주소일 수 있습니다. 이는 정상적인 동작입니다.

    traceroute to google.com (142.250.189.174), 30 hops max, 60 byte packets
     1  10.220.9.2 (10.220.9.2)  0.345 ms  ...
     2  11.73.5.1 (11.73.5.1)  1.978 ms ...
     3  ...
     8  sfo03s24-in-f14.1e100.net (142.250.189.174)  3.001 ms ...
    
    • 첫 번째 홉은 실습 제공자의 네트워크 내부 라우터입니다.
    • 이후 홉들은 인터넷을 거쳐 최종 목적지까지의 경로를 보여줍니다.
    • 경로상의 라우터가 traceroute 프로브에 응답하지 않으면 별표(* * *)가 나타날 수 있는데, 이는 방화벽이나 기타 네트워크 정책 때문일 수 있습니다.

축하합니다! 이제 Linux 시스템에서 IP 주소를 확인하고, 고정 및 동적으로 구성하는 방법과 ping, arp, traceroute와 같은 주요 도구를 사용하여 네트워크를 검증하고 문제를 해결하는 방법을 배웠습니다.

요약

이 실습에서는 Linux 환경에서 IP 주소를 관리하기 위한 기본 기술을 배웠습니다. ip a 명령어를 사용하여 네트워크 인터페이스와 현재 구성을 확인하고 eth0와 같은 대상 인터페이스를 식별하는 것부터 시작했습니다. 그 후 ip addr add를 사용하여 고정 IP 주소와 서브넷 마스크를 수동으로 할당하고, ip route add를 사용하여 외부 네트워크와의 통신을 위한 기본 게이트웨이를 설정하는 연습을 했습니다. 수동 구성과 대조적으로 dhclient 명령어를 사용하여 DHCP 서버로부터 IP 주소, 서브넷 마스크, 게이트웨이를 자동으로 할당받는 방법도 배웠습니다.

또한 필수적인 네트워크 검증 및 문제 해결 도구들을 살펴보았습니다. ping 명령어를 사용하여 기본 게이트웨이 및 외부 호스트에 대한 기본적인 네트워크 연결을 확인했습니다. 네트워크 계층에 대한 더 깊은 이해를 위해 arp 명령어로 ARP 캐시를 검사하여 IP-MAC 주소 매핑을 확인했습니다. 마지막으로 traceroute를 사용하여 목적지까지의 네트워크 경로를 홉 단위로 추적하고 라우팅 구성을 검증했습니다.