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

LeeKyoungChang·2022년 3월 11일
0
post-thumbnail
post-custom-banner

생활코딩 - Linux 을 듣고 정리한 내용입니다.

 

📚 1. Group

스크린샷 2022-03-09 오전 10 53 00

Group은 거의 사용하지 않는다.

 

!! : 직전에 입력한 명령어

 

📚 2. Internet

스크린샷 2022-03-09 오전 11 46 35
  • domain name, Ip address 로 구글 웹에 접근할 수 있다.
  • google.com으로 입력시, ip address로 변환되서 서버에 접속한다.
  • dns server : 세상의 어딘가에 존재한다. 각각 도메인의 ip address를 저장하고 있다.
  • 도메인 네임을 입력시 dns server에 접근한다. 입력한 도메인 네임의 ip address를 발급해준다.

 

ip 설치 : brew install iproute2mac

ip addr 결과

스크린샷 2022-03-10 오전 11 45 12

ip addr : 이 컴퓨터에 부여된 실제 ip이다.
inet 192.168.219.102/24
inet, 현재 나의 노트북 주소이다. 위 주소 이용시 접근가능하다.

 

✔️ 웹에서 ip번호 발급

스크린샷 2022-03-10 오전 11 47 51

ipinfo.io : 사용자가 웹 접속했다는 사실을 알고, 어떤 ip로 접속했는지 분석하고, 나의 ip를 알려준다.

 

✔️ shell환경에서 ip번호를 발급

스크린샷 2022-03-10 오전 11 51 59
  • 서버로부터 자신의 컴퓨터 ip 번호를 발급받는다.
  • curl ipinfo.io : 온라인 서비스 입장에서 접속한 사용자 ip번호를 출력한다. (접속하고나서 ip번호가 발급됨)

 

✔️ ipinfo.iocurl 결과가 다르다?
ipinfo.iocurl결과가 같다면 서비스를 운영할 수 있다.

ipinfo.iocurl결과 다를시

스크린샷 2022-03-10 오후 12 13 03

장비마다 서로 다른 ip를 준다.

  • 통신사 제품 하나를 사용하여 사용료를 절감할 수 있다.
  • public address : curl를 입력시 외부에 있는 address를 알 수 있다.
  • private address : ip addr를 입력시 내부에 있는 address를 알 수 있다.

 

💡 참고

  • 똑같은 wifi, Router를 사용한다면 통신을 할 수 있다.

 

📚 3. Web Server (apache)

리눅스 환경에서 웹 서버를 설치!

google.com로 부터 index.html이 보고 싶다.

스크린샷 2022-03-10 오후 12 23 38
  • 요청이 오면 저장공간을 찾아보며 요청을 분석한다.
  • 수업에서는 Apache 이용하여 동작, 웹 서버 모습 공부
  • ip address를 이용한다.
  • 리눅스를 통해서 서버를 활용하는 방법 중 웹 서버를 사용한다.

 

sudo apachectl start : apachectl 시작

주소 입력 : 127.0.0.1

스크린샷 2022-03-11 오전 10 35 35

 

sudo apachectl stop : apachectl 종료

sudo htop에서 apache 실행 확인 가능

apache : web 서버는 많은 접속이 왔을 때 분석해서 처리하기 위해 여러개의 apache가 자동으로 실행된다. 접속이 많아질 수록 새로운 아파치가 실행되고 접속이 적을 수로 아파치가 없어진다.

 

✔️ elinks
brew install elinks : elinks를 설치

elinks : shell 환경에서 웹 브라우저를 할 수 있는 명령어

스크린샷 2022-03-11 오전 10 46 15 스크린샷 2022-03-11 오전 11 00 06
  • 웹 주소를 입력한다.

 

스크린샷 2022-03-11 오전 11 00 13
  • 다만 elinks 11버전에서 구글 웹 화면이 실행 되지 않는다.

 

q 입력시 빠져나간다.

 

✔️ 테스트
현재 테스트 웹 화면

스크린샷 2022-03-11 오전 11 05 46

 

elinks http://169.254.22.50/ 입력 후 실행

스크린샷 2022-03-11 오전 11 06 00

화면에 있는 똑같은 글자가 나온다.

자신의 ip주소로 접속하여 웹 서버에 웹 브라우저가 접속하였다.

