Ubuntu Server - server 관련 명령어
안녕하세요 :)
우분투 리눅스 환경에서의 서버 구축을 주제로한 열여덟번째 포스팅은 서버관련 명령어에 대한 정리를 해보겠습니다.
이전 포스팅까지 여러분야의 서버 서비스를 설치하여 구축해보는 기초적인 단계에서의 우분투 리눅스 서버개설을 해보았습니다.
이번 포스팅부터는 가상 머신 환경을 적극 활용하여 기초적인 네트워킹에대한 개념과 명령을 알아보고 가상호스트를 만들어패킷을 보내보는 등의 실습을 진행해보겠습니다.
이번 포스팅은 위와 같은 실습진행에 앞선 기본적인 네트워크 명령어 동작 개념 정리 입니다.
1. ifconfig
- 시스템에 설치된 네트워크 인터페이스 정보를 확인 할수 있는 명령으로 아무런 옵션 없이 사용하면 아래와 같습니다.
HWaddr - 네트워크 인터페이스의 주소(MAC address)
MAC 주소는 네트워크 5계층에서 데이터링크 계층의 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자
대표적인 근거리 통신기술인 이더넷과 무선통신 와이파이에서 네트워크주소로 주로 사용한다. 낮은 계층의 주소
inet addr - 네트워크 인터페이스에 할당된 ip 주소
ip 주소! 인터넷 프로토콜을 사용할때 사용하는 주소
Bcast - 브로드캐스트 주소
네트워크의 호스트들이 속하게 되는 주소의 범위(사이즈)를 알수 있는 주소, 서브넷 마스크에 따라 주소의 범위가 정해지는데 그예는 다음과 같다. 기본 적으로 서브넷 마스크의 클래스로 분류 한다면
class A이고 IP가 192.0.0.0 -> Bcast 192.255.255.255
class B이고 IP가 192.168.0.0 -> Bcast 192.168.255.255
class C이고 IP가 192.168.16.0 -> Bcast 192.168.16.255
주소의 범위 내에서 카운트 될수 있는 가장 큰 주소 값으로 생각해도 괜찮지만 만약 넷마스크가 중구난방일경우 브로드 캐스트를 구하는 방법은 아래의 두 순서를 따릅니다.
1. 서브넷 마스크 값을 1의 보수를 취함 -> invert 하는것이죠 만약 0101 이면 1010으로
2. 보수를 취한 마스크 값과 IP주소값을 XOR연산을 수행한다.
Mask - 서브넷 마스크
네트워크 관리자가 성능과 효율을 향상시키고 영역을 분할하여 효과적으로 관리하기 위해 IP 주소값을 큰 범위에서 작은 범위로 나누기 위해 사용하는 주소 분할 기술!
MTU - 네트워크 최대 전송단위(Maxium Transfer Unit)
RX packets - 받은 패킷정보
TX packets - 보낸 패킷 정보
collision - 충돌된 패킷수
interrupt - 네트워크 인터페이스가 사용하는 인터럽트 번호
만약 ifconfig 명령어 up 또는 down 옵션을 관리자 권한으로 사용하면 네트워크 시스템을 온/오프 할수 있습니다.
예) sudo ifconfig ens32 down , sudo ifconfig 192.168.111.111 on
2. route
route 명령은 기본적으로 라우팅 에 관련된 테이블의 정보를 출력해줍니다.
Destination - 목적지, 당연히 라우팅에 대한 목적지겠죠
Gateway - 외부 네트워크와 연결하기 위한 게이트웨이 주소
위의 사진에서 저는 내부 사설망으로 다른 두개의 호스틀 이어주는 실습을 진행해서 게이트웨이 값이 없는 두개의 목적지가 있습니다.
Genmask - 목적지 네트워크의 서브넷 마스크 주소
255.255.255.0 등으로 지정시 목적지 호스트의 주소, 0.0.0.0으로 되어있으면 기본 게이트웨이 주소
Flags - 해당 경로에 대한 정보를 알려주는 기호
U(up)는 경로가 살아있는 상태 의미, H(host)는 목적지가 호스트라는 의미, G(gateway) 게이트웨이로 향함을 의미
Metric - 목적지 까지의 거리
사실 거리의 개념 보다는 라우터가 목적지의 까지 데이터를 보낼때 드는 비용을 환산한 수치이다.
Ref - 경로를 참조한 횟수
Use - 경로를 탐색한 횟수
Iface - 패킷이 오가는데 사용할 네트웤 인터페이스
3. ping
ping 은 네트워크 연결 상태를 진단하는 명령입니다. 목적지에 패킷을 보내고 되돌아오는지 확인하여 연결상태를 진단합니다.
명령어는 ping 192.168.111.100 처럼 ping 주소 로 보내면 무한히 패킷을 주고받으며, ctrl +c 를 누를시 중단 됩니다.
-R 옵션을 붙일시 목적지까지 도달하는데 거치는 호스트의 IP주소를 차례로 보여줍니다.
-i 옵션은 보내지는 패킷사이의 시간간격을 둘수 있습니다.
4. netstat
netstat는 리눅스 네트워크 상태를 종합적으로 보여주는 명령어 입니다.
만약 아무런 옵션없이 명령을 수행한다면 서버에 열려있는 모든 소켓에 대한 정보를 확인할수 있습니다.
소켓이란 소프트웨어로 작성된 추상적 통신의 접속점, 말이 어렵네요... 각통신 단(송신단,수신단)에서 응용프로그램과 통신단 사이의 인터페이스 역할 정도로 보면될것 같습니다. 두 프로그램이 네트워크를 통해 서로 통신을 수행할수 있도록 해주는 양쪽의 단자이며 서로다른 프로세스끼리 소켓으로 인해 연결 가능
netstat는 옵션을 이용해 위의 ifconfig 와 route와 비슷하게 정보를 출력해줍니다.
netstat -i, 네트워크 인터페이스를 통해 주고 받은 패킷의 정보를 확인가능
netstat -nr, 라우팅 테이블 정보 확인
netstat -s, 프로토콜에 따른 패킷의 통계 확인
위처럼 유용한 옵션들이 많지만 가장 많이 사용하는옵션은 -atp입니다, 열려있는 포트와 프로그램이대한 모든 정보를 볼수 있기 때문입니다.
저의 경우 평소 ssh 서버를 열어서 원격으로 많이 이용하고 있는데 그에 대한 포트정보가 위처럼 나오고 있는것을 확인할수 있습니다.