Wisdom’s Cloud

[LINUX] 9. 네트워크 관련 설정과 명령어 본문

LINUX/Beginner

[LINUX] 9. 네트워크 관련 설정과 명령어

지혜로운지혜쓰 2021. 1. 30. 11:03
네트워크 관련 필수 개념
  • TCP/IP: 컴퓨터끼리 네트워크상으로 의사소통하는 약속을 '프로토콜'이라고 부르는데, 그중 가장 널리 사용되는 프로토콜의 종류 중 하나다. 통신의 전송/수신을 다루는 TCP(Transmission Control Protocol)와 데이터 통신을 다루는 IP(Internet Protocol)로 구성된다.

  • 호스트 이름도메인 이름: 호스트 이름은 각각의 컴퓨터에 지정된 이름을 말한다. 도메인 이름(=도메인 주소)은 hanbit.co.kr과 같은 형식으로 표기하며 kr은 한국, co는 회사, hanbit은 단체/회사 이름을 의미한다.

  • IP 주소: 각 컴퓨터의 랜 카드(=네트워크 카드)에 부여되며 중복되지 않는 유일한 주소다. 즉, 네트워크에 연결된 모든 컴퓨터는 고유가 IP 주소가 있으며, 이는 서로 다르기 때문에 특정 컴퓨터의 IP 주소를 알면 그 컴퓨터가 전 세계 어디에 있든지 접속할 수 있다는 개념이다. 4바이트로 이루어져 있으며 각 자리는 0~255까지의 숫자가 올 수 있고, 모든 컴퓨터에서 자기 자신을 의미하는 IP 주소는 127.0.0.1이다.

  • 네트워크 주소: 같은 네트워크에 속해 있는 공통 주소다. 예를 들어 Server의 IP 주소는 192.168.111.100, Server(B)는 192.168.111.200, Client는 192.168.111.131, 호스트 컴퓨터는 192.168.111.1이다. 이 네 대의 컴퓨터는 같은 네트워크에 있으며 서브넷 마스크는 C 클래스(255.255.255.0)를 사용하므로 공통된 네트워크 주소는 앞 3자리인 192.168.111.0이 된다.

  • 브로드캐스트 주소: 내부 네트워크의 모든 컴퓨터가 수신하는 주소를 말한다. 현재 주소의 제일 끝자리를 255로 바꾼 주소다. (C 클래스의 경우)

  • 게이트웨이: 내부 네트워크를 외부로 연결하기 위한 컴퓨터 또는 장비다. 게이트웨이에는 내부로 향하는 문과 외부로 향하는 문이 있어야 하므로, 두 개의 네트워크 카드가 장착되어 있어야 한다. 게이트웨이를 별도로 추가하는 명령어 형식은 다음과 같다.

# route add default gw 게이트웨이주소 dev 장치이름
  • 넷마스크클래스: 넷마스크는 네트워크의 규모를 결정한다. 여기서는 사설 네트워크에서 C 클래스를 사용하므로 넷마스크를 255.255.255.0으로 한다. 따라서 192.168.111.0~192.168.111.255까지 256개의 IP 주소를 사용할 수 있지만, 그중에서 네트워크 주소(192.168.111.0), 브로드캐스트 주소(192.168.111.255), 게이트웨이 주소(192.168.111.2)를 제외하면 총 253대의 컴퓨터를 네트워크 내부에서 연결할 수 있다.

  • DNS 서버 주소: DNS(Domain Name Server) 서버는 인터넷 사용 시 www.daum.net과 같은 URL을 해당 컴퓨터의 IP 주소로 변환해주는 서버 컴퓨터를 말한다. DNS 서버 주소의 설정 파일은 /etc/resolv.conf며, 내용 중에 'nameserver DNS서버IP' 형식으로 설정되어 있다.

 

 

리눅스에서의 네트워크 장치 이름
  • 랜 카드가 리눅스에 장착되었을 때 CentOS 8을 설치하면 자동으로 이 장치의 이름을 ens160으로 인식한다. 이 랜 카드의 이름은 앞으로 네트워크 정보를 파악하거나 네트워크를 정지 또는 가동할 때 자주 사용한다.

# ifconfig ens160     → 네트워크 설정 정보 출력
# ifup ens160     → 네트워크 장치 가동
# ifdown ens160     → 네트워크 장치 정지

 

 

중요한 네트워크 관련 명령어
  • nmtui: Network Manager Text User Interface의 약자로, 네트워크와 관련된 작업 대부분은 이 명령을 기반으로 실행할 수 있다. (자동 IP 주소 또는 고정 IP 주소 사용 결정 / IP 주소, 서브넷 마스크, 게이트웨이 정보 입력 / DNS 정보 입력 / 네트워크 카드 드라이버 설정 / 네트워크 장치 설정)

  • systemctl start/stop/restart/status NetworkManager: 네트워크 설정을 변경한 후 변경된 내용을 시스템에 적용시키는 명령이다. 그러므로 nmtui 명령을 실행한 후 또는 직접 ifcfg-ens160 파일을 편집한 후에는 꼭 systemctl restart NetworkManager 명령을 실행해야 한다고 기억하면 된다. 

  • ifup 장치이름: 해당 장치를 작동시키는 명령이다. 만약 네트워크 장치가 장착되었으나 작동하지 않는다면 이 명령어로 네트워크 장치를 작동시킬 수 있다.

  • ifdown 장치이름: ifup과 반대로 네트워크 장치를 끄는 명령이다.

  • ifconfig 장치이름: 해당 장치의 IP 주소와 관련 정보를 출력하는 명령어다.

  • nslookup: DNS 서버의 작동을 테스트하는 명령어다.

  • ping IP 주소 또는 URL: 해당 컴퓨터가 네트워크상에서 응답하는지 테스트하는 간편한 명령어다. 즉, 상대 컴퓨터가 아무런 이상 없이 작동되는지를 네트워크상에서 체크할 때 주로 사용된다.

 

 

