강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
▒ Doly의 CentOS7 강좌19 6. CentOS 네트워크 5-관련 명령어
조회 : 26,879  


▒ Doly의 CentOS7 강좌19 6. CentOS 네트워크 5-관련 명령어


#################################################
    작성자 : 정우영
    작성일 : 2014.10.07
    대상 OS : CentOS7 x86_64

 본 강좌를 기반으로 서적을 집필합니다. 연재강좌가 마무리되고 몇달 후면 서적이 나오겠죠? CentOS7은 서적도 없지만 강좌도 많이 부족하네요. 리눅스 서버를 10년 넘게 구축하고 관리하고 컨설팅하면서 꼭 필요한 부분과 알아야 할 부분들을 꼼꼼히 체크하면서 강좌를 써보려합니다. 강좌중 오탈자가 있거나 설명이 부족하고 잘못된 경우 doly골뱅이superuser.co.kr으로 메일한통 부탁드립니다. 강좌가 수정되면 더 많은 분들께 도움이 될것이라 생각하고 강좌를 기반으로 집필될 서적또한 완성도가 높아지지 않을까 생각합니다.
#################################################


6. CentOS 네트워크

6.3. 관련 명령어
여기에서는 네트워크의 상황을 체크하고 네트워크 설정을 변경하거나 새로 설정하는 경우에 사용되는 여러 명령어들에 대해서 알아보겠다. 네트워크를 설정하는 방법은 사람마다 다양하고 관리 명령어에서 제공하는 옵션도 상당히 방대하다. 모든 내용들을 여기서 다루기는 무리가 있으므로 추가적인 사항들은 매뉴얼 페이지(man page)나 명령어를 자세히 다룬 문서나 서적을 참고하는 것이 좋을 것이다.


6.3.1. ip : 통합 네트워크 설정 프로그램
커널 2.4이후 리눅스 고급 네트워킹 기능을 사용하기 위한 유틸리티로 ip를 많이 사용한다. ip는 iproute 패키지로 기본 제공된다. 많은 기능들이 ip 유틸리티로 통합되었다. 그 중 자주 사용하는 기능을 알아보자.

 네트워크 연결 확인 : ip link

~] # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:7e:29:b3 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:c4:48:a4 brd ff:ff:ff:ff:ff:ff

위와 같이 ip link 라고 입력하면 네트워크 연결상태를 알려준다. 여기서 중요한 것은 state UP이다. 네트워크에 연결되지 않았다면 state DOWN으로 나타난다. 필자의 경우 10개의 포트(4Port 이더넷 카드 2장, 내장 이더넷 포트2개)에서 연결된 장치명을 사용하기 위해 ip link 명령을 이용하여 쉽게 찾을 수 있었다. 여러 링크관련 고급 설정을 할 수 있는데 이 방법은 멘페이지(man ip-link)에서 확인할 수 있다.

네트워크 IP 확인 : ip addr

~] # ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.0.222/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.0.8/24 brd 192.168.0.255 scope global dynamic eth1
       valid_lft 64160sec preferred_lft 64160sec

위 결과는 네트워크 인터페이스에 할당된 IP 주소와 서브넷마스크, 브로드케스트 IP, 연결상태를 한눈으로 볼수 있는 결과이다. “-4”옵션을 사용한 것은 IPv4에 해당되는 내용만 보기 위함이다. ifconfig 명령어로 확인 가능한 정보이지만 좀더 깔끔하게 보여준다. ip 고급설정을 위해 사용할 수 있는데 그 방법은 멘페이지(man ip-address)를 확인하길 바란다.

라우팅 테이블 확인 : ip route

~] # ip route
default via 192.168.0.1 dev eth0  proto static  metric 1024 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.222 
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.8 

위 결과는 라우팅 테이블을 확인한 것이다. 기본 게이트웨이(192.168.0.1) 정보를 확인할 수 있고 기타 라우팅 부분도 확인할 수 있다. 이 결과는 route 및 netstat –r 명령어로 확인할 수 있다. 라우팅 설정을 위해 사용할 수 있는데 그 방법은 멘페이지(man ip-route)를 확인하길 바란다.

