■ DNS 

(요약) 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해주는 TCP/IP 네트워크 서비스이다.

(상세) TCP/IP 네트워크에서 사용되는 네임 서비스의 구조이다. TCP/IP 네트워크에서는 도메인이라고 하는 논리적 그룹을 계층적으로 설명할 수 있고, 그 논리적 그룹 명칭인 도메인명을 컴퓨터의 명칭(호스트명)의 일부에 포함시켜 이용하는 방법을 찾고 있다. 도메인 혹은 호스트 이름을 숫자로 된 IP 주소로 해석해 주는 TCP/IP 네트워크 서비스로서, 계층적 이름 구조를 갖는 분산형 데이터 베이스로 구성되고 클라이언트 서버 모델을 사용한다...


■ DNS (hosts 파일은 언제 쓰이는가?)

1. hosts 파일에 자신이 접속하려는 파일이 없으면 

2. 그 때 DNS 서버에 접속해서 ip address를 알아내는 원리이다. 


■ 도메인 구입 

도메인명이 적용되는데 짧게는 5~6 분  길게는 1~2일 정도의 시간이 소요된다. 


■ 서버가 분산되어 있는데 도메인명을 동일하게 사용하고자 한다면? 

서브 도메인을 달리하면 서로다른 ip를 부여받게 된다. 따라서 이러한 방법으로 도메인을 나눠쓸 수 있다. 

client >>>>>>>>> server  요청시 sub 도메인을 이용하게해서 동일한 도메인을 사용하게 할 수 있다. 

tistory.com의 경우에도 tistory.com 앞에 sub 도메인(3차 도메인)  sourceflower를 이용하는 것을 볼 수 있다. 

이렇 듯 onlyone.ga 라는 도메인을 구매했다고 가정해보자.

서버가 세 곳으로 분산되어있을 때 동일한 도메인을 이용하게하는 방법 

news.onlyone.ga

popcast.onlyone.ga

blog.onlyone.ga 로  도메인을 설정 해주면 된다. 


■ 리눅스에서 DNS 서버 주소 확인하기 

# cat /etc/resolve.conf

 name server 내용이 표시된다.


■ 리눅스에서 도메인 주소 확인하기

# host sourceflower.tistory.com


■ DNS 동작 원리 

root DNS 서버는 전 세계에 분산되어 있다. (도메인 name을 한 서버에서만 관리하는 것은 위험)

이러한 root DNS 서버(.com, .ga, .net) 가 hierarchy 구조의 최상위가 되어 하위(sub)계층의 DNS 서버를 알려주게된다. 이렇게 계층적으로 DNS 서버가 동작된다. (각 DNS 서버간 request response가 연속적으로 이루어짐) 


■ hosts 파일 

(역사) DNS 도메인네임시스템이 존재하기 전에는 hosts 파일에 있는 ip를 보고 해당 컴퓨터로 접근하였다.

(요약) hosts 파일은 운영체제가 호스트 이름을 IP 주소에 매핑할 때 사용하는 파일이다.  이 hosts 파일은 플레인 텍스트 파일이며 전통적으로는 hosts 라는 이름을 사용한다. 

