본문 바로가기
공부/Linux

리눅스(6)

by 드인 2019. 8. 25.

인터넷, 네트워크 그리고 서버

1. Internet 1

- 통신 : request와 response가 왔다갔다하는 대화

- client : request를 한 컴퓨터

- server : request를 받아서 response한 컴퓨터

- domain name : 서버에 접속하기 위해 사용 ex) google.com

 1) ip address로 변환해서 접속

- ip address : 서버에 접속하기 위해 사용

 1) 리눅스에서 PING google.com

 2) 172.217.25.78 라는 주소 나옴

 3) 붙여넣기로 접속

 - DNS server : domain name을 ip address로 변환해줌

 

2. Internet 2

- 자산의 ip를 알아내는 방법

 1) ip addr

 2) 127.0.01 제외하고 inet이라고 된 곳에서 /앞 부분이 컴퓨터의 IP address

 3) ipinfo.io/ip 주소로 접속하면 컴퓨터의 IP 알려줌(웹브라우저의 경우)

 4) curl google.com 하면 goole.com을 html로 보여줌

 5) curl ipinfo.io/ip (셸 환경에서)

- ip address(컴퓨터에 부여된 실제 ip)와 curl(접속한 컴퓨터가 어떤 ip로 접속했는지 결과적으로 확인)로 조회한 결과가 다름, 같은 경우 실제 ip와 접속 ip가 같은 걸 의미

- 라우터(공유기)라는 장치를 통해 통신사와 하나의 회선 계약을 통해 여러 개에 사용

- public address : 대표 회선, ip addr

- private address : 자체적으로 사용x, 외부 공개x, curl

 

 

웹서버(아파치)

1. intro

 1) google.com/index.html

 2) 웹 서버의 HDD에서 index.html를 찾아 웹브라우저로 전송

- Web brouser : firefox, ie, chrome

- Web server : Apache, ngonx, IIS 

 

2. install

 1) sudo apt-get install apache2

 2) sudo service apache2 start : end, restart 가능

 3) htop -> F4

 4) 이링크스 : 쉘에서 웹브라우저 사용

 5) sudo aot-get install elinks

 6) elinks : URL 입력

 7) ip addr로 ip주소 확인

 8) elinks http://[ip주소]/

- localhost : 웹브라우저가 같은 컴퓨터에 있는 웹서버에 접속, 127.0.0.1

- elinks http://127.0.0.1/  = elinks http://localhost/

 

3. configuration

 1) 10.0.2.15/index.html

 2) 웹 서버에서 Storage에서 있는 어떤 특정 디렉토리에서 index.html를 읽어와서 웹브라우저에게 응답

 3) cd /etc/, cd apache2/, ls -al

 4) nano apache2.conf : 설정 파일에 대한 설명 있음

 5) cd sites-enabled/, ls -l

 6) nano 000-default.conf

 7) cd /var/www/html, ls -al

 8) sudo mv index.html index.html.bak

 9) elinks http://127.0.0.1/index.html -> Not Found

10) sudo nano index.html

11) elinks http://127.0.0.1/index.html -> 위에서 만든 문서 뜸

- 웹페이지를 찾는 최상의 디렉토리 : document root

 

4. log

- 000-default.conf에 /var/www/html으로 되어있기 때문, 수정시 동작하는 방식 달라짐

 1) 000-default.conf에서 ErrorLog {APACHE_LOG_DIR}/error.log : 아파치 웹서버가 동작할 때 오류발생를 기록

 2) cd /var/log/appche2/, ls -al 에서 acees.log 파일

 3) tail -f /var/log/apache2/acess.log : 파일에 대해서 끝에 추가되는 정보를 실시간으로 출력

 4) 404 : 웹서버에 파일 없음, 오류

- log : 서버 프로그램의 공통적으로 가지고 있음 

 5) tail -f /var/log/apache2/error.log : 실행했는데 동작 안됐을 때 확인 

 

 

원격제어 (ssh)

1. intro

- ssh : 원격으로 쉘을 제어

- SSH 클라이언트에 명령어를 입력해서 SSH SERVER가 설치되어있는 컴퓨터 제어 

- 유닉스 계열은 SSH 서버 설치되어 있음

 

2. ssh 2

- sudo apt-get purge openssh-server openssh-client : purge는 환경설정 파일까지 같이 삭제

 1) sudo apt-get install openssh-server openssh-client

 2) sudo service ssh start

 3) sudo ps aux | grep ssh

 4) id addr로 ip 주소 알아냄

 5) du) ssh egoing@[ip주소] -> 원격 제어

 

 

포트 (port)

1. port 1

- ssh 클라이언트 통해 접속

 1) ssh -p 22 egoing@192.168.0.66 -> 접속됨

 2) ssh -p 2222 egoing@192.168.0.66 -> 접속안됨

- web : 80, ssh : 22

- 포트 : 서버 밖 구멍, 특정 번호로 접근하도록 됨

- 클라이언트에서 웹브라우저는 80번 포트를 거쳐 서버에 접속, 포트 번호를 적지 않아도됨