네트워크 모니터링 : ip monitor

~] # ip monitor
192.168.0.223 dev br0 lladdr 52:54:00:9b:e8:c8 REACHABLE
192.168.0.222 dev br0 lladdr 52:54:00:7e:29:b3 STALE
192.168.0.223 dev br0 lladdr 52:54:00:9b:e8:c8 STALE
delete 0.0.0.0 dev lo lladdr 00:00:00:00:00:00 NOARP

ip유틸리티의 모니터(monitor) 기능은 디바이스, 주소, 라우팅등을 모니터링 할 수 있다. 관련 내용은 멘페이지(man ip-monitor)를 확인하길 바란다.



TCP 통계 : ip tcp_metrics

~] # ip tcp_metrics    
192.26.91.193 age 50565.149sec rtt 58875us rttvar 58750us cwnd 10
::1 age 5946.078sec rtt 8125us rttvar 10000us cwnd 10
93.113.36.66 age 150193.112sec rtt 337750us rttvar 310250us cwnd 10
66.109.26.212 age 150193.419sec rtt 218875us rttvar 206000us cwnd 10
124.202.129.6 age 150193.957sec rtt 60875us rttvar 56250us cwnd 10
143.248.234.110 age 50565.235sec rtt 22375us rttvar 17250us cwnd 10
122.152.116.24 age 50565.038sec rtt 120125us rttvar 84750us cwnd 10
150.65.7.130 age 50565.150sec rtt 62125us rttvar 62000us cwnd 10
202.76.233.2 age 150193.631sec rtt 103750us rttvar 96500us cwnd 10
115.156.219.152 age 150193.363sec rtt 357375us rttvar 320250us cwnd 10
204.15.73.243 age 140563.884sec rtt 266500us rttvar 206000us cwnd 10
67.212.81.83 age 150193.522sec rtt 212750us rttvar 199750us cwnd 10
203.248.240.140 age 226081.704sec rtt 11750us rttvar 11250us cwnd 10
121.125.79.185 age 50565.237sec rtt 19500us rttvar 14500us cwnd 10
203.178.137.175 age 50565.005sec rtt 103875us rttvar 76000us cwnd 10
127.0.0.1 age 151377.088sec rtt 1125us rttvar 1000us cwnd 10
192.168.0.200 age 330762.612sec rtt 1875us rttvar 1750us cwnd 10
202.141.176.110 age 318698.276sec rtt 229625us rttvar 229500us cwnd 10
72.232.223.58 age 50563.169sec rtt 207375us rttvar 207250us cwnd 10
192.168.0.230 age 5642.101sec rtt 11375us rttvar 12500us cwnd 10
88.208.217.170 age 150193.334sec rtt 292750us rttvar 274750us cwnd 10
91.210.105.98 age 150193.351sec rtt 385625us rttvar 331000us cwnd 10
114.112.41.90 age 318698.663sec rtt 69125us rttvar 69000us cwnd 10
192.168.0.62 age 135085.976sec rtt 79375us rttvar 79250us cwnd 10

ip tcp_metrics는 IPv4 및 IPv6 목적지에 대한 TCP의 정보를 보관하는 커널의 항목을 조작하는데 사용된다. 이 항목은 TCP 소켓이 목적지 정보를 공유하기 위해 생성되며 목적지 주소를 키로 캐시에 저장된다. 이 저장된 정보는 빠른 오픈기능을 위해 초기 라우팅에서 얻은 여러 정보(TIME-WAIT 재사용을 위한 최근 TSVAL(TimeStamp value)과 상태등)가 보관된다. 성능상의 이유로 캐시가 구성된 한계 이상으로 증가할 수 없으며 오래된 항목은 때때로 회수하고 새로운 목적지에 사용 사용되거나 재정의 된다. 커널은 이 항목을 제거하지 않으며 ip tcp_metrics flush를 이용하여 캐시를 비울 수 있다.