네트워크 설정과 관련된 주요 파일
  • /etc/sysconfig/network: 네트워크의 기본 정보가 설정되어 있는 파일이며 네트워크 사용 여부가 써 있다.

  • /etc/sysconfig/network-scripts/ifcfg-ens160: ens160 장치에 설정된 네트워크 정보가 모두 들어 있는 파일이다.

  • /etc/resolv.conf: DNS 서버의 정보와 호스트 이름이 들어 있는 파일이다.

  • /etc/hosts: 현재 컴퓨터의 호스트 이름과 FQDN이 들어 있는 파일이다.

 

 

[실습 1] nmtui 명령어 및 이와 관련된 설정 파일을 확인해보자.

  step 0 초기화한 Server를 실행하고 root 사용자로 접속하자.

 

  step 1 nmtui 명령을 입력해서 IP 정보 등을 확인해보자.

1. Tab 또는 화살표 키, Enter를 사용하여 [연결 편집]을 선택하고 [ens160]을 선택하여 네트워크 정보를 확인한다.

 

  step 2 관련 파일을 확인해보자.

1. "cat /etc/sysconfig/network" 명령을 입력해 network 파일의 내용을 확인한다. 

* 아무 것도 안 써져 있거나 'NETWORKING=YES'라고 된 것은 네트워크를 사용하겠다는 의미며, #은 주석이다. *

 

2. 이번에는 "cat/etc/sysconfig/network-scripts/ifcfg-ens160" 명령을 입력해 ifcfg-ens160 파일을 확인한다.

* nmtui 명령을 실행해서 확인했던 정보의 대부분이 이 파일에 들어 있는 것을 확인할 수 있다. *

 

3. "vi /etc/resolv.conf" 명령을 입력해 resolv.conf 파일에 DNS 서버를 추가로 입력한다. 마지막 행에 "nameserver 168.126.63.1"을 추가하면 된다.

* 이렇게 하면 처음에 나온 DNS 서버인 8.8.8.8이 작동하지 않더라도

두 번째 DNS 서버인 168.126.63.1을 사용하게 된다.

168.126.63.1과 168.126.63.2는 KT(한국 통신)에서 제공하는 DNS 서버로,

전 세계 어디서든 이 주소를 사용해도 된다. *

 

4. "systemctl restart NetworkManager" 명을 입력한 후 다시 network 파일의 내용을 확인한다.

* 주의할 점은 systemctl restart NetworkManager 명령 후

다시 ifcfg-ens160 파일에 설정된 내용으로 변경된다는 것이다.

그러므로 영구적으로 DNS 설정을 변경하고 싶다면

nmtui 명령으로 DNS를 변경하거나 직점 ifcfg-ens160 파일을 편집해야 한다.

 

  step 3 인터넷이 안 될 경우 DNS 서버 고장 때문인지 아니면 다른 문제 때문인지 확인해보자.

1. Firefox 웹 브라우저를 선택한 후 www.natecom에 접속한다. 별 문제가 없다면 정상적으로 접속될 것이다.
2. vi 에디터나 gedit으로 /etc/resolv.conf 파일을 열어서 8.8.8.8을 100.100.100.100으로 고쳐 DNS 서버에 문제를 발생시킨다.
3. 다시 www.nate.com에 들어가보면 한참을 기다려도 접속이 안 될 것이다.
4. 터미널에서 nslookup 명령을 입력하면 프롬프트가 >로 바꾼다. server 명령을 입력해서 나오는 결과가 현재 Server에 설정된 DNS 서버 주소다.
5. 현재 설정된 DNS 서버 주소가 응답하지 않기 때문에 www.nate.com을 입력하면 오류 메시지가 나온다.
6. "server 168.126.63.1" 명령을 입력해 DNS 서버 주소를 변경하고 다시 www.nate.com을 입력한다.

* 이와 같이 nslookup 명령을 사용해 DNS 서버 주소를 변경한 후 네트워크가 잘 응답한다면

/etc/resolv.conf 파일에 설정된 DNS 서버에 문제가 있는 것이며,

그 외 네트워크 설정에는 문제가 없는 것이다. exit 명령을 입력해서 nslookup을 종료한다. *

 

7. 다시 vi 에디터나 gedit으로 /etc/resolv.conf 파일에 방금 정상 작동을 확인한 KT의 168.126.63.1을 입력한 후 저장한다. 그리고 웹 접속이 정상적으로 되는지 확인한다.

 

 

네트워크 보안을 위한 SELinux
  • SELinux(Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생했으며, 시스템에서 보안에 영향을 미치는 서비스, 권한 등을 제어할 수 있다.

  • SELinux 환경에서는 해커가 어떤 경로로 시스템 침입에 성공하든, 침입한 경로의 애플리케이션 사용 이상의 권한을 얻지 못한다. 예를 들어 FTP 서버의 경로로 침입할 경우 FTP와 관련된 디렉터리나 파일 외에는 다른 서버에 접근할 수 없으므로 해킹에 대한 피해를 FTP 서버만으로 제한할 수 있다. 즉, 만약의 사태가 발생해도 피해를 최소화할 수 있다.

  • SELinux의 사용 여부는 강제, 허용, 비활성이라는 3가지 레벨 중 선택할 수 있으며, 설정 파일은 /etc/sysconfig/selinux 파일이다. /etc/sysconfig/selinux를 직접 편집하지 않고 system-config-selinux 명령을 실행하여 설정할 수 있으며, CentOS 8을 설치하면 강제로 기본 설정되어 있다.

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