본문 바로가기
프로그래밍/리눅스

리눅스 Linux 네트워크 관련 명령어 ip command ifconfig route netstat ss arp mii-tool ethtool ping traceroute nslookup dig host hostname wget

by 참외롭다 2023. 4. 4.
반응형

 

ip command ifconfig route netstat ss arp mii-tool ethtool ping traceroute nslookup dig host hostname wget 

 


 

네트워크 란 컴퓨터를 상호 연결 하여 정보 교환 및 처리, 자료 공유 등을 위해 구성한 통신망을 말한다.

 

LAN 은 가까운 지역의 네트워크 매체를 이용해 하나로 묶는 근거리 통신망을 말한다. 현재는 Ethernet을 주로 사용하고, 무선 방식의 무선 랜도 보편적으로 사용한다. LAN 전송 방식이더넷 방식은 각각의 기기들이 48비트 길이의 고유한 MCA 주소를 기반으로 상호간에 데이터를 주고받을 수 있도록 한다.

 

네트워크 카드 는 네트워크 안에서 컴퓨터끼리 통신하는데 쓰이는 하드웨어이다. 맥 주소라는 고유한 주소 할당 시스템을 이용하여 OSI 모델 기준으로 물리계층, 데이터링크계층의 장치를 사용한다. 네트워크 간의 연결을 인터네트워킹이라 하는데 이러한 기능을 수행하는 장치를 일반적으로 게이트웨이라고 한다.

 

게이트웨이는 서로 다른 통신망과 프로토콜을 사용하는 네트워크간에 통신 기능을 가능하게 해주는 장치를 뜻한다.

 

리피터 는 전송 거리로 인해 감쇄되는 물리적 신호를 증폭하여 중계하는 장치이다.

 

브리지 는 물리 계층에 있는 리피터나 허브의 기능을 하면서, 특정 네트워크로부터 오는 통신량을 조정하여 트래픽을 관리한다.

 

라우터 는 브리지 기능에 추가하여 네트워크 계층에 대한 경로 선택 기능을 제공하고 임의의 네트워크에 들어온 데이터를 어느 네트워크로 전달할지 판단한다. 이를 지원하기위해 라우터는 자신과 연결된 네트워크 및 호스트의 정보를 유지하고 관리한다. 또 어떤 경로를 이용해야 빠르게 전송할 수 있는지 판단한다. 이런 정보는 라우팅 테이블에 보관한다.

 

게이트웨이 는 서로 다른 네크워크를 연결하여 통신이 가능하게 해주는 장치이다. 서로 다른 프로토콜을 사용하는 통신망도 접속할 수 있게 해주기 때문에 프로토콜 변환기라고도 부른다. 완전히 다른 두 개의 네트워크 사이에 데이터 형식을 변환해야하기 때문에 전송속도가 느리고 비싸다.

 

프로토콜 이란 컴퓨터 상호간에 통신을 위해 미리 정해놓은 통신규약을 말한다. 상호간의 접속/전달 방식, 통신 방식, 주고받을 데이터의 형식, 오류 검출방식, 코드 변환 방식, 전송속도 등에 대해 정하는 것을 말한다.

 

TCP/IP 는 컴퓨터 기종에 관계없이 정보 교환이 가능하게 해주는 통신프로토콜이다. TCP는 IP프로토콜에 의해 만들어진 패킷들의 전송 흐름부분을 담당하는데, 패킷이 목적지 주소에 올바른 순서로 도달하도록 제어하고 유실되지 않도록 한다. IP는 전송하려는 자료를 패킷으로 나누고, 목적지 주소를 지정한 뒤 운반한다.

TCP/IP 는 네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 구성된다. 네트워크 인터페이스 계층은 물리적인 네트워크를 의미하며 프레임을 물리적 회선에 올리거나 내리는 역할을 한다. 보내는 쪽은 패킷을 프레임으로 만들어 물리적 회선에 올려 보내고 받는 쪽은 받은 프레임을 패킷으로 만들어 상위 계층으로전달한다. 인터넷 계층 은 패킷을 목적지 까지 효율적으로 전달하는 역할을 한다. IP 프로토콜이 여기에 속하는데 OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립을 담당하며 데이터 세그먼트를 패킷을 ㅗ만들어 전송하는 역할을 수행한다.

 

