네트워크

리눅스에서 네트워크 상태를 확인하는 명령어 11가지

Sandra Henry-Stocker | Network World 2021.01.27
리눅스에는 네트워크 설정과 연결을 확인하는 다양한 명령어가 있다. 여기서는 매우 유용한 여러 가지 명령과 각 기능을 살펴보자.
 

ifquery 명령

ifquery는 매우 유용한 명령으로, 간략한 네트워크 인터페이스 목록을 보여준다. 그러나 다음과 같이 루프백 인터페이스만 표시될 수도 있다. 
 
$ ifquery --list
lo

이런 현상은 /etc/network/interfaces 파일에 루프백 인터페이스 이외의 네트워크 인터페이스에 관한 정보가 포함돼 있지 않기 때문이다. 주소 할당에 DHCP가 사용된다고 가정하면 예제의 마지막 두 줄과 같은 코드를 추가해 해결할 수 있다.
 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
 

ifup와 ifdown 명령 

파일에 필요한 데이터가 있다면 ifup과 ifdown 명령을 사용해 필요에 따라 네트워크 연결을 불러오거나 종료할 수 있다. 이 명령에서 “if”는 “만일”을 의미하는 if가 아니라 ifconfig 명령의 경우와 마찬가지로 “interface”를 의미한다는 점만 기억하면 된다. 
 

ifconfig 명령 

반면 ifconfig 명령은 /etc/network/interfaces 파일을 아예 읽지 않으면서도 네트워크 인터페이스에 관한 여러 유용한 정보를 제공한다. 구성 데이터와 함께 패킷 수를 보여주므로 각 인터페이스의 사용량이 얼마나 많은지 확인할 수 있다. 네트워크 인터페이스를 종료하고 재시작하는 데도 ifconfig 명령을 사용할 수 있다. 예를 들면 ifconfig eth0 down이다.
 
$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:1e:4f:c8:43:fc
          inet addr:192.168.0.6  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::b44b:bdb6:2527:6ae9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:60474 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33463 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:43922053 (43.9 MB)  TX bytes:4000460 (4.0 MB)
          Interrupt:21 Memory:fe9e0000-fea00000

이 출력의 RX와 TX 패킷 수는 매우 낮다. 또한 보고된 오류 또는 패킷 충돌도 없다. uptime 명령을 사용하면 알 수 있겠지만 아마 이 시스템은 최근에 재부팅됐을 것이다. 앞의 예제에서 브로드캐스트(Bcast)와 네트워크 마스크(Mask) 주소는 시스템이 클래스 C(Class C) 등급 네트워크에서 작동하며(기본값), 로컬 주소의 범위가 192.168.0.1부터 192.168.0.254까지임을 보여준다. 
 

netstat 명령 

netstat 명령은 라우팅 및 네트워크 연결에 대한 정보를 제공한다. 인수가 없으면 열린 소켓 목록을 출력한다. 거의 모든 항목이 로컬 시스템의 프로세스와 관련된다. 예를 들어 다음 예제를 보면 로컬 시스템(dragonfly)으로 가는 수신 ssh 연결이 2개만 설정됐음을 알 수 있다. 
 
$ netstat | head -4
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0     64 dragonfly:ssh           dragonfly:8812          ESTABLISHED
tcp        0      0 dragonfly:ssh           dragonfly:33505         ESTABLISHED
 

netstat -rn 

netstat에 -m을 사용하면 시스템 라우팅 테이블을 볼 수 있다. 
 
$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

192.168.0.1 주소는 로컬 게이트웨이다(Flags=UG). 위 예제에서 169.254.0.0 항목은 링크-로컬 통신을 사용 중이거나 사용할 계획인 경우에만 필요하다. 해당하지 않는다면 /etc/network/if-up.d/avahi-autoipd 파일에서 관련된 라인을 주석 처리하면 된다.
 
$ tail -12 /etc/network/if-up.d/avahi-autoipd
#if [ -x /bin/ip ]; then
#       # route already present?
#       ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0
#
#       /bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
#       # route already present?
#       /sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0
#
#       /sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
#fi
 

netstat -a 명령 

netstat -a 명령은 모든 네트워크 연결을 보여준다. 수신 대기 연결과 설정된 연결로만 범위를 제한하려면(일반적으로 이것이 더 유용하다) netstat -at 명령을 사용하면 된다.
 
$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 localhost:smtp          *:*                     LISTEN
tcp        0    256 192.168.0.6:ssh         192.168.0.32:53550      ESTABLISHED
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN
tcp6       0      0 ip6-localhost:smtp      [::]:*      
 

host 명령 

host 명령은 원격 시스템의 IP 주소를 조회한다는 면에서는 nslookup과 비슷하지만 시스템의 메일 핸들러도 보여준다. 
 
$ host world.std.com
world.std.com has address 192.74.137.5
world.std.com mail is handled by 10 smtp.theworld.com.
 

nslookup 명령 

nslookup 역시 DNS 조회 서비스를 제공하는 시스템(여기서는 로컬 시스템)에 대한 정보를 제공한다 
 
$ nslookup world.std.com
Server:         127.0.1.1
Address:        127.0.1.1#53
Non-authoritative answer:
Name:   world.std.com
Address: 192.74.137.5
 

dig 명령 

dig 명령은 통신 중인 네임 서버, 쿼리 응답까지 소요되는 시간 등 원격 시스템 연결에 대한 여러 정보를 제공하며 문제 해결에 자주 사용된다. 
 
$ dig world.std.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> world.std.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28679 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;world.std.com.                 IN      A
;; ANSWER SECTION: world.std.com.          78146   IN      A       192.74.137.5
;; Query time: 37 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Mon Oct 09 13:26:46 EDT 2017 ;; MSG SIZE  rcvd: 58
 

nmap 명령 

nmap 명령의 가장 일반적인 용도는 원격 시스템 탐지지만 로컬 시스템이 제공하는 서비스에 대해 보고하는 데도 사용할 수 있다. 다음 예제에서 로그인에 ssh를 사용할 수 있고 smtp가 이메일을 서비스하고 있고 웹사이트가 활성이며 ipp 인쇄 서비스가 실행 중임을 알 수 있다. 
 
$ nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-09 15:01 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 996 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
631/tcp open  ipp
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

리눅스 시스템에는 네트워크 구성과 연결을 점검하기 위한 유용한 명령어가 많다. 대부분 알고 있다고 생각한다면 apropos network 명령을 실행해 보자. 더 많은 명령어를 볼 수 있다. editor@itworld.co.kr
 

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.