네트워크 공부 & 실습/네트워크 실습

[Network] ip link 로 네트워크 인터페이스 상태 확인하기

객체사냥꾼 2025. 4. 15. 14:24

 

네트워크 인터페이스의 목록이나, 상태를 보기위해 ( 네트워크 인터페이스에 할당된 ip 등) 리눅스 환경에서 주로 ifconfig 명령어를 사용해왔다. 하지만 ifconfig 보다 ip 명령어가 리눅스 네트워크 관리의 표준 이라는 소리를 주워(?) 듣고서는, ip 명령어를 익히기 위해 주제를 선정하였다.
ip 명령어는 ip link, ip route, ip neigh 등, 인터페이스, 주로, 라우팅, ARP 까지 모두 커버 가능한 명령어이며, 최신 커널 기능( 네임스페이스, 고급 라우팅 정책) 도 지원한다고 한다.

 


1. ip link 명령어

 

컴퓨터로 인터넷을 사용하다가, 갑자기 인터넷 연결이 불안정 하거나, 되지 않을때 가장 먼저 의심해 봐야 하는 건 "컴퓨터의 네트워크 인터페이스가 제대로 동작 중 인가" 이다. 인터페이스의 연결이 끊기거나, 인터페이스가 Down 상태거나, 가상 인터페이스로 착각하는 상황이 발생하면, 인터넷을 포함한 네트워크 사용에 문제가 발생할 수 있다. 

 

2. 명령어의 사용

 

2-1. 전체 인터페이스 목록 보기

ip link show

 

 

2-2. 특정 인터페이스만 보기

ip link show 인터페이스명

 

 

 

3. 명령어 실습해보기

 

3-1. 전체 인터페이스 목록 보기

 

내 컴퓨터에는 3개의 네트워크 인터페이스가 존재하는 것을 확인할 수 있다.( lo : 내부 통신용 인터페이스, eno1 : 유선 LAN 카드, docker0 : 도커가 자동으로 생성한 가상 네트워크 인터페이스 )

 

각각의 인터페이스 상태를 요약 해 보자면

- 1 : lo

  • 1: lo → 인터페이스 번호 1번, 이름은 lo (loopback)
  • <LOOPBACK,UP,LOWER_UP>:
    • LOOPBACK: 자기 자신과 통신할 때 사용하는 내부 인터페이스 (127.0.0.1)
    • UP: 인터페이스가 활성화 상태
    • LOWER_UP: 물리적으로도 활성화 (가상 장비지만 논리적 상태 OK)
  • mtu 65536: 최대 전송 단위가 65536바이트 (루프백이라 큼)
  • qdisc noqueue: 큐잉 디스크립터가 없음 (패킷을 큐에 담지 않음)
  • state UNKNOWN: 루프백은 물리적 연결이 없기 때문에 상태는 특별히 없음

→ 요약: 내부 통신용 루프백 인터페이스, 정상 작동 중

 

- 2. eno1

  • eno1: 유선 네트워크 카드 (Ethernet Interface)
  • <...>:
    • BROADCAST: 브로드캐스트(전체 전달) 가능
    • MULTICAST: 멀티캐스트도 가능
    • UP: 인터페이스 활성화
    • LOWER_UP: 물리적으로 연결된 상태 (즉, 랜선 꽂혀 있음!)
  • mtu 1500: 일반적인 이더넷 MTU
  • qdisc fq_codel: Fair Queueing 큐 스케줄러 사용 중 (지연 제어)
  • state UP: 논리적으로도 연결 OK
  • altname enp0s31f6: 같은 인터페이스의 다른 이름 (시스템에 따라 다르게 보일 수 있음)

→ 요약: 실제 랜선 꽂힌 상태의 활성화된 유선 인터페이스

 

- 3. docekr0

  • docker0: Docker가 자동으로 생성한 브리지 네트워크
  • <NO-CARRIER,...>:
    • NO-CARRIER: 물리적 연결 없음 (당연함, 가상이니까)
    • BROADCAST, MULTICAST, UP: 기본 네트워크 기능은 됨
  • state DOWN: 현재 사용 중인 컨테이너가 없기 때문에 꺼져 있음
  • link/ether: MAC 주소 있음 (가상 MAC)

→ 요약: 도커 컨테이너가 없어서 사용 중지 상태인 가상 인터페이스

 

 

3-2. 인터페이스 관리하기

eno1 인터페이스에 인터넷이 연결된 상태에서 실습

 

 

- 네트워크 인터페이스 끄기

sudo ip link set eno1 down

 

 

네트워크 연결이 해제되는 것을 확인할 수 있었다.

 

 

 

- 네트워크 인터페이스 켜기

sudo ip link set eno1 up

 

 

- MTU 변경 ( maximun transfer unit 이였나..? )
기본이 1500으로 셋팅되어 있는데, 1400 으로 변경이 되나 확만 한 후 다시 1500으로 변경하자.

ip link set dev eth0 mtu 1400

 

 


3-3.  IP 주소 설정 및 삭제

 

ip addr add 192.168.0.100/24 dev eth1  # IP 할당
ip addr del 192.168.0.100/24 dev eth1   # IP 제거
ip addr show                            # 모든 IP 보기

 

ip addr show 명령어는 ifconfig 명령어를 입력했을 때와 매우 유사한 화면이 반환된다.
ip 를 할당하는 명령어는 언제 사용되고, 어떤 영향이 생길지는 모르겠지만 일단 할당하고 제거해본다.

 

 