전송 계층 은 상위 계층인 응용 계층으로 받은 데이터를 세그먼트 형태로 만들어 네트워크를 통해 수신자에게 전달한다. 대표적인 프로토콜에는 TCP 와 UDP 가 있다. TCP는 연결지향 전송 플로토콜로 세그먼트가 수신자에게 잘 전달 되었는지 응답을 주고받아 점검한다. IP에 의해 전달되는 패킷의 오류를 검사하고 재전송을 요구한다. 패킷을 전소알 두 지점을 네트워크 상의 최단 경로로 직접 연결한 두 패킷을 주고받기때문에 신뢰도가 높다. UDP는 비연결 전송 프로토콜로 세그먼트를 보내기만 하고 응답을 주고받지 않는다. 제데로 전달되었는지 확인하지 않으며 오류 수정도 하지 않는다. 응용 계층은 네트워크로 연결된 프로세스간의 통신 접속을 위해 설계된 통신 프로토콜과 방식을 위해 만들어진 추상 계층으로 사용자 프로그램에서 구현된다. 전송 계층 프로토콜으 사용해 호스트간의 연결을 확립한다.

 

프로토콜 번호 는 시스템이 여로 곳에서 전달되는 데이터를 처리하기 위해서 전송 프로토콜에 대한 인식이 필요한데, 프로토콜의 정보는 번호를 이용해 데이터그램 헤더 안에 적어서 보낸다. 리눅스 및 유닉스 시스템에서 프로토콜 번호는 /etc/protocols 에서 확인할 수 있다.

 

포트 번호 IP 프로토콜에 의해 전달된 데이터는 전송 계층 프로토콜인 TCP / UDP 등에서 서비스 다중화를 위해 Port로 관리된다. 각각의 응용 프로그램은 할당된 포트를 이용해 통신 데이터를 주고 받는다. 포트는 번호로 관리된다. 리눅스 및 유닉스 시스템에서는 /etc/services 파일에서 주요 포트 번호를 확인할 수 있다.

 

소켓 은 네트워크로 연결되어 있는 컴퓨터에서 상호간 통신을 위한 접점이다. 네트워크 관련 프로그램은 통신을 위해 소켓을 생성하고 소켓을 통해 데이터를 교환한다. 소켓은 인터넷 프로토콜, 로컬 시스템의 IP주소 및 포트 번호, 원격 시스템의 IP 주소 및 포트 번호로 구성된다.

 

IP주소는 각 컴퓨터마다 고유한 값으로 제공된다.

 

도메인네임 은 IP 주소를 알기 슆게 영문으로 표기한 것이다.

 

리눅스에서 네트워크 서비스 를 사용하려면 가장 먼저 네트워크 하드웨어를 설치해야 하고 네트워크 프로토콜, 네트워크 서비스 프로글매 순으로 설치해야 한다.

리눅스에서 인터넷에 접속하기 위해서는 하드웨어 설정이외에 IP 주소 설정이 필요하다. DHCP 서버에 의해 IP를 자동으로 할당받는 경우에는 큰 문제가 없지만, 서버로 사용하거나 고정 IP를 할당받는 경우에는 정확한 주소 정보가 필요하다. 네트워크 주소를 설정하기 위해서는 IP 주소, 넷마스크 주소, 게이트웨이 주소가 필수적으로 요구된다.

 

넷마스크 주소 는 다른 말로 서브넷 마스크라고도 부르는데, 네트워크를 분할하여 새로운 하위의 네트워크를 구성할 때 사용한다. 예를 들어 입력한 IP 주소가 192.168.3.12 이고 넷마스크 주소값을 255.255.255.0 으로 지정하면 192.168.3.0 ~ 192.168.3.255 까지의 256개 호스트를 하나의 네트워크로 묶는다는 의미이다. 그 중 네트워크 주소와 브로드케스트 주소로 할당되는 2개의 주소를 제외하고 254개의 주소를 사용할 수 있다. 네트워크 주소는 최하위 값인 0 이 할당되고 브로드캐스트 주소는 가장 상위 값은 255가 할당된다. 넷마스크값은 각 네트워크의 호스트수와 밀접한 관계가 있는데, 서브 네트워크로 분할하면 각 네트워크별 게이트 웨이 주소가 추가로 요구되므로 실제로 사용할 수 잇는 IP 주소가 줄어든다.

 

게이트웨이란 서로 다른 통신망이나 프로토콜을사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 통칭해서 일컷는다. 보통 다른 네트워크와의 통로 역할을 수행하며 1번이나 254 번이 할당된다.

 

