netstat 명령으로 네트워크 상태 모니터링
netstat 명령은 네트워크 상태 및 프로토콜 통계를 표시하는 화면을 생성합니다. TCP, SCTP 및 UDP 끝점을 표 형식으로 표시할 수 있습니다. 경로 설정표 정보 및 인터페이스 정보를 표시할 수도 있습니다.
netstat 명령은 선택한 명령줄 옵션에 따라 다양한 유형의 네트워크 데이터를 표시합니다. 이러한 표시는 시스템 관리에 가장 유용합니다. netstat의 기본 구문은 다음과 같습니다.
netstat [-m] [-n] [-s] [-i | -r] [-f address-family]
이 절에서는 가장 일반적으로 사용되는 netstat 명령의 옵션에 대해 설명합니다. 모든 netstat 옵션에 대한 자세한 설명은 netstat(1M) 매뉴얼 페이지를 참조하십시오.
프로토콜별 통계를 표시하는 방법
netstat -s 옵션은 UDP, TCP, SCTP, ICMP 및 IP 프로토콜에 대한 프로토콜 통계를 표시합니다.
주 - Oracle Solaris 사용자 계정을 사용하여 netstat 명령의 출력을 표시할 수 있습니다.
- 프로토콜 상태를 표시합니다.
$ netstat -s
예 5-1 네트워크 프로토콜 통계
다음 예제는 netstat -s 명령의 출력을 보여줍니다. 출력의 일부분은 잘렸습니다. 출력은 프로토콜에 문제가 있는 영역을 나타낼 수 있습니다. 예를 들어 ICMPv4 및 ICMPv6의 통계 정보는 ICMP 프로토콜에서 오류가 발견된 위치를 나타낼 수 있습니다.
RAWIP
rawipInDatagrams = 4701 rawipInErrors = 0
rawipInCksumErrs = 0 rawipOutDatagrams = 4
rawipOutErrors = 0
UDP
udpInDatagrams = 10091 udpInErrors = 0
udpOutDatagrams = 15772 udpOutErrors = 0
TCP tcpRtoAlgorithm = 4 tcpRtoMin = 400
tcpRtoMax = 60000 tcpMaxConn = -1
.
.
tcpListenDrop = 0 tcpListenDropQ0 = 0
tcpHalfOpenDrop = 0 tcpOutSackRetrans = 0
IPv4 ipForwarding = 2 ipDefaultTTL = 255
ipInReceives =300182 ipInHdrErrors = 0
ipInAddrErrors = 0 ipInCksumErrs = 0
.
.
ipsecInFailed = 0 ipInIPv6 = 0
ipOutIPv6 = 3 ipOutSwitchIPv6 = 0
IPv6 ipv6Forwarding = 2 ipv6DefaultHopLimit = 255
ipv6InReceives = 13986 ipv6InHdrErrors = 0
ipv6InTooBigErrors = 0 ipv6InNoRoutes = 0
.
.
rawipInOverflows = 0 ipv6InIPv4 = 0
ipv6OutIPv4 = 0 ipv6OutSwitchIPv4 = 0
ICMPv4 icmpInMsgs = 43593 icmpInErrors = 0
icmpInCksumErrs = 0 icmpInUnknowns = 0
.
.
icmpInOverflows = 0
ICMPv6 icmp6InMsgs = 13612 icmp6InErrors = 0
icmp6InDestUnreachs = 0 icmp6InAdminProhibs = 0
.
.
icmp6OutGroupQueries= 0 icmp6OutGroupResps = 2
icmp6OutGroupReds = 0
IGMP:
12287 messages received
0 messages received with too few bytes
0 messages received with bad checksum
12287 membership queries received
SCTP sctpRtoAlgorithm = vanj
sctpRtoMin = 1000
sctpRtoMax = 60000
sctpRtoInitial = 3000
sctpTimHearBeatProbe = 2
sctpTimHearBeatDrop = 0
sctpListenDrop = 0
sctpInClosed = 0
전송 프로토콜의 상태를 표시하는 방법
netstat 명령을 통해 전송 프로토콜의 상태를 표시할 수 있습니다. 자세한 내용은 netstat(1M) 매뉴얼 페이지를 참조하십시오.
- 시스템에서 TCP 및 SCTP 전송 프로토콜의 상태를 표시합니다.
$ netstat
- 시스템에서 특정 전송 프로토콜의 상태를 표시합니다.
$ netstat -P transport-protocol
transport-protocol 변수의 값은 tcp, sctp 또는 udp입니다.
예 5-2 TCP 및 SCTP 전송 프로토콜의 상태 표시
이 예는 기본 netstat 명령의 출력을 보여줍니다. IPv4 전용 정보가 표시됩니다.
$ netstat
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
----------------- -------------------- ----- ------ ----- ------ -------
lhost-1.login abc.def.local.Sun.COM.980 49640 0 49640 0 ESTABLISHED
lhost-1.login ghi.jkl.local.Sun.COM.1020 49640 1 49640 0 ESTABLISHED
remhost-1.1014 mno.pqr.remote.Sun.COM.nfsd 49640 0 49640 0 TIME_WAIT
SCTP:
Local Address Remote Address Swind Send-Q Rwind Recv-Q StrsI/O State
---------------- -------------- ----- ------ ------ ------ ------ -------
*.echo 0.0.0.0 0 0 102400 0 128/1 LISTEN
*.discard 0.0.0.0 0 0 102400 0 128/1 LISTEN
*.9001 0.0.0.0 0 0 102400 0 128/1 LISTEN
예 5-3 특정 전송 프로토콜의 상태 표시
이 예는 netstat 명령의 -P 옵션을 지정한 경우에 표시되는 결과를 보여줍니다.
$ netstat -P tcp
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
----------------- -------------------- ----- ------ ----- ------ -------
lhost-1.login abc.def.local.Sun.COM.980 49640 0 49640 0 ESTABLISHED
lhost.login ghi.jkl.local.Sun.COM.1020 49640 1 49640 0 ESTABLISHED
remhost.1014 mno.pqr.remote.Sun.COM.nfsd 49640 0 49640 0 TIME_WAIT
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
---------------- ---------------------- ------ ----- ------ ----------- -----
localhost.38983 localhost.32777 49152 0 49152 0 ESTABLISHED
localhost.32777 localhost.38983 49152 0 49152 0 ESTABLISHED
localhost.38986 localhost.38980 49152 0 49152 0 ESTABLISHED
네트워크 인터페이스 상태를 표시하는 방법
netstat 명령의 i 옵션은 로컬 시스템에 구성된 네트워크 인터페이스의 상태를 보여줍니다. 이 옵션을 사용하면 시스템이 각 네트워크에서 전송하고 수신하는 패킷 수를 확인할 수 있습니다.
- 네트워크 인터페이스의 상태를 표시합니다.
$ netstat -i
예 5-4 네트워크 인터페이스 상태 표시
다음 예제는 호스트 인터페이스를 통한 IPv4 및 IPv6 패킷 흐름의 상태를 보여줍니다.
예를 들어 서버에 대해 표시되는 입력 패킷 수(Ipkts)는 클라이언트를 부트하려고 할 때마다 늘어나지만, 출력 패킷 수(Opkts)는 그대로 유지됩니다. 이 출력에는 서버가 클라이언트에서 보내는 부트 요청 패킷을 파악하고 있는 것으로 표시됩니다. 그러나 서버가 이에 응답하는 방법을 알지 못합니다. 이러한 혼동은 hosts 또는 ethers 데이터베이스의 주소가 잘못되었기 때문일 수 있습니다.
그러나 시간이 경과해도 입력 패킷 수가 일정할 경우 시스템에서는 패킷을 전혀 알지 못합니다. 이 출력은 다른 유형의 오류(하드웨어 문제)를 보여줍니다.
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
lo0 8232 loopback localhost 142 0 142 0 0 0
net0 1500 host58 host58 1106302 0 52419 0 0 0
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis
lo0 8252 localhost localhost 142 0 142 0 0
net0 1500 fe80::a00:20ff:feb9:4c54/10 fe80::a00:20ff:feb9:4c54 1106305 0 52422 0 0
소켓 상태를 표시하는 방법
netstat 명령의 -a 옵션을 사용하여 로컬 호스트에 있는 소켓의 상태를 확인할 수 있습니다.
예 5-5 모든 소켓 및 경로 설정표 항목 표시
netstat -a 명령의 출력은 광범위한 통계를 표시합니다. 다음 예는 일반적인 netstat -a 출력의 일부분을 보여줍니다.
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- -------
*.bootpc Idle
host85.bootpc Idle
*.* Unbound
*.* Unbound
*.sunrpc Idle
*.* Unbound
*.32771 Idle
*.sunrpc Idle
*.* Unbound
*.32775 Idle
*.time Idle
.
.
*.daytime Idle
*.echo Idle
*.discard Idle
UDP: IPv6
Local Address Remote Address State If
--------------------------------- --------------------------------- ---------- -----
*.* Unbound
*.* Unbound
*.sunrpc Idle
*.* Unbound
*.32771 Idle
*.32778 Idle
*.syslog Idle
.
.
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -------
*.* *.* 0 0 49152 0 IDLE
localhost.4999 *.* 0 0 49152 0 LISTEN
*.sunrpc *.* 0 0 49152 0 LISTEN
*.* *.* 0 0 49152 0 IDLE
*.sunrpc *.* 0 0 49152 0 LISTEN
.
.
*.printer *.* 0 0 49152 0 LISTEN
*.time *.* 0 0 49152 0 LISTEN
*.daytime *.* 0 0 49152 0 LISTEN
*.echo *.* 0 0 49152 0 LISTEN
*.discard *.* 0 0 49152 0 LISTEN
*.chargen *.* 0 0 49152 0 LISTEN
*.shell *.* 0 0 49152 0 LISTEN
*.shell *.* 0 0 49152 0 LISTEN
*.kshell *.* 0 0 49152 0 LISTEN
*.login
.
.
*.* 0 0 49152 0 LISTEN
*TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
----------------------- ----------------------- ----- ------ ----- ------ ----
*.* *.* 0 0 49152 0 IDLE
*.sunrpc *.* 0 0 49152 0 LISTEN
*.* *.* 0 0 49152 0 IDLE
*.32774 *.* 0 0 49152
특정 주소 유형의 패킷에 대한 전송 상태를 표시하는 방법
netstat 명령의 -f 옵션을 사용하면 특정 주소 그룹의 패킷 전송과 관련된 통계를 표시할 수 있습니다.
예 5-6 IPv4 패킷 전송 상태
다음 예는 netstat -f inet 명령의 출력을 보여줍니다.
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -------
host58.734 host19.nfsd 49640 0 49640 0 ESTABLISHED
host58.38063 host19.32782 49640 0 49640 0 CLOSE_WAIT
host58.38146 host41.43601 49640 0 49640 0 ESTABLISHED
host58.996 remote-host.login 49640 0 49206 0 ESTABLISHED
예 5-7 IPv6 패킷 전송 상태
다음 예는 netstat -f inet6 명령의 출력을 보여줍니다.
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
------------------ ------------------------- ----- ------ ----- ------ --------- -----
localhost.38065 localhost.32792 49152 0 49152 0 ESTABLISHED
localhost.32792 localhost.38065 49152 0 49152 0 ESTABLISHED
localhost.38089 localhost.38057 49152 0 49152 0 ESTABLISHED
알려진 경로의 상태를 표시하는 방법
netstat 명령의 -r 옵션은 로컬 호스트의 경로 설정표를 표시합니다. 이 표는 호스트에 알려진 모든 경로의 상태를 보여줍니다. 사용자 계정에서 netstat의 이 옵션을 실행할 수 있습니다.
- IP 경로 설정표를 표시합니다.
$ netstat -r
예 5-8 netstat 명령에 의한 경로 설정표 출력
다음 예는 netstat -r 명령의 출력을 보여줍니다.
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
host15 myhost U 1 31059 net0
10.0.0.14 myhost U 1 0 net0
default distantrouter UG 1 2 net0
localhost localhost UH 42019361 lo0
Routing Table: IPv6
Destination/Mask Gateway Flags Ref Use If
--------------------- --------------------------- ----- --- ------ -----
2002:0a00:3010:2::/64 2002:0a00:3010:2:1b2b:3c4c:5e6e:abcd U 1 0 net0:1
fe80::/10 fe80::1a2b:3c4d:5e6f:12a2 U 1 23 net0
ff00::/8 fe80::1a2b:3c4d:5e6f:12a2 U 1 0 net0
default fe80::1a2b:3c4d:5e6f:12a2 UG 1 0 net0
localhost localhost UH 9 21832 lo0
다음 표는 netstat -r 명령의 화면 출력에 표시되는 여러 매개변수의 의미에 대해 설명합니다.
| |
---|
DestinationDestination/Mask | 경로의 대상 끝점인 호스트를 지정합니다. IPv6 경로 설정표는 6to4 터널 끝점(2002:0a00:3010:2::/64)의 접두어를 경로 대상 끝점으로 표시합니다. | Gateway | 패킷 전송에 사용할 게이트웨이를 지정합니다. | Flags | 경로의 현재 상태를 나타냅니다. U 플래그는 경로가 작동 중임을 나타냅니다. G 플래그는 경로가 게이트웨이임을 나타냅니다. | Use | 전송된 패킷 수를 표시합니다. | Interface | 전송의 소스 끝점인 로컬 호스트의 특정 인터페이스를 나타냅니다. |
|