스크린샷 2022-03-11 오전 11 12 07

 

✔️ ip 알아내는 방법

스크린샷 2022-03-11 오전 11 16 27
  • ip addr : 웹 브라우저를 통해서 같은 컴퓨터에 설치된 웹 서버에 접근할 때 ip addr를 이용하여 ip를 알아내서 그 ip로 접속한다.
  • localhost : 자신의 컴퓨터, 서버 컴퓨터에 존재하는 웹 서버에 접속한다. (127.0.0.1 == localhost 자기 자신을 의미한다.)
    (localhost : 도메인 이름이다.)

 

📖 A. configuration

스크린샷 2022-03-11 오전 11 33 33

storage : HDD, SDD
169.25.16.2/index.html 라고 wb가 웹 주소로 요청할 시
ws는 요청한 주소를 보고 index.html 파일을 읽는다. (파일안에 있는 html을 해석한다.)
읽고나서, 웹 브라우저에게 응답한다.

 

✔️ 그런데? 웹 서버는 사용자가 요청한 index.html 파일을 어디서 읽어오는걸까?

  • 웹 브라우저가 접속할 때 /etc/apache2에 있는 여러가지 설정파일들을 참고한다.
  • 사용자 접속이 들어왔을 때 서버 컴퓨터의 설정파일을 통해 요청한 파일을 읽고 웹 브라우저에게 보내준다.
    (서버를 운영할 때, 설정이 존재하며 설정을 어떻게 하냐 따라서 프로그램 동작되는 모습을 바꿀 수 있다.)

 

document root

  • 웹 페이지를 찾는 최상위 디렉터리
  • Apachewww 서버이기 때문에 클라이언트 요청에 대응하는 응답을 반환한다. 이러한 내용을 저장해두는 위치이다.
스크린샷 2022-03-11 오전 11 51 50

 

📖 B. log

스크린샷 2022-03-11 오후 12 09 54

어떤 서버를 설치하든 /etc 하위 디렉터리에 밑에 자신의 이름으로 설정파일이 있고 그 파일을 수정하면 동작하는 방식이 달라진다.

 

✔️ access_log

access_log : 누군가가 웹 서버에 접속할 때마다, 접속한 사람의 정보가 추가된다.

스크린샷 2022-03-11 오후 12 14 23 스크린샷 2022-03-11 오후 12 14 32

tail /var/log/apache2/access_log : 웹 서버 마지막으로 접속한 사람의 정보를 추가된다. (끝에 있는 정보를 추가 됨)
tail -f /var/log/apache2/access_log : 실시간(마지막) 접속한 사람의 정보를 확인할 수 있다.

✏️ 실시간 접속한 사람 정보 확인하기 테스트
curl : 접속 테스트

스크린샷 2022-03-11 오후 12 19 23

 

✔️ error_log
apache web server에 특정한 error가 있을 때 (실행은 시켰지만, 동작하지 않을 때) error_log 파일을 열어서 어떠한 문제가 있는지 확인하면 된다.

tail -f /var/log/apache2/error_log

스크린샷 2022-03-11 오후 12 29 34
  • 마지막에 발생한 오류를 확인할 수 있다.

 

💡 서버 프로그램, 공통적으로 가지고 있는 특성

  • 운영하고 있는 웹 서버에 사용자들이 이용하는 현황을 확인하고 싶을 때, log 파일을 실행(뒤지면) 된다.
  • 그렇기에 이 서버의 log가 어디에 있는지 알아보며 log를 통해 동작 상태를 확인한다.

 

📚 4. 원격제어 ssh

인터넷을 통해 다루는 컴퓨터는 리눅스를 사용한다.

스크린샷 2022-03-14 오전 11 02 50

✔️ Server(Unix 계열)

  • 인터넷을 통해 제어해야하는 서버
  • 원격제어를 해야한다. (원격제어할 시 ssh를 사용해야 한다.)
  • 멀리 떨어져 있는 컴퓨터를 내 앞에 있는 컴퓨터처럼 사용할 수 있다.
  • shell을 통해 제어하는 컴퓨터인경우, ssh를 사용하면 원격제어를 할 수 있다.
  • ssh를 사용하려면 서버와 컴퓨터가 필요하다.

 