/etc/sysconfig/network-scripts 디렉터리는 네트워크 인터페이스 환경 설정과 관련된 파일 및 스크립트 가저장된다.


/etc/resolve.conf 파일은 시스템에서 사용하는 네임서버(DNS)를 설정하는 파일이다.


/etc/hosts 파일은 IP 주소와 호스트명을 매핑시켜 데이터베이스 처럼 사용하는 파일이다.


 

ip 명령어는 이더넷 장치, IP 주소, 라우팅 정보 등의 설정 정보를 출력하거나 변경하는 명령이이다.

 

ip [option] 대상 [command]

 

대상

 

- address : IPv4 또는 IPv6 주소를 나타낸다.

- route : 라우팅 테이블 목록을 나타낸다.

- link : 네트워크 장치를 의미한다.

 

command

 

- show, list : 대상에 대한 정보를 출력한다.

- add : 대상에 대한 특정 정보를 추가하거나 설정한다.

- del : 대상에 대한 특정 정보를 삭제한다.

 

  # ip 주소 정보를 삭제한다.
  $ ip addr del 192.168.5.13/24 dev eth1

  # ip 주소 정보를 설정한다.
  $ ip addr del 192.168.5.13/24 dev eth1

  # 네트워크 인터페이스를 활성화한다.
  $ ip link set eht1 up

  # 네트워크 인터페이스를 비활성화한다.
  $ ip link set eht1 down

  # eth0의 MAC 주소를 aa:bb:cc:dd:ee:ff로 설정한다.
  $ ip link set eth0 address aa:bb:cc:dd:ee:ff

  # 라우팅 테이블 정보를 출력한다.
  $ ip route show

  # 게이트웨이 주소값을 삭제한다.
  $ ip route del default via 192.168.5.1

  # 게이트웨이 주소값을 설정한다.
  $ ip route add default via 192.168.5.1

  # 정적 라우팅 정보를 설정한다.
  $ ip route add 10.10.12.0/24 via 192.168.5.1 dev eth0

  # 정적 라우팅 정보를 삭제한다.
  $ ip route del 10.10.12.0/24

 

ifconfig 명령어는 네트워크 인터페이스를 설정하거나 확인하는 명령이다. ip 명령으로 대체된다.

 

ifconfig [interface][address][option]

 

ifconfig 의 주요 항목

 

- flags : 네트워크 인터페이스의 상태 정보를 나타낸다.

- mtu : 한 번에 전송할 수 있는 최대 패킷의 크기를 나타낸다.

- inet : IPv4 주소를 나타낸다.

- netmask : 넷마스크 주소값을 나타낸다.

- inet6 : IPv6 주소를 나타낸다.

- ether : 맥주소를 나타낸다.

- RX/TX : 수신 패킷수와 전송 패킷 관련 수를 나타낸다.

- collisions : 충돌이 발생한 패킷 수를 나타낸다.

 

# enp0s1 네트워크 장치의 작동을 중지시킨다.
$ ifconfig enp0s1 down

# enp0s1 네트워크 장치의 작동을 활성화한다
$ ifconfig enp0s1 up

# enp0s1에 ip 주소 192.168.0.2, Netmask 255.255.255.0, broadcast 192.168.0.255 를 부여하고 활성화시킨다.
$ ifconfig enp0s1 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up

# enp0s1에 ip 주소 192.168.0.2 를 부여하고 나머지는 기존 설정값을 부여한다.
$ ifconfig enp0s1 192.168.0.2

route 명령어는 라우팅 테이블의 정보를 출력하거나 관리하는 명령이다.

 

route [add|del] [-destination] [netmask 값] [gw 값] [dev 인터페이스]

 

route 명령어의 항목 설명

 

- Destination : 목적지 네트워크 주소를 나타낸다. default 시 시스템 주소가 192.168.1.1 이고 넷마스크가 255.255.255.0 이면 C 클레스이므로 default 네트워크 주소는 192.168.1.0 이 된다.

- Gateway : 목적지 주소로 보내기 위한 게이트웨이 주소를 가리킨다.

- Genmask : 목적지의 네트워크 주소를 알아내기 위한 넷마스크이다.

- Flags : 목적지 네트워크와의 연결 상태를 알려준다.

- Metric : 목적지 네트워크와의 거리를 나타낸다.

- Ref : 다른 라우터가 목적지로 가기위해 참조한 횟수를 나타낸다.

