인터넷, 네트워크, 서버

woom·2023년 7월 6일
0

Linux

목록 보기
9/14
post-thumbnail

출처 : 생활코딩 - Linux


📕 인터넷

  • 서버에 접속하는 방법 1. domain주소(www.google.com) 2. ip주소(172.217.175.78 : ping google.com하면 나옴)
    • ping: host(google)로 패킷을 보내고 응답 시간을 측정하기 위한 명령
    • 명령을 실행하면 도메인 이름을 해당 도메인에 연결된 IP주소로 변환 후 IP주소로 패킷을 보내고 호스트로부터 응답 받아
    • 네트워크 연결 상태 확인하고 호스트 간의 응답시간을 추적하는데 유용
    • DNS서버 : 도메인 주소를 IP주소로 변환
  • 나의 ip주소 알아내기
  1. ip addr (inet이 나의 ip주소)
  2. 웹브라우저에 ipinfo/io/ip 입력하면 나왕
  • 리눅스에서는 curl ipinfo.io/ip 입력하면 확인 가능
    • curl: 데이터 전송 도구로, URL을 통해 다양한 프로토콜로 데이터를 보내고 받을 수 있음(HTTP GET요청 보내고 응답 확인)

💡 curl로 검색한 ip주소와 addr로 검색한 ip주소가 다른 이유

  • 10.0.2.15/24 & 122.99.192.238
    • addr: 컴퓨터가 실질적으로 가지고 있는 ip주소(실제 ip)
    • curl: 온라인 서비스 입장에서 접속한 컴퓨터가 어떤 ip주소인지 확인 한것(결과 ip, 외부사용ip)
    • 인터넷을 사용하기 위해 계약한 통신사에서 ip를 제공해줌(공유기 router를 통해서 하나의 ip로 여러대의 컴퓨터 사용 가능)
  • 즉 통신사에서 제공해준 ip는 라우터의 ip(대표번호)야
    • 122.99.192.238 : public address(공인)
  • 우리는 사설ip(내선번호)를 사용하는 것 (외부에 공개되지 않고 자체적으로 사용 불가)
    • 10.0.2.15/24 : private address(사설)

📙 apache 웹서버

  • client(웹 브라우저: chrome, firefox)가 request하면 web server가 처리 결과 response
    • web server(Apache, nginx, IIS)

🐣 install

  • sudo apt-cache search apache : apache관련 애플리케이션 검색(시스템의 패키지 캐시에서 apache와 관련된 모든 패키지 검색)
    • 설치하기 전에 업데이트 필수!!
    • sudo apt-get update;
  • 설치: sudo apt-get install apache2
    • 실행: sudo service apache2 start
    • 끄기 : stop
    • 껐다 켜기 : restart
  • htop으로 프로세스 리스트 확인
    • f4 filter이용해서 apache(수많은 접속이 들어올 수 있는 프로그램으로 접속을 분산해서 처리하기 위해서 여러개의 apache 웹 서버가 자동으로 실행됨)검색

📌 shell환경에서 웹브라우징 할 수 있는 도구 : elinks(웹브라우저)

  • sudo apt-get install elinks

    • elinks
    • url에 주소 입력(ex. google.com)
    • 홈페이지 접속 가능
    • 검색가능(입력란 클릭 후 엔터)
    • q : exit
  • elinks http://10.0.2.15/ : 내 서버로 이동

    • 웹서버를 실행시켜서 자신이 가지고 있는 ip로 접속해서 자신의 웹서버에 자신의 웹브라우저가 접속하는 것에 성공

📌 localhost(자신의 컴퓨터에 존재하는 웹서버)

  • 하나의 컴퓨터에서 웹서버와 웹브라우저를 설치해서 자신의 서버에 요청과 응답하는 방식으로 실행
    • 127.0.0.1 : 자기 자신을 가리키는 ip(항상 바뀌지 않고 항상 존재)
    • 10.0.2.15는 어떤 네트워크에 접속했냐에 따라 바뀔 수 있음
    • elinks http://localhost
    • elinks 127.0.0.1
    • elinks http://10.0.2.15/111
    • 모두 내 서버로 이동하는 것(ip를 몰라도 접속 가능!!)

🐣 configuration (동작 환경설정)

  • cd /etc : 프로그램이 어떻게 동작할 것인가에 대한 설정들이 저장되어 있는 곳
    • ex. apache2에 대한 설정파일
    • nano apache2.conf 에 들어가보면 환경설정하는 파일 확인 가능
    • sites-enabled에 들어가보면 000-default.conf 파일의 실제 내용은 ../sites-...에 있다
    • nano 000-default.conf 에 들어가보면 /var/html 확인 가능
    • 들어가보면 index.html확인 가능
    • index.html을 index.html.bak으로 이름 변경
    • nano index.html해서 작성 후 elinks 로 index.html 들어가보면 확인 가능