- sudo nano /etc/ssh/sshd_config에서 Port 22를 Port 2222로 바꾸면 다시 서버 접속시 포트 2222 사용

 

2. port 2 : Port forwarding 1

- ISP -> Public ip adresss : 공인IP(라우터의 IP) -> 라우터(공유기) -> private ip adress -> 기기 

- Port forwarding : 라우터의 port를 활용해서 private ip를 통해 접속

ex) 라우터의 9000포트는 private ip : 192.168.0.4:80으로 신호 보내고 받음

- 공유기마다 환경설정이 다름

- default gateway : 공유기가 갖고 있는 ip

 

3. port 3 : Port forwarding 2

 1) ip addr, ifconfig

 2) ip route : default gate의 IP

 3) 브라우저에 default gate의 IP 입력

 4) 관리도구 - 고급설정 - NAT/라우터 관리 - 포트포워드 설정

 5) 내부 IP 주소에 ip addr에서 나온 IP 입력, 규칙이름 : linux love

 6) 외부 보트 9000~, 내부포트 80~ - 추가

 7) curl http://ipinfo.io/ip 에서 나온 주소 : 9000

  ex) 9000 -> ~65:80

 

 

도메인(domain)

1. Domain1 basic

- 컴퓨터 -> DNS S(도메인 네임 시스템 서버) -> IP Adress -> 컴퓨터 

 

2. Domain2 host

- hosts file : 어떤 도메인이 어떤 IP인지를 갖고 있는 파일

- elinks [주소] : 쉘에서 사용할 수 있는 홈페이지

- elinks http://localhost/ 

 1) sudo nano /etc/hosts : 호스트 파일 수정

 2) 127.0.0.1 google.com

 3) cat /etc/hosts

 4) elinks google.com = elinks http://localhost/ 

 - 호스트 파일 : 호스트들의 이름이 각각 어떤 IP를 갖는가를 적어논 것

 

3. Domain3 purchase

 1) cat /etc/resolv.conf 에서 nameserver

  - nameserver : 회사에서 서비스로 제공하는 도메인 네임 시스템 서버 IP, 두번째 nameserver는 백업이나 부하를 분산

  - 도메인의 이름의 체계에 따라서 관리하는 주체가 다름 

 2) freenem : 도메인 사용가능한지 검색, check out에서 구매

 

4. Domain 4 : sub domain

- 도메인 재사용 : egoing.ga -> server1, admin.egoing.ga -> server2, blog.egoing.ga -> server3

-  freenem -> DNS MANAGEMENT for egoing.ga -> 추가 admin하고 ip 주소를 0.0.0.aaa에서 aaa수정

- 서브 도메인에 따라 서로 다른 IP 줄 수 있음

 

5. Domain 5 : DNS principle

 1) dig +trace egoing.ga : dns에게 egoing.ga라는 도메인 IP 의뢰

 - egoing.ga. -> .는 root 도메인

 - root DNS Server 주소 : DNS가 기본적으로 알고 있는 정보

 2) 첫번째 단락 : dig +trace egoing.ga 에서 첫줄부터 root DNS List

 3) 두번째 단락 : .ga를 담당하는 DNS 서버(root dns 서버에게 .ga를 담당하는 DNS 서버 물어봄)

 4) 세번째 단락 : egoing.ga.을 관리하는 DNS 서버(ga DNS 서버에게 egoing.ga.을 관리하는 DNS 서버 물어봄)

 5) 네번째 단락 : egoing.ga DNS 서버의 IP(egoing.ga DNS 서버에게 IP 물어봄)

 - 서브 도메인 등록 : DNS 서버에 IP 를 등록하는 과정

 - back to domain detail -> management tool (도메인 네임 서버 제공, 수정 가능)

 

 

인터넷을 통한 서버간 동기화 (rsync)

1. rsync 1 : basic

- sync : 변경사항이 서로 변경되어 같은 상태 유지, 방향성 있음

- r : remote

- rsync : 원격으로 서로 독립되어 있는 곳에 있는 컴퓨터들끼리 인터넷을 통해서 싱크를 할 수 있게 해주는 프로그램

- 파일 카피, 백업할 때도 쓸 수 있음

 1) mkdir rsync, cd rsync/

 2) mkdir dirl, mv dirl src

 3) mkdir dest

 4) cd src, touch test{1...10} : test1~test10까지 파일 생성, cd ..

 5) rsync -a src/ dest : src 밑에 있는(/) 파일들 동기화, -a는 아카이브 모드로 동작

 6) du) cd dest, rm test10

 10) rsync -av src/ dest

 11) du) touch test11

 12) rsync -av src/ dest : 추가된 test11 전송

 

2. rsync 2 : Remote sync

 1) du) mkdir rsync, cd rsync, mkdir dest

 2) rsync -azP ~/rsync/src/ k8805 : z는 압축, P는 전송되는 상황

 

 

'공부 > Linux' 카테고리의 다른 글

리눅스(5)  (0) 2019.08.23
리눅스(4)  (0) 2019.08.21
리눅스(3)  (0) 2019.08.20
리눅스(2)  (0) 2019.08.11
리눅스(1)  (0) 2019.08.07