🐧 Linux, shell, web server/🥁 Ubuntu

네트워크 살펴보기 : ifconfig, route, ping, netstat

DarrenKwonDev 2020. 12. 27. 21:56

리눅스의 네트워크 서비스에 대한 설명은 추후에 다루기로하고 여기서는 네트워크 설정 변경, 점검 하는 명령어와 도구들을 살펴보겠습니다.

 

네트워크 인터페이스(유선, 무선, 루프백...)를 관리하는 ifconfig

라우팅 테이블을 관리하는 route

연결 상태를 진단하기 위한 ping

네트워크 상태를 종합적으로 보여주는 netstat

 

Network inteface 확인, 수정 : ifconfig

 

Network inteface

 

ifconfig는 시스템에 설치된 네트워크 인터페이스 정보를 확인하거나 수정하는 명령이다.

if가 inteface의 약자라는 것은 짐작할 수 있을 것이다.

아무 옵션 없이 입력하면 현재 설정된 네트워크 인터페이스를 확인할 수 있다.

 

네트워크 인터페이스는 아래와 같이 유선, 루프백, 무선이 있습니다.

 

eth0 : 랜카드입니다. 유선 네트워크 인터페이스죠. 여기서는 eth0라는 이름이 아니라 enp0s25로 되어 있습니다.

lo : loopback 인터페이스. 자기 자신과 통신하는 데 사용하는 가상 장치

wlan0 : 무선 네트워크 인터페이스입니다. 여기서는 wlp4s0 로 되어 있네요.

 

IP 주소는 호스트에 하나씩 부여되는 것이 아니라 네트워크 인터페이스에 할당됩니다. 따라서 위의 각 네트워크 인터페이스마다 다른 IP주소를 할당할 수 있습니다.

 

 

Network inteface 필드

 

 

HWaddr : 네트워크 인터페이스 하드웨어 주소 (MAC 주소)

inet addr : 네트워크 인터페이스에 할당된 IP주소

Bcast : 브로드캐스트 주소

Mask : 넷마스크

 

mtu : maxium transfer unit 네트워크 최대 전송 단위. 

Rx packets : 받은 패킷 정보

Tx packets : 보낸 패킷 정보

collisions : 충돌된 패킷 수

interrupt : 네트워크 인터페이스가 사용하는 인터럽트 번호

 

 

네트워크 인터페이스 일시 중지, 재작동

 

또, ifconfig를 활용하여 가볍게 특정 네트워크 인터페이스를 중지, 재작동 시킬 수 있습니다.

* ifconfig나 route로 변경한 정보들은 시스템을 재부팅하면 모두 원래대로 돌아갑니다. 영구히 변경하려면 설정 파일 자체를 수정해야 합니다.

sudo ifconfig enp0s25 down // 작동 중지
sudo ifconfig enp0s25 up // 재작동
sudo ifconfig enp0s25 111.111.111.111 up // 재작동하되 111.111.111.111로 ip변경

 

 

라우팅 테이블 다루기 : Route

 

네트워크를 통해 목적지로 패킷이 전송될 경로를 지정해주는 것을 라우팅이라 한다.

리눅스에서는 라우팅 테이블을 통해 패킷을 어떤 네트워크 인터페이스를 거쳐 목적지로 보낼 것인지 결정한다.

 

라우팅 테이블을 확인해보고 싶다면

route

 

 

라우팅 테이블이 패킷을 전달하는 원리

 

리눅스 서버의 ip가 111.111.1.111 이고 같은 네트워크 안에 있는 호스트 222.222.2.222 에 패킷을 전달한다고 가정해봅시다.

리눅스 서버는 라우팅 테이블을 통해 패킷을 어디로 보낼지 결정합니다.

라우팅 테이블의 맨 처음 행의 Genmask 값을 읽어 패킷의 목적지 주소인 222.222.2.222 와 AND연산을 합니다.

 

예를 들어 Genmask값이 255.255.255.0 이라면 AND 연산은 다음과 같이 이루어질 것이다.

Genmask  : 11111111.11111111.11111111.00000000

목적지 주소 : 11011110.11011110.00000010.11011110

AND 연산    : 11011... (생략)

 

이 AND 연산의 결과값이 그 행에 있는 Destination값과 비교하여 같은 값이면 그 행의 Iface가 가리키는 네트워크 인터페이스로 보냅니다. 같은 값이 아니라면 다음 행의 Genmask값을 읽어 AND 연산은 반복합니다. 만약 어느 행도 일치하지 않늗나면 패킷을 보내지 않습니다.

 

 

라우팅 테이블의 필드들

 

출력된 라우팅 테이블을 실제로 보고 각 필드를 살펴봅시다.

Destination : 목적지

Gateway : 외부 네트워크와 연결하기 위한 게이트웨이 주소

Genmask : 목적지 네트워크의 넷마스크 주소. 255.255.255.255 로 되어 있으면 목적지 호스트의 주소, 0.0.0.0이면 기본 게이트웨이 주소를 의미함.

Flgs : 해당 경로에 대한 정보를 알려주는 기호. U(up)는 이 경로가 살아 있음을, H(host)는 목적지가 호스트 주소라는 것을, G(gateway)는 게이트웨이를 향하는 경로라는 것을 의미함.

Metric : 목적지 네트워크까지의 거리

Ref : 경로를 참조한 횟수. reference

Use : 경로를 탐색한 횟수

Iface : 패킷이 오가는 데 사용할 네트워크 인터페이스

 

 

라우팅 테이블에 기본 네트워크 추가하기

* 앞서도 언급했지만 ifconfig, route 로 수정한 네트워크 설정들은 재부팅하면 초기화됩니다.

sudo route add default gw 192.168.0.1

 

연결 상태 진단 도구 ping

 

ping은 네트워크 연결 상태를 점검하는 명령어로, 목적지에 ICMP 패킷을 보내고 돌아오는지 확인하여 연결 상태를 진단합니다.

ping [옵션] 목적지 주소

목적지 주소는 도메인, ip주소 둘 다 사용 가능합니다.

 

ping -i 3 www.google.com // 3초 간격으로 패킷을 보냄

ping -t 5 google.com // ttl을 5초로 설정

ping -R google.com // 패킷이 목적지까지 도달하는데 거치는 호스트의 IP주소를 차례로 보여줌

 

darrengwon.tistory.com/856

 

ping 으로 네트워크 점검하기

ping 최근 인터넷이 자주 끊겨서 ping에 대해 알아보고, 네트워크를 점검해보기로 했다. 먼저, ping은 Packet Internet Grouper의 약자로, 일정한 크기의 패킷(32byte)를 보내 상대 서버가 응답하는 지를 점검

darrengwon.tistory.com

 

네트워크 정보 확인 : netstat

 

netstat는 리눅스 네트워크 상태를 종합적으로 보여준다.

netstat

netstat -i // 네트워크 인터페이스를 통해 주고 받은 패킷에 대한 정보

netstat -nr // 라우팅 테이블 정보를 확인할 수 있다.

netstat -s // 프로토콜에 따른 패킷 통계 확인. 어떤 프로토콜이 오작동하는지, 쓸모 없는지 점검

netstat -atp // 열려 있는 포트, 데몬, 해당 포트 사용 중인 프로그램에 대한 정보. 많이 유용함