티스토리 뷰

* 리눅스 네트워크 관련 명령어를 공부하기 위한 배경지식이기 때문에 네트워크 개념은 간단하게 알아볼 것이다.

* 필자가 공부한 책 : 이것이 리눅스다 [우재남. 한빛미디어]

 

TCP/IP

- 가장 널리 이용되는 프로토콜의 종류 중 하나

(*프로토콜 : 컴퓨터끼리 네트워크 상으로 의사소통하는 양식과 규칙의 체계. )

- 통신의 전송/수신을 다루는 TCP(Transmission Control Protocol)

- 데이터 통신을 다루는 IP(Internet Protocol)

 

호스트 이름(host name)과 도메인 이름/주소(domain name)

- 호스트 이름 : 각각의 컴퓨터에 지정된 이름

- 도메인 이름 : domain.co.kr과 같은 형식으로 표기. 

- 호스트 이름이 this이고 도메인 이름이 domain.co.kr 이면, 전체이름은 this.domain.co.kr 로 붙여 부른다. 이를 FQDN(Fully Qualified Domain Name)이라고 한다. 

- 같은 회사(도메인)에서 this.domain.co.kr이라는 호스트(=컴퓨터)는 중복되지 않는다.

 

IP주소

- 각 컴퓨터의 랜카드(네트워크 카드)에 부여되며, 중복되지 않는 유일한 주소.

- 네트워크에 연결된 모든 컴퓨터는 고유한 IP주소가 있다.

- 특정 컴퓨터의 IP주소를 알면 그 컴퓨터에 접속할 수 있다. (사설 IP주소 예외)

- 4바이트로 이루어져있고, 각 자리는 0~255의 숫자가 올 수 있다. 

- 여기서 다룰 것은 IPv4이다. 

 

네트워크 주소

- 같은 네트워크에 속해있는 공통 주소

 

사설 네트워크(private network)

사설 네트워크란, 외부와 분리된 내부의 별도 네트워크이다. 주로 공인된 IP주소가 부족할 때 사용한다. 

192.168.xxx.yyy의 주소 영역은 사설 네트워크의 주소이다.

 

브로드캐스트 주소 

- 내부 네트워크의 모든 컴퓨터가 수신하는 주소.

- 현재 주소의 제일 끝자리를 255로 바꾼 주소이다. (C클래스일 때) (xxx.xxx.xxx.255)

- broadcast, 즉 방송하듯이 모든 컴퓨터가 들을 수 있는 주소라고 생각하자

 

게이트웨이(Gateway)

- 외부 네트워크로 나가기 위한 통로

- 내부 네트워크를 외부로 연결하기 위한 컴퓨터 또는 장비.

- 내부 네트워크에 있는 컴퓨터끼리 통신할 경우 외부로 나갈 필요가 없으므로 게이트웨이가 필요 없다.

- 게이트웨이에는 네트워크 카드가 2개 필요하다. 내부로 향하는, 외부로 향하는 문(네트워크 카드) 두 개.

 

게이트웨이를 별도로 추가하는 명령어

# route add default gw 게이트웨이주소 dev 장치이름

 

넷마스크와 클래스

- Netmask : 네트워크의 규모를 결정한다.

- 필자는 사설 네트워크에서 C 클래스를 사용하므로 넷마스크를 255.255.255.0으로 한다. (맨 끝의 번호로 기기의 IP주소를 결정한다.)

 

네트워크 클래스

A클래스 : 255.0.0.0         -> 2^24개의 IP주소를 사용할 수 있다. = 2^24대의 컴퓨터를 네트워크 내부에서 연결할 수 있다.

B클래스 : 255.255.0.0      -> 2^16개의 IP주소를 사용할 수 있다. = 2^16대의 컴퓨터를 네트워크 내부에서 연결할 수 있다.

C클래스 : 255.255.255.0   -> 2^8대(256대)의 컴퓨터를 네트워크 내부에서 연결할 수 있다.

 

DNS 서버 주소

- 인터넷 사용시 www.google.com과  과 같은 URL을 해당 컴퓨터의 IP주소로 변환해주는 서버 컴퓨터를 말한다.

- DNS서버(=네임서버)의 주소를 사용하지 않거나, 잚소 입력되어 있으면, 웹 사이트에 정상적으로 접속되지 않으므로 올바른 정보를 입력해야 한다.

- 설정 파일은 /etc/resolv.conf 이고, 내용 중에 'nameserver DNS서버IP' 형식으로 설정되어 있다.

- VMware를 이용하면 VMware가 게이트웨이, DHCP 서버, DNS 서버의 역할을 모두 가상으로 제공한다.

 

nslookup

DNS서버의 작동을 테스트하는 명령어

 

DNS서버의 역할

URL 이름을 IP주소로 변경하는 것.