그냥 명령어를 입력했더니 RTNETLINK answers : Operation not permitted 라고 해서 sudo 를 먹여줬다.
그 결과로 192.168.0.100 이라는 ip 가 하나의 네트워크 인터페이스에 추가로 할당되는 것을 확인할 수 있었다. 이렇게 하나의 인터페이스에 두개의 아이피가 할당되면 어떻게 되나 공부를 해봤더니, 하나의 물리적 네트워크 인터페이스에 여러개의 ip 주소를 할당하는 것을 IP aliasing 이라고 한다고 한다.

 

-- 두 개 이상의 IP를 설정(IP aliasing)하면 할 수 있는 것


-1. 여러 서비스 분리 운영 가능

  • 웹 서버, FTP, DB 같은 여러 서비스가 있을 때, 각각 다른 IP로 바인딩해서 관리가 가능하다.
nginx: 192.168.0.27:80
apache: 192.168.0.100:8080

 

-2. 다른 장비에서 목적에 따라 다른 IP로 접속 가능

  • 사내망에서 192.168.0.27은 일반 사용자용, 192.168.0.100은 관리자용으로 구분하여 관리할 수 있다.

-3. 테스트 환경용 가상 IP 구성

  • 하나의 장비에서 다중 가상 서버처럼 테스트할 수 있음 (예: 서버 클러스터 시뮬레이션, 포트포워딩 테스트 등)

4. 라우팅 또는 NAT 연동 실습

  • VPN 터널링, 포트포워딩, SNAT/DNAT 설정 실습 시 다중 IP가 유리함

-- 주의해야 할 점

 

- 1. IP 충돌 위험

  • 만약 192.168.0.100을 다른 기기에서도 사용하고 있다면 충돌 발생 가능
  • 특히 DHCP 서버가 100번을 임의로 할당하지 않도록 조심해야 한다.

- 2. 출발 IP 주소가 예측과 다를 수 있음

  • 내가 요청을 보낼 때, 어떤 IP로 나가는지는 리눅스의 라우팅 정책에 따라 자동 결정됨
  • 수신 응답도 다르게 돌아올 수 있어서, 방화벽 설정 등에서 혼란 생길 수 있음

- 3. 서비스 충돌

  • 두 개의 IP에서 같은 포트로 서비스가 바인딩될 경우, 충돌 가능성 있음(ex: 두 웹 서버가 동시에 80 포트를 쓰려고 할 때)

 

 

3-4. 라우팅 테이블 설정 및 보기

 

ip route show                             # 라우팅 테이블 보기
ip route add default via 192.168.0.1      # 기본 게이트웨이 설정
ip route add 10.0.0.0/24 via 192.168.0.254 dev eth0  # 특정 대역에 대한 경로 추가
ip route del default                      # 기본 경로 삭제

 

 

라우팅 테이블의 경우, VPN 을 구성하면서 게이트웨이 주소를 변경해본 적이 있는데, 게이트웨이를 올바르게 설정하지 않으면 패킷이 출구(?)를 못찾는 상황이 발생해서 데이터 송수신이 되지 않는다. 따라서 이상이 있을 경우에만 확인하여 제대로 게이트웨이와 경로에 대한 수정을 하고, 이상이 없을 시에는 괜히 건드려서 복잡한 일을 만들지 않기로 한다.

 

 

3-5. ARP 테이블 관리

ip neigh show                             # ARP 테이블 보기
ip neigh add 192.168.0.10 lladdr aa:bb:cc:dd:ee:ff dev eth0
ip neigh del 192.168.0.10 dev eth0

 

ARP 테이블을 수동으로 등록할 수 있다. -> ARP 요청 - 응답 과정 없이 통신이 바로 가능하고, 내가 지정한 MAC 으로 강제로 트래픽을 보낼 수 있다.
하지만 수동으로 추가한 ARP 는 재부팅 시 사라지므로, 영구적으로 유지하기 위해선 /etc/ethers 나 스크립트에 포함해야 한다.

 

 

3-6. 가상 인터페이스 관리

ip link add link eth0 name eth0.100 type vlan id 100   # VLAN 인터페이스 추가
ip link add dummy0 type dummy                          # 더미 인터페이스 생성
ip link delete dummy0                                  # 인터페이스 제거

 

내 설정에 있는 docker 인터페이스와 같이, 가상의 네트워크 인터페이스를 추가하고 삭제할 수 있다.

 

 

 

4. 어떨 때 명령어를 사용할 수 있을까?

  • 인터넷 연결이 안 될 때 → 케이블이 빠진 게 아니라면, 인터페이스가 DOWN 상태일 수 있다.
  • 가상 인터페이스가 실제 연결로 착각될 때 → ip link로 실제로 LOWER_UP인 포트만 확인 가능
  • 무선과 유선을 동시에 쓸 때 충돌 분석 → 어떤 인터페이스가 우선되고 있는지 확인.



5. 마무리


ip link는 리눅스에서 네트워크 인터페이스 상태를 가장 빠르게 확인할 수 있는 명령어다. 포트가 올라와(실행) 있지 않다면 어떤 라우팅이나 방화벽 설정도 무의미하다. 실무에선 항상 연결 문제를 겪을 때 ip link부터 확인하는 습관이 중요하다.