✔️ SSH Client ↔️ SSH Server

  • Rm, ls, pwd 등 명령어를 입력할 시 ssh 서버를 제어하게 된다.
  • ssh 서버에게 명령어가 전달되면, ssh 서버는 자기가 설치되어 있는 컴퓨터에게 명령어를 전달한다.
  • 컴퓨터는 동작할 것이고 ssh프로그램에게 결과를 돌려준다.
  • ssh 프로그램을 결과를 ssh client에게 되돌려주고, ssh client 화면에 출력된다.

 

💡 참고
유닉스 계열에서는 대부분 ssh가 설치되어 있다.

 

purge : 강력한 삭제

sudo apt-get install openssh-server : unix에 openssh, ssh 관련된 여러가지 프로그램을 제공하는 프로젝트를 설치한다.
sudo apt-get install openssh-client : 다른 컴퓨터를 원격제어할 때 client가 필요하다.

 

✔️ 클라이언트에서 서버 접근할 때
ssh 접속하고자 하는 컴퓨터 username@접속하고자 하는 컴퓨터 주소
다음, password 입력한다.

이제, 원격 접속하였기에 클라이언트는 접속한 서버의 컴퓨터에서 작업할 수 있다.

스크린샷 2022-03-14 오전 11 17 20

 

📚 5. port

www.naver.com ➡️ www.naver.com:80와 같은 결과로 실행된다.
www.naver.com:8888 ➡️ 80이외 숫자들은 실행되지 않는다.

80 : port 번호

ssh -p 22 leekyoungchang@192.268.0.65 : 원격 접속이 된다.
exit : 원격 접속 종료하기

22 : ssh 번호

✔️ port 번호 구간

스크린샷 2022-03-14 오전 11 37 20

0~1024 port 번호 : 굉장히 유명한 인프라와 같은 통신 시스템 port 구간이다. 많은 사람들이 port 번호를 적지 않아도 웹 접속 가능하도록 하였다. ex) www.naver.com만 입력해도 auto로 80번이 입력된다.
1024~65xxx port 번호 : 특별한 프로그램을 만들어 이 중에 하나를 사용하면 된다. 표준이 아닌 port 번호이다.

 

💡 참고

  • 원격 접속은 굉장히 위험한 행위이다.
  • 웹 서버 port를 바꿀시 다른 서버로 접속하게 할 수 있다.

 

📖 A. port-forwarding

Routerport가 존재하며, 사용자의 컴퓨터에도 port가 존재한다.
port forwarding : 만약, 특정한 port로 접속 요청왔을 때 그 접속을 특정한 컴퓨터로 전달한다.

스크린샷 2022-03-14 오전 11 59 50

ex)
사용자가 211.46.24.37:9000 입력시 router에 접근하게 된다.

  • 9000이란? router에 있는 65xxx개의 port중에 9000port로 접속하였다.

라우터의 설정을 열어서 9000port는 "192.168.0.4로 가라!" 라고 설정을 지정한다.
그럴 시, 9000번으로 접속하면 router는 신호를 192.168.0.4의 컴퓨터 그중에서 80번 port로 보낸다.
192.168.0.4의 주소를 가진 컴퓨터에서는 80port를 가진 웹 서버가 설치되어 있으므로 웹 서버가 동작해서 그 신호를 받아 반대로 라우터를 경유하여 요청한 사용자에게 돌아간다. (돌아서 보냄)
요청 사용자의 컴퓨터에서는 저장되어있는 웹 페이지가 해석해서 출력(실행)된다.

 

💡 참고

  • 공유기에 접속하기 위해서는 공유기가 내부에서는 통영되는 외부에서는 통영되지 않는 ip를 가지고 있어야한다.
  • 공유기 안에서만 통영되는(공유기가 갖고 있는) ip : default gateway
  • 환경설정하는 방법은 회사마다 다르다.
  • 위와 같은 기능이 필요하면 사용하는 공유기 회사의 환경설정 관련된 사용설명서를 보고 따라하면 된다.

 

이제 default gateway를 알아내는 방법에 대해 공부를 한다.

 

📖 B. port-forwarding 2

나의 라우터 번호 (게이트 웨이)

스크린샷 2022-03-15 오전 10 03 31
profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"
post-custom-banner

0개의 댓글