예를 들어 https://www.google.com을 을 입력하면 바로 구글 홈페이지로 접속되는 것이 아니라 /etc/resolv.conf 파일에 설정된 DNS서버에게 해당 URL의 IP주소를 물어본다. 그리고 그 IP주소의 컴퓨터로 접속하는 것.

 

왜 이런 과정을 거치는가? 

네트워크 상의 컴퓨터를 구분할 때 IP주소만이 중복되지 않는 유일한 식별자이기 때문!

 

만약 DNS서버가 고장난다면, URL을 사용해서는 웹 서버에 접속할 수 없다.

 

리눅스에서의 네트워크 장치 이름

랜카드가 리눅스에 장착되었을 때 centOS 8을 설치하면 자동으로 이 장치의 이름을 ens160으로 인식한다. 

 

이 랜카드의 이름은 네트워크 정보를 파악하거나 네트워크를 정지 또는 가동할 때 자주 사용하므로 ens160을 익숙하게 생각하자.

 

해당 장치의 IP주소 관련 정보를 출력하는 명령어

# ifconfig 장치이름(=ens160)

 

해당 장치를 작동시키는 명령어. 

# ifup 장치이름(=ens160)

 

네트워크 장치를 끄는 명령어

# ifdown 장치이름(=ens160)

 

 

네트워크 관련 주요 명령어

 

nmtui

Network Manager Text User Interface의 약자로, 네트워크와 관련된 작업 대부분은 이 명령어를 기반으로 이루어진다.

- 자동 IP주소 또는 고정 IP 주소 사용 결정

- IP주소, 서브넷마스크, 게이트웨이 정보 입력

- DNS 정보 입력

- 네트워크 카드 드라이버 설정

- 네트워크 장치(ens160) 설정

 

nmtui 명령은 GNOME 그래픽 모드를 제공하지 않는다. 

그래픽 모드로 사용하기 위해서는

gnome-control-center network 

nm-connection-editor 

명령을 사용하자.

 

* 그래픽모드를 지원하지 않는 텍스트모드에서는 nmtui명령을 실행하거나 ifcfg-ens160 파일을 직접 편집하자.

 

systemctl [start/stop/restart/status] NetwrokManager

네트워크 설정을 변경하고나서 변경된 내용을 시스템에 적용시키는 명령어 

nmtui 명령을 실행하거나 ifcfg-ens160파일을 편집한 후에는 꼭 이 명령을 실행해서 적용시키자.

 

 

ping IP주소/URL

[옵션] -c 숫자 : 몇 번 핑 찍을지 지정 (지정 안하면 ctrl+c 눌러서 멈출 때까지 계속 핑 찍음)

해당 컴퓨터가 네트워크 상에서 응답하는지 테스트하는 간편한 방법

ping -c 5 www.google.com  이런식으로 테스트해보자.

 

 

네트워크 설정과 관련된 주요 파일

nmtui 명령을 실행하고 나서 변경되는 관련 파일들이다. 중요한 파일들이므로 꼭 알아두자!

 

/etc/sysconfig/network

네트워크의 기본 정보가 설정되어 있는 파일. 네트워크 사용 여부가 써져 있다.

 

/etc/sysconfig/network-scripts/ifcfg-ens160

ens160 장치에 설정된 네트워크 정보가 모두 들어 있는 파일

 

/etc/resolv/conf

DNS서버의 정보와 호스트 이름이 들어있는 파일

대부분 이거 사용한다.

 

/etc/hosts

현재 컴퓨터의 호스트 이름과 FQDN이 들어 있는 파일

중요 서버 FQDN 몇개를 외우고 있을 때 사용한다.

 

 

 

네트워크 보안을 위한 SELinux

SELinux(Security Enhanced Linux) 는 보안에 취약한 리눅스를 보호하기 위해 만들어졌다.

시스템에서 보안에 영향을 미치는 서비스, 권한 등을 제어할 수 있다.

 

SELinux 환경에서는 해커가 만약 시스템에 침입을 성공한다 하더라도, 침입한 경로의 어플리케이션 사용 그 이상의 권한을 얻지는 못한다.

예를 들어 FTP 서버의 경로로 침입한 경우, FTP와 관련된 디렉터리나 파일 외에는 다른 서버에 접근할 수 없으므로 해킹에 대한 피해를 줄일 수 있다.

 

SELinux 설정 파일 : /etc/sysconfig/selinux

SELinux의 사용 여부  
강제 (enforcing) 시스템 보안에 영향을 미치는 기능이 감지되면, 아예 그 기능이 작동되지 않도록 시스템에서 막는다.
허용 (permissive) 시스템 보안에 영향을 미치는 기능이 감지되면, 허용은 하되 사용 내용이 로그에 남고 화면 상에 출력된다.
비활성 (disabled) SELinux 사용X. 당연히 보안에 취약하다.

필자처럼 공부를 위해 혼자 사용하는 경우엔 비활성으로 해놓아도 상관없지만, 실무에서는 최소 허용 단계까지 해놓는 것이 바람직하다.