[리눅스마스터1급] 1.3.2 네트워크 환경

cateto·2022년 3월 10일
0

li-master1

목록 보기
19/27
post-thumbnail

1.리눅스 실무의 이해 / 3.네트워크의 이해 / 1.3.2 네트워크 환경

요새 앱을 띄우면서 리눅스 컴퓨터를 서버로 활용하는 일이 빈번하게 있는데 주로 사용하는 명령어는 netstat, iptables, ping 정도인 것 같다. 내용을 자세히 파면 보는 시야가 더 넓어지지 않을까?

환경 설정

리눅스의 네트워크

리눅스에서 네트워크 서비스를 사용하려면 가장 먼저 네트워크 하드웨어를 설치하고, 다음으로 네트워크 프로토콜, 네트워크 서비스 프로그램 순으로 설치해야 한다. 리눅스에서 다양한 네트워크 하드웨어를 지원하는데, 보편적으로 이더넷 카드(Ethernet Card) 이외에도 모뎀 ISDN, AX.25, ATM 등도 지원한다. 최근 Xen, KVM, VirtualBox, Docker 등의 서버 가상화 기술을 사용하는 경우에도 가상 장치 생성을 통해 지원한다.

이더넷 카드 설치

리눅스에서는 자동으로 인식하여 설치해주기에 별도의 설정이 필요없다. 그러나 새롭게 출시된 이더넷 카드의 경우에는 제조사 홈페이지에서 리눅스 버전이나 커널 버전에 맞는 모듈을 받아 설치하고, modprobe 명령을 이용해서 커널에 로드 시킨다.

인터넷 접속

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

  2. 넷마스크(Netmask)게이트웨이(Gateway) 주소
    넷마스크 주소는 다른말로 서브넷마스크(Subnet Mask)라고도 부루는데, 네트워크를 분할하여 새로운 하위의 네트워크를 구성할 때 사용한다.

    넷마스크 주소값을 255.255.255.0(==192.168.3.12/24)으로 설정하면 256개의 주소에서 2개는 네트워크 주소와 브로드캐스트 주소로 할당되어 실제 사용할 수 있는 주소는 254개가 된다.

  3. 서브넷 마스크를 사용하는 이유
    브로드캐스트 영역(네트워크)를 나누기 위함 입니다. 한 네트워크에 수 많은 호스트가 있을 경우 원활한 통신이 불가능해지게 됩니다. 이를 해결하고 브로드 캐스트 영역에 부하를 줄이기 위해서 네트워크를 적절하게 나누어 주셔야 합니다.

네트워크 인터페이스 설정 방법

  1. GUI 기반 네트워크 설정
    gnome-control-center 에서 network 관련 항목으로 관리
  2. 명령어를 이용
    ip, ifconfig, route 등을 사용하여 설정. 명령입력과 동시에 반영되고 재부팅하면 초기화 되므로 주의!

설정 예)
ifconfig eth0 192.168.12.22 netmask 255.255.255.0 up
route add -net 192.168.12.0 netmask 255.255.255.0 eth0
route add default gw 192.168.12.1

  1. 네트워크 관련 파일 이용
    /etc/sysconfig/network-scripts/ifcfg-네트워크장치명으로 저장되므로 vi 편집기 등을 통해 해당 내용을 직접 변경한다.
    systemctl restart network : 네트워크 정보를 갱신해야함!

네트워크 관련 명령어

ip

이더넷 장치, IP 주소, 라우팅 정보 등의 설정 정보를 출력하거나 변경
예) ip addr show : IP주소를 출력
ip addr del 192.168.5.13/24 dev eth1 : IP 주소 정보를 삭제
ip route show : 라우팅 테이블 정보를 출력

ifconfig(interface config)

앞으로 이 명령어는 ip로 대체됩니다. 유닉스 및 리눅스 초창기부터 네트웤느 인터페이스를 설정하거나 확인하는 명령어
예) ifconfig

route

앞으로 이 명령어도 ip로 대체됩니다. 유닉스 및 리눅스 초창기부터 라우팅 테이블의 정보를 출력하거나관리하는 명령.
예) route

netstat

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

netstat의 state 결과

내용
LISTEN소켓을 열고 기다리는 상태(서버에서 클라이언트로 들어오는 패킷을 위해)
SYS-SENT로컬 시스템의 클라이언트 앱이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED서버 시스템이 원격 클라이언트로부터 접속 요구를 받아 클라이언트에 응답을 했지만 확인 메시지를 받지 못한 상태
ESTABLISED3Way-Handshaking이 완료된 후 서버와 클라이언트가 서로 연결된 상태
CLOSE-WAIT원격 호스트는 종료된 상태이고 소켓을 종료하기 위해 기다리는 상태
TIME-WAIT패킷 처리는 끝났지만 분실되었을지 모르는 느린 세그멘트를 위해 당분간 소켓을 열어놓은 상태
CLOSED소켓 연결이 종료된 상태