6.3.2. ifconfig : 네트워크 인터페이스 설정 및 확인
ifconfig는 현재 시스템에 장착되어 있는 네트워크 인터페이스를 설정하거나 확인하는 명령어이다. 서버가 통신을 하기 위해서는 네트워크 인터페이스(NIC, 흔히 랜카드)가 있어야 하는데, 이러한 네트워크 인터페이스의 네트워크 정보를 설정, 변경 및 확인하는 명령어가 ifconfig이다.

ifconfig로 확인 가능한 네트워크 인터페이스의 내용은 다음과 같다.

∙MAC 주소
∙eth0에 할당된 IP 주소
∙브로드케스트(BroadCast)
∙서브넷마스크(Subnet Mask)
∙MTU(Maximum Transfer Unit)
∙RX packets(부팅 후 현재까지 받은 패킷수)
∙TX packets(부팅 후 현재까지 보내진 패킷수)
∙Collisions
∙Interrupt 주소
∙현재 UP(사용가능) 되어 있는지 여부



6.3.3. netstat : 인터페이스 통계 및 기타 정보 확인
netstat는 현재 연결된 네트워크 연결과 라우팅 테이블, 인터페이스에 대한 통계, 마스커레이딩 연결, 멀티캐스팅 정보 등을 보여준다. 즉, netstat 명령으로 어떤 호스트(또는 서버)들과 어떤 서비스로 연결되어 있는지와 그 연결 상태는 어떠한가에 대한 정보들을 알 수 있다.

① 어떤 클라이언트와 연결되었는가?
② 어떤 서비스(www, ftp, mysql, ssh 등)로 연결되었는가?
③ 어떤 포트(port) 번호로 연결되어 있는가?(②의 서비스에 대한 포트 번호)
④ 연결상태(wait, listen, connect 등)는 어떠한가?
⑤ 네트워크 연결상태가 어떻게 되어 있는가?
⑥ 기본 게이트웨이의 설정이 제대로 되어 있는가?
⑦ route에서처럼 라우팅 경로는 어떠한가?



6.3.4. route : 라우팅 테이블 확인 및 설정
route는 라우팅 경로(다른 말로 “라우팅 테이블”)를 보거나 변경할 수 있도록 해주는 명령어이다. 주로 이더넷(Ethernet) 카드를 설정할 때 패킷들이 어떠한 경로로 외부로 나가야 하는지 알려주는 역할을 한다. 인터넷은 네트워크들이 게이트웨이를 통해 이리저리 연결되어 있는 커다랗고 복잡한 네트워크이다. 이러한 네트워크에서 지표가 되는 것은 오직 도메인 네임과 IP 주소 밖에는 없다. 따라서 호스트에 설정된 라우팅 테이블은 패킷들이 자유로이 이동할 수 있도록 한다. 


6.3.5. traceroute : 라우팅 경로 확인
어느 날 서버에 접속한 상태에서 다른 서버로 ssh 접속이 안 되는 것을 발견했다고 가정해 보자. 즉시 옆에 있는 166.104.50.152로 ping을 보내 보았으나 이것은 아무 문제가 없었다. 내부 네트워크가 잘 작동 중인데 외부로 연결이 안 된다면 외부로 연결된 어느 게이트웨이 중 하나가 잘못 됐을 가능성이 있다. 이를 확인해 보는 방법은 traceroute를 이용하는 것이다.

인터넷은 네트워크 하드웨어들이 게이트웨이를 통해서 서로 연결된 거대하고 복잡한 집합체이다. traceroute는 사용자가 원하는 호스트까지 패킷이 어떠한 경로로 전달이 되는지를 작은 ttl(time-to-live) 값과 돌아오는 'ICMP TIME_EXCEEDED' 응답을 통해 사용자에게 알려준다. 