- Use : 다른 라우터가 목적지로 가기 위해 사용한 횟수를 나타낸다. 

- IFase : 목적지 네트워크와 연결된 인터페이스를 나타낸다.

 

# 설정되어 있는 네트워크 주소를 삭제한다.
$ route del -net 192.168.122.0 netmask 255.255.255.0

# 네트워크 주소를 설정한다.
$ route add - net 192.168.3.128 netmask 255.255.255.192 dev enp1s0fs

# 게이트웨이 주소를 삭제한다.
$ route del default gw 192.168.3.1

# 게이트웨이 주소를 설정한다.
$ route add default gw 192.168.3.254 enp1s0f0

netstat 명령어는 네트워크의 연결 상태를 출력하는 명령이다. 네트워크 연결 상태 이외에도 라우팅 테이블 정보, 네트워크 인터페이스 상태, 머스커레이드 연결 상태, 멀티캐스트 멤버 등의 정보를 출력한다.

 

 netstat [option][address_family_option]

 

option

 

- a : 모든 소켓 정보를 출력한다.
- n : 기호화된 호스트명이나 포트명 대신 숫자값으로 표현한다.
- p : 소켓에 대한 PID 와 프로그램명을 출력한다.
- r : 라우팅 테이블 정보를 출력한다.
- l : 대기하고 있는 리슨 포트를 출력한다.
- i : 네트워크 인터페이스 테이블 정보를 출력한다.
- s : 네트워크 프로토콜에 대한 통계 정보를 출력한다.
- c : 네트워크 정보를 계속적으로 출력한다.
- t : TCP 프로토콜을 기반으로 접속한 목록을 출력한다.
- u : UDP 프로토콜을 기반으로 접속한 목록을 출력한다.
- g : 멀티케스트 그룹 멤버의 정보를 출력한다.

 

# 모든 소켓의 PID 및 프로그램명을 출력하고 호스트명, 포트명 등은 숫자값으로 출력한다.
$ netstat -anp

# ip 주소를 기반으로 접속한 목록을 출력한다.
$ netstat -inet

ss 명령어는 소켓의 상태를 출력해주는 명령어로 netstat 명령과 유사하다. 다른 도구에 비해 TCP 및 상태 정보에 더 많은 정보를 제공한다.

 

ss [options] [필터]

 

option

 

- a : 소켓의 모든 정보를 출력한다.
- n : 서비스 명으로 리졸빙 하지 않고 숫자값으로 출력한다.
- r : 숫자값 형태의 주소나 포트 정보를 호스트명이나 서비스 명으로 리졸빙 해서 출력한다.
- l : 서비스 연결을 위해 대기 중인 소켓 정보를 출력한다.
- o : 시간 관련 정보를 출력한다.
- e : 소켓 정보를 확장해서 자세히 출력한다.
- p : 소켓을 사용 중인 프로세스 정보를 출력한다.
- i : 시스템 내부의 TCP 정보를 출력한다.
- s : 소켓 관련 상태 정보를 요약해서 출력한다.
- 4 : IPv4 관련 정보만 출력한다.
- 6 : IPv6 관련 정보만 출력한다.
- 0 : PACKET 소켓 정보만 출력한다.
- t : TCP 관련 소켓 정보만 출력한다.
- u : UDP 관련 소켓 정보만 출력한다.
- x : 유닉스 도메인 소켓 정보만 출력한다.
- f 패밀리명 : 소켓의 특정 타입을 지정해서 출력한다.

 

* 지원되는 패밀리명에는 uni, inet, inet6, link, netlink 가 있다.


arp 명령어는 ARP 캐시를 관리하는 명령어이다. ARP 캐시는 현재 접속되어 있는 32비트 IP 주소를 하드웨어 주소로 바꾸어 기억하는 곳이다.
현재 들어와 있는 호스트에 대한 정보를 알 수 있다.

 

arp [option]

 

option

- a : 특정 호스트에 대한 정보를 출력한다.
- d : 해당 호스트 정보를 제거한다.
- n : 출력 정보를 도메인 주소 대신 IP 주소로 출력한다.
- v : 관련 정보를 자세히 출력한다.


mii-tool 명령어는 네트워크 인터페이스 상태를 점검하고 설정하는 유틸리티를 실행하는 명령어이다.

 

mii-tool [option] 네트워크 장치명

 

option

 