ss(socket statistics)

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

arp

ARP(Address Resolution Protocol) 캐시를 관리하는 명령이다. 현재 접속되어있는 32비트 IP주소를 하드웨어 주소(MAC address) 로 바꾸어서 기억하는 곳이다. 15분정도 쓰이지 않으면 ARP 캐시에서 제거된다.
예) arp -n

mii-tool(Media Independent Interface Tool)

네트워크 인터페이스의 상태를 점검하고 설정하는 유틸리티
mii-tool -v eth0 : eth0 네트워크 인터페이스 장치의 정보를 표시하고 물리적으로 케이블이 연결되어있는지 여부를 확인할 수 있다.

ethtool

이더넷 카드 설정 정보를 출력하거나 변경
예) ethtool enp0s3 : 네트워크 인터페이스 정보를 출력
ethtool -s enp0s3 speed 1000 duplex full autoneg off : 설정을 변경

ping(packet internet groper)

인터넷 제어 메시지 프로토콜인 ICMP(Internet Control Message Protocol)을 이용하여 네트워크 연결을 확인할 수 있는 명령. 원격의 호스트와 서로 연결이 되어있는지 확인하고, 패킷을 보내고 받는 시간으로 네트워크 장애 여부도 판단할 수 있다.
예) ping -c 4 localhost : localhost에 기본 64바이트 메시지 4개의 패킷을 전송한다.

traceroute

패킷이 특정 호스트까지 라우팅되는 과정을 출력하는 명령. 라우팅 과정에 장애가 있을 경우에 위치를 파악할 수 있다.
예) traceroute www.ihd.or.kr : 라우팅 과정을 출력

cf. * 표시는 장비에서 timeout 현상이 발생한 것을 의미하며, 최근에는 네트워크 부하가 늘어나는 관계로 ping이나 traceroute 관련 프로토콜인 ICMP를 차단하는 곳이 많아지고 있다.

nslookup

DNS(Domain Name Server)를 이용하여 도메인이나 IP를 조회하는 명령이다. 대화형으로도 조회가 가능함.
예) nslookup exam.ihd.or.kr : 현재 설정된 네임 서버 정보와 함께 IP주소를 출력
nslookup -type=mx naver.com : 메일 서버 설정에 대한 정보를 출력

dig

도메인명(FQDN; Fully Qualified Domain Name)으로 정보를 조회하는 명령
예) dig www.ihd.or.kr : IP주소 정보를 출력
dig ihd.or.kr MX : 메일 서버 정보를 출력
dig -t ns ihd.or.kr : 네임 서버 정보를 출력

host

도메인 명으로 정보를 조회하는 명령
예) host ihd.or.kr : IP주소 정보를 출력한다.
host -v ihd.or.kr : IP주소 정보를 자세히 출력한다.

hostname

호스트 네임을 출력하거나 설정하는 명령
예) hostname : 설정되어있는 호스트명을 출력한다.
hostname -f : 호스트에 설정된 FQDN을 출력한다.
hostname www.ihd.or.kr : 호스트 네임을 설정한다.

네트워크 관련 파일 및 디렉터리

  1. /etc/sysconfig/network-scripts
    네트워크 인터페이스 환경설정과 관련된 파일과 스크립트가 저장되는 곳.

    보통 네트워크 인터페이스 파일은 ifcfg-네트워크장치명으로 생성된다.

  2. /etc/resolv.conf
    시스템에서 사용하는 네임서버(DNS 서버)를 설정하는 파일. CentOS7 버전부터는 위에서 언급한 네트워크 인터페이스 파일에서 지정한다.

    nameserver은 현재 사용중인 DNS서버의 IP주소.
    search 호스트+도메인으로 사용할 도메인 명을 지정해둔 것이다. 거의 모두 호스트명과 도메인 명을 함께 사용한다. 하지만 특별하게 호스트명만 사용되었을 때 사용하게될 기본 도메인명을 의미하는 것이다.
    예를 들어 search abc.com 이라고 가정하자. 그럼 "telnet 호스트명"과 같이 "telnet www"라고 하였을 경우에 자동으로 "telnet www.abc.com"으로 인식하는 것이다. (출처)

  3. /etc/hosts
    DNS 서버 이전에 많이 이용된 파일. IP주소와 호스트명을 매핑시켜 데이터베이스처럼 사용.
    자주 이용하는 IP주소에 별칭을 설정하여 접속을 쉽게하거나 로컬 시스템에 가상 도메인을 부여하여 도메인 기반의 실습을 할 수 있다.

    오른쪽 필드의 별칭으로 왼쪽 필드의 ip에 연결될 수 있다.

profile
Curious for Everything

0개의 댓글