네트워크 살펴보기 : ifconfig, route, ping, netstat
리눅스의 네트워크 서비스에 대한 설명은 추후에 다루기로하고 여기서는 네트워크 설정 변경, 점검 하는 명령어와 도구들을 살펴보겠습니다.
네트워크 인터페이스(유선, 무선, 루프백...)를 관리하는 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주소를 차례로 보여줌
네트워크 정보 확인 : netstat
netstat는 리눅스 네트워크 상태를 종합적으로 보여준다.
netstat
netstat -i // 네트워크 인터페이스를 통해 주고 받은 패킷에 대한 정보
netstat -nr // 라우팅 테이블 정보를 확인할 수 있다.
netstat -s // 프로토콜에 따른 패킷 통계 확인. 어떤 프로토콜이 오작동하는지, 쓸모 없는지 점검
netstat -atp // 열려 있는 포트, 데몬, 해당 포트 사용 중인 프로그램에 대한 정보. 많이 유용함