💡 정리

사용자의 접속이 들어왔을 때 웹 서버는 서버컴퓨터의 어떤 스토리지(hdd, ssd)의 어디에서 사용자가 요청한 파일(index.html)을 뒤질것인가를 etc/apache2 디렉토리 안에있는 여러가지 설정파일들을 참고해서 뒤짐. 그리고 거기에 있는 파일을 읽어서 웹브라우저에게 보내줌.
( /etc/apache2/sites-enabled/000-default.conf에 들어가보면 DocumentRoot가 /var/www/html로 설정 되어 있기 때문에 이 디렉토리에 있는 파일을 웹서버가 찾아서 응답함 - 환경설정을 통해 동작 방식 변경 가능)


🐣 log (access, error)

  • apache 웹서버가 동작할 때 사용자가 필요한 정보를 error.log 와 access.log 파일에 기록하겠다.
    • 저장되어 있는 위치 : /var/log/apache2/
  • access.log: 웹 서버에 접속할때마다 접속한 사람의 정보가 추가됨
    • tail -f /var/log/apache2/access.log : access.log의 실시간 정보를 확인하겠다
  • error.log: apache 웹 서버에 특정한 에러가 있을 때 추가됨

📒 원격제어 ssh

  • SSH Client(client)에 명령어를 입력해서(rm, ls 등) SSH Server(server)에게 전달하면 SSH Server가 설치되어 있는 컴퓨터에게 명령어를 전달(request)
  • 컴퓨터가 동작된 결과를 SSH Server에게 돌려주면 SSH Server가 SSH Client에게 응답하고 SSH Client 화면에 표시됨
    => 이를 통해 SSH Client가 SSH Server를 원격으로 제어가능
  • SSH 삭제 설치 참고만 하세요(기본적으로 ssh는 설치되어 있기 때문에 할 필요 없음)
    • sudo apt-get purge openssh-server openssh-client : purge - 환경설정 파일까지 삭제됨(remove: 프로그램만 삭제됨)
    • sudo apt-get install openssh-server openssh-client : openssh(ssh와 관련된 여러가지 프로그램을 제공), openssh-server(구체적인 ssh서버의 이름 ex. apache 웹서버와 같아)
    • 설지되면 sudo service ssh start
    • 실행되는지 확인 : sudo ps aux | grep ssh : 이름이나 명령에 ssh가 들어가는 실행중인 모든 프로세스(ps aux) 나열
  • ssh client에서 원격제어를 통해 ssh server에 접속
    • ssh egoing@192.168.0.65 : ssh 접속하고자 하는 아이디@컴퓨터 를 통해 원격제어 가능
    • ssh : openssh-client를 실행시키는 명령어

📗 포트

  • client에서 server에 연결하고 데이터를 교환할 수 있도록 하는 약속된 문(0~65535)
    • 0~1024 : well-known port(표준처럼 사용하는 통신시스템)
    • 그 외: 특별한 프로그램 만들어서 하나 사용하면 돼
  • ssh -p 22 egoing@192.168.0.65 : 포트번호 22를 사용하여 ip주소에서 지정된 호스트에 대한 SSH 연결을 해라(원격실행)

    • ssh server 의 기본포트: 22
    • web server 의 기본포트: 80
  • 포트 변경 가능 : sudo nano /etc/ssh/sshd_config에서 설정된 포트번호 바꾼 후

    • sudo service ssh restart : 껐다 키면 변경 완료
    • ssh client에서 ssh -p 바꾼포트번호 egoing@192.168.0.65 하면 연결됨

🐣 포트포워딩 소개

  • 포트포워딩 : 특정 포트로 접속이 들어오면 특정한 컴퓨터로 포트를 전달한다.

    • 사용자가 공유기(public ip)에 특정한 포트로 접속하면 공유기가 특정한 컴퓨터(private ip)로 전달
    • ex. 사용자가 211.46.24.37:9000(9000번 포트로 해당 ip의 라우터로 회선 도착) -> 라우터의 9000번 포트는 192.168.0.4:80 (해당 컴퓨터의 80포트로 가라) 로 설정
  • default gateway: 공유기가 내부적으로 통용되는(공유기에 연결된 컴, 노트북, 폰) ip를 가지고 있어야 함

    • ip route
    • default via : default gateway의 ip

profile
Study Log 📂

0개의 댓글