6.3.6. tracepath : 경로 확인
tracepath는 패스를 가지고 있는 MTU를 통해서 목적 시스템까지의 경로를 알아내는 프로그램이다. 이 프로그램은 UDP 포트나 불규칙적으로(random) 몇몇의 다른 포트를 사용한다. 


6.3.7. ping : 원격 호스트 응답 테스트
컴퓨터의 네트워크가 정상적으로 동작중인지 확인해 볼 때 사용하는 도구이다. ping은 특정 호스트로 ICMP(Internet Control Message Protocol) 에코 메시지를 사용해서 원격 호스트가 다시 로컬 호스트로 응답하도록 한다.


6.3.8. arp : ARP 테이블 관리
arp는 “Address Resolution Protocol”의 약자로서 동일한 네트워크 내에 존재하는 호스트들의 IP 주소와 ethernet 주소(MAC 주소)를 확인하는 명령어이다. 즉, 특정 네트워크 내에 어떤 호스트들이 존재하는지를 확인할 수 있는 것이 바로 arp 명령어이다. arp는 이를 위해 리눅스의 /proc/net/arp에 기록된 ARP 관련 정보를 참조한다.


6.3.9. nslookup : 도메인 네임 서버 질의
nslookup은 인터넷 도메인 네임 서버에 사용자가 직접 도메인 이름을 질의할 수 있도록 해주는 프로그램이다. 이 프로그램을 통해 누구나 네임서버에 직접 질의하여 도메인 네임 서버가 가지고 있는 정보를 검색할 수 있는 것이다. 이를 통해 사용자는 도메인 네임 서버가 올바르게 설정되고 동작하고 있는지를 확인할 수 있다.


6.3.10. dig : 도메인 네임 서버 질의
dig(Domain Information Groper)는 지정한 DNS 서버의 설정 내용과 특정 도메인의 네임서버 설정 내용을 확인하는 명령이다. 즉, nslookup 명령과 거의 같은 역할을 한다. nslookup 명령과 host 명령과 마찬가지로 /etc/resolv.conf 파일에 정의되어 있는 네임서버를 기본 네임서버로 사용한다. 


6.3.11. host : 도메인 네임 서버 질의
host는 도메인 네임 서버에서 도메인의 설정 정보를 찾기 위한 간단한 유틸리티이다. 이것은 보통 도메인 이름들을 IP 주소로 바꿔서 정보를 알려 주기 위해 사용된다. host 명령은 nslookup과 dig와 마찬가지로 /etc/resolv.conf 에 설정된 도메인 네임 서버를 기본 네임서버로 인식한다. 




 이상으로 19번째 강좌를 마무리 하겠습니다. CentOS 7부터 최소 설치하게 되면 ifconfig 명령어가 없네요. 대신 ip 명령어로 ip확인등을 해야 하니 어색하죠? 강좌에서 조금더 예제들은 생략하였습니다.  2014년 10월 6일(화) 도리(Doly)였습니다.^^ 
 
#################################################
* 본 강좌는 언제든 갱신될 수 있으며, 원글은 www.linux.co.kr 강좌>리눅스>Doly의 연재강좌 에서 수정됩니다. 
* 본 강좌의 일부 또는 전체를 인용하실 경우, 반드시 출처를 밝혀 주시기 바랍니다.

* 수정이력 :
 2014.10.07(화): 최초작성

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1846


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
도리
도리(Doly)
(주)수퍼유저 기술이사 (CTO)
리눅스마스터 1급,2급 추천교재(2014년) 집필
리눅스마스터 1급,2급 전문위원(출제)(한국정보통신진흥협회, 2005년~)
SULinux 1.0, 1.5, 2.0, 2014 개발 총괄(sulinux.net, 1998년~)
SSU,LSCP,LSMP,CCMT외 다수 오픈소스 프로젝트 개발 및 운용 (lscp.sf.net외,2009년~)
리눅스 대량 시스템 구축 및 관리(5,000대리눅스 서버 구축 및 관리 경험, 2000년~)

E-Mail : doly골뺑이superuser.co.kr
소개 : 하루 하루 최선을 다합시다!!