-r : 네트워크 인터페이스 자동 인식을 위해 재시작한다.
-F : 강제로 설정한다.
-v : 관련 정보를 자세히 출력한다.

 

# enp1s0f0 을 강제적으로 100baseTX-FD로 설정하고 자세한 정보를 출력한다.
$ mii-tool -v -force 100baseTX-FD enp1s0f0

# enp1s0f0 네트워크 인터페이스를 다시 인식한다.
$ mii-tool -r 100baseTX-FD enp1s0f0

ethtool 명령어는 이더넷 카드 설정 정보를 출력하거나 변경하는 명령이다

 

option

-s : 이더넷 카드의 설정을 변경할 때 사용한다.


ping 명령어는 인터넷 제어 메세지 프로토콜인 ICMP를 이용해 네트워크 연결을 확인할 수 있는 명령이다. 호스트와 서로 연결이 되어 있는지를 확인하고, 패킷을 보내고 받는 시간을 확인해 장애 여부도 판단할 수 있다. 최근에는 라우터나 방화벽에 ICMP 프로토콜을 차단해 ping 이나 traceroute 같은 명령을 제한하는 곳이 많아지고 있다.

 

ping [option] Hostname or IP-Address

 

option

 

-c : 몇 개의 패킷을 보낼 것인지 설정한다.
-i : 몇 초 간격으로 패킷을 보낼 것인지 설정한다.
-s size : 전송하는 패킷의 byte 단위 크기를 설정한다.
-w 초 : 패킷을 보내고 몇 초 후에 실행을 멈출 것인지 설정한다.


traceroute 명령어는 패킷이 특정 호스트까지 라우팅되는 과정을 출력하는 명령으로 라우팅과정에 어떤 장애가 있을 경우에 위치를 파악할 수 있다.

 

traceroute Hostname or IP-Address

 

$ traceroute  www.ihd.or.kr

nslookup 명령어는 DNS를 이용하여 도메인이나 IP를 조회하는 명령이다.

 

nslookup [option] Hostname or IP-Address

 

option

-type : 서버타입에는 mx(메일서버), ns(네임 서버) 등을 조회할 수 있다.

 

$ nslookup -type=mx naver.com

dig 명령어는 도메인명으로 정보를 조회하는 명령이다.

 

dig [option] 도메인명 [type]

 

option

 

-f : 질의 타입을 지정하는 옵션으로 기본값은 IP를 조회하는 A이다.

# 주소 정보를 출력한다.
$ dig www.ihd.or.kr

# 메일 서버 정보를 출력한다.
$ dig ihd.or.kr MX

# 네임 서버 정보를 출력한다.
$ dig -t ns ihd.or.kr

host 명령어는 도메인명으로 정보를 조회하는 명령이다.

 

host [option] 도메인명

 

option

 

-t : 질의 타입을 지정하는 옵션으로 기본값은 IP를 조회하는 A이다.
-v : 지정한 도메인에 대한 자세한 정보를 출력한다.
-s : v와 같지만 MX, NS 등의 타입값 위주로 출력한다.

 

# ip 주소 정보를 출력한다.
$ host www.ihd.or.kr

# 도메인명 설정과 관련된 자세한 정보를 출력한다.
$ host -v ihd.or.kr MX

hostname 명령어는 시스템에 설정된 호스트네임을 출력하거나 설정한다.

 

hostname [option] [hostname]

 

option

 

-v : 자세한 호스트명 정보를 출력한다.
-d : 도메인명만 출력한다.
-f : 완전한 호스트명을 출력한다.
-a : 호스트명에 대한 alias를 출력한다.
-i : 호스트명에 설정된 IP 주소를 출력한다.

 

 

# ip 주소 정보를 출력한다.
$ host www.ihd.or.kr

# 도메인명 설정과 관련된 자세한 정보를 출력한다.
$ host -v ihd.or.kr MX

wget 웹 URL을 이용해 다운로드할 때 사용하는 명령이다. HTTP, HTTPS, FTP 프로토콜 기반의 URL을 통해 다운로드할 수 있다.

 

wget [option] [url]

 

option

 

-r : 하위 디렉터리까지 다운로드할 때 사용하는 옵션이다. default 는 5이다.
-l : 하위 디렉터리의 depth 레벨을 지정할 때 사용한다.

 

# 파일을 현재 디랙터리에 다운로드한다.
$ wget https://dlcnd.apache.org//httpd/httpd-2.4.52.tar.bz2

 

반응형