(상세) 이 hosts 파일에는 여러 줄이 올 수 있으며, 이 줄의 첫 문자 필드에는 IP 주소가, 그 다음에는 하나 이상의 호스트 이름이 위치한다. 각 필드는 흰 공백 탭으로 구별되는데, 역사적인 이유로 탭이 선호되지만 공백도 사용된다. 주석 줄을 포함할 수도 있는데, 해시 문자(#)를 줄의 처음 위치에 놓으면 된다. 
파일 내의 완전히 비어있는 줄들은 무시된다. 이를테면 일반적인 hosts 파일은 다음과 같다.
127.0.0.1  localhost loopback 
::1 localhost 


■ host 파일에 접근해서 수정 해보자. (Linux 에서 수행)

/etc밑에 hosts 파일이 있다.

# cd /etc

# ls -l

# nano hosts

==========================

127.0.0.1    google.com

192.168.0.54    sourceflower.tistory.com

==========================

# elinks google.com    

접속을 시도한 컴퓨터(호스트)의 서버를 바라본다. (자신의 컴퓨터에 서버를 띄워놨다고 가정)

# elinks naver.com             // 쉘 상에서 사용할 수 있는 브라우저

192.168.0.54 (private ip)의 서버를 바라본다.


■ hosts 파일은 언제 쓰이는가?

1. hosts 파일에 자신이 접속하려는 파일이 없으면 

2. 그 때 DNS 서버에 접속해서 ip address를 알아내는 원리이다. 

 

■ SSH 

- (요약) ssh 란 secure shell의 약어로 PGP와 마찬가지로 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템이다. 따라서 LAN 상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다. 

- (상세) 인터넷상에서 두 호스트(Host) 사이의 통신 암호화 관련 인증 기술들을 사용하여, 안전한 접속과 통신을 제공하는 프로토콜을 의미한다. 이 프로토콜은 보안에 취약점을 가지고 있는 프로토콜, 즉 원격 로그인(rlogin), 원격 명령 실행(rsh), 원격 파일 복사(rcp), 원격 접속 서비스(telnet), 파일 전송용 프로토콜(ftp) 등을 대체하여 사용되며, 임의의 포트에 대해 안전한 제공하고 있다. 

원격 접속에서 가장 중요한 부분이 인증 방법이네, 기본적으로는 사전에 미리 약속된 공개키를 사용하여 전자서명을 통해 인증을 하지만, 공개키를 사용한 전자 서명에 의한 인증이나 다른 인증 방법들이 사용될 수 없는 경우에는 전통적인 인증 방식인 패스워드를 사용하여 인증을 하게 된다.  이러한 경우에도 호스트사이의 모든 통신이 암호화에 의해서자동 보호되기 때문에 어떠한 네트워크 공격으로도 패스워드가 노출되지 않는다. 

 

■ ssh client 

- SSH 와 Telnet 을 사용하기 위한 터미널 소프트웨어이다.

- secureCRT의 경우, 원래 윈도우버전만 있었지만 현재, mac OS 버전과  Linux 버전도 존재한다. 

putty, secureCRT , MobaXterm 등이 있다. 


ssh server 

- ssh client 가 설치된 Host가 존재한다면 그의 counter partner 인 Host에 ssh server가 설치되어있어야만 ssh를 이용한 통신이 가능하다.

- 오늘날은 UNIX system에 기본적으로 ssh server가 설치 되어있다. 

- ssh 의 기본 포트는 22번이다.  (※ 웹 서버의 기본 포트: 80번을 리스닝(listening) 중이다.)

- 따라서 ssh client에서 접속 시 따로 22번 포트를 입력하지않아도 22번 포트가 listening 중이므로 ssh server의 22번 포트로 접속 하게된다.


■ Linux 우분투 버전에서 ssh server 설치

우선 설치된 패키지 목록을 확인해보자.

 $ dpkg -l 

너무 많은 목록이 나오므로 ssh 관련 목록만을 확인해보자.

 $ dpkg -l | grep ssh 

설치되어 있지 않은 것을 확인 하였으므로 설치를 해보자.

 $ sudo apt-get install openssh-server

패키지가 다운로드 되어 자동으로 설치되고 데몬이 동작한다. 

설치과정에 오류가 있다면 여기를 참고하자 >>>>  http://neoguru.tistory.com/58

데몬이 잘 동작하는지 확인하자. 

$ su -root (계정 변경)

# netstat -ntl

=====================================================

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     

ssh 기본포트는 22번

=======================================================

ssh 서버를 재시작 시켜보자.

# /etc/init.d/ssh restart


■ ssh 포트변경

- /etc/ssh 밑의 sshd_config 파일을 열어서 포트를 변경하면 된다. 

# vi /etc/ssh/sshd_config




기승전 >>> 어떤 서버를 설치하더라도configuration 설정 파일이 중요하다.

이 설정 파일의 내용을 customizing 하여 얼마든지 사용가능하기 때문이다. 

 

■ 설정 파일 접근

# cd /etc/apache2

# nano apache2.conf

  Include Optional sites-enabled/*.conf 내용확인

# cd sites-enabled

# nano 000-default.conf

  <000-default.conf 파일내용 시작>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

  <000-default.conf 파일내용 끝>

   ※ ${APACHE_LOG_DIR} 해당 디렉토리 변수 : /var/log/apache2 로 알고있다고 하자.

# cd /var/log/apache2 

# ls -al

access.log와 error.log가 있다.


■ access.log : 접속현황을볼 수 있다.

■ error.log : Apache 서버에 특정 에러가 발생했을때 보면된다.


■ tail

  사용법: tail [option] [filename]

  내용: 기본출력은 파일의 마지막 10줄을 보여준다.

■ tail option 

f : 파일의 마지막 10라인을 실시간으로 계속해서 출력 (주로 log 파일을 모니터링 할 때 사용된다. ) 

F : 파일 변동 시 실시간으로 보여주되 로그파일처럼 특정 시간이 지난 후 파일이 변하게 되면 새로운 파일을 오픈하여 보여준다. 

n : n만큼의 라인을 출력한다.

n+ 숫자 :  (숫자)라인 이후부터 마지막까지 출력


# tail access.log  : (명령어 입력 당시의) access.log 내용의 마지막 10줄을 보여준다.  

# tail -f  access.log : (명령어 입력 시를 기준으로) access.log 내용의 마지막 10줄을 실시간으로 계속해서 보여준다. 


■ 웹서버는 storage(HDD, SSD)에서 어떻게 파일(ex. index.html)을 읽어올까?

client 프로그램 웹브라우저 ( http://127.0.0.1/index.html ) >>> request >>>  웹 서버에 요청을 보내면  

웹서버(프로그램)는 해당 서버 컴퓨터의 HDD, SSD Storage(저장소) 에서 index.html 을 읽어온다.


1. 이러한 일련의 절차는 어떠한 방식에 의해서 진행될까?

일반적으로 /etc/apache2 가 설치된다. 

해당 디렉토리로 들어가서 apache2.conf 라는 설정파일을 열어보자.

# cd /etc/apache2

# cat apache2.conf  (or nano apache2.conf)

파일 내용은 이러하다.

 Include Optional sites-enabled/*.conf        

// 이 디렉토리(sites-enabled) 안에있는 확장자가 conf인 파일들을 모두 읽는다는 내용이다. 

// 결론적으로 중요한 것은 해당 서버의 설정파일에 이러한 정보들이 세팅되어 있다는 것이다. 


2. 그러면 위의 내용에서 명시되어 있듯 site-enabled 디렉토리에 접근해서,

 실제 어떠한 확장자가 conf인 파일들이 있나 확인해보자.

# cd sites-enabled 

# ls -l

내용을 보면 이러한 것이 있다. 

000-default.conf  /sites/enabled/000-default.conf

000-default.conf 파일이 존재하는 실제 경로가 보인다.


3. 해당 디렉토리로 다시 찾아가자 

# cd /site/enabled

# nano 000-default.conf   // 파일을 열람해보자.

내용에 Document Root : /var/www/html 가 있다.


4. 다시 해당 디렉토리로 가자.

# cd var/www/html 

# ls -al

index.html...등 html 파일들이있을 것이다. 


5. 이렇게 설정파일에 설정된 내용을 따라서 특정디렉토리를 찾아가 해당 파일을 읽어온다.      

마지막으로 index.html을 index.html.bak 파일로 변경하고 다시 로컬서버로 접속해보자.

# elinks http://127.0.0.1/index.html

not found가 뜰것이다. 


결론적으로 설정파일에 설정된 내용을 따라서 특정디렉토리를 찾아가 해당 파일을 읽어온다. 

+ Recent posts