LINUX/생활코딩 강의 정리

[생활코딩 리눅스 강의 정리] 섹션 9. 인터넷, 네트워크 그리고 서버

은재정 2022. 8. 26. 22:53

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다.


인터넷

클라이언트(Client)는 서비스를 요구하는 주체, 서버(Server)는 서비스를 제공하는 주체이다. 클라이언트가 서버에 접속하기 위해서는

  1. 도메인 이름(Domain Name)
  2. IP 주소

두 가지 중 하나를 알아야 한다. 도메인 이름으로 ip 주소를 알기 위해서는 ping 명령어를 이용한다.

 

google.com의 ip 주소는 142.250.196.110

 

도메인 이름을 ip 주소로 바꿔주는 역할을 하는 것은 DNS(Domain Name System) 서버이다. 자세한 내용은 https://en.wikipedia.org/wiki/Domain_Name_System를 참조한다.

 

자신의 ip 주소를 아는 방법으로는 ip addr 명령을 이용하거나 curl로 웹에서 요청을 보내는 방법이 있다. (맥에서는 ip addr 대신 ipconfig getifaddr en0 사용)

 

 

다만 특이한 점은 위 사진에서 보다시피 두 주소가 일치하지 않는다는 것이다. (172.17.0.2 vs 114.202.205.234)

  • ip addr : 내 PC의 실제 ip -> private address
  • curl : 웹 서비스에 접속할 때 보이는 ip -> public address

apache 웹 서버

웹 브라우저를 위해서는 크롬, 파이어 폭스 등이 필요하듯 웹 서버를 위해서는 apache, nginx와 같은 소프트웨어가 필요하다. 웹 브라우저가 나의 웹 서버에 접속할 수 있기 위해서는 도메인 이름과 ip 주소가 필요한데, 도메인 이름을 등록하는 것은 별도의 복잡한 절차가 필요하므로 ip 주소만을 가지고 예시 서버를 구축해보도록 한다.

 

sudo apt-get update
sudo apt-get install apache2
sudo service apache2 start

htop에서 apache2 검색

 

여러 개의 프로세스가 뜨고 있는 까닭은 apache2가 여러 클라이언트의 접속을 위해 다수의 프로세스를 띄워놓은 것이다. 

 

sudo apt-get install elinks
elinks

 

elinks는 쉘을 통해 인터넷 브라우저에 접속할 수 있는 프로그램이다. 아까 ip addr을 통해 얻은 자신의 ip 주소를 입력하여 접속한다. 또는

클라이언트와 서버 컴퓨터가 일치하는 경우, 로컬호스트(localhost, 127.0.0.1)로 접속할 수 있다.

 

아파치가 제대로 실행중이라면 위 사진처럼 보일 것이다. 

 

/etc/apache2/apache2.conf 파일을 통해 configuration을 수정할 수 있다.

 

 

apache2.conf 파일에는 sites-enabled 디렉토리 안에 있는 모든 conf를 포함한다고 나와있고, sites-enabled 디렉토리에는 000-default.conf 파일이 있다. 해당 파일은 DocumentRoot가 /var/www/html 디렉토리임을 명시하는데 이 디렉토리는 웹 사이트에 필요한 정적 파일들을 가지고 있는 최상위 디렉토리이다.

 

/var/log/apache2 디렉토리는 access.log error.log 파일을 가지고 있다. access.log 파일은 클라이언트에서 보내온 리퀘스트 기록을 저장한다. tail -f 명령을 사용해서 실시간으로 접속 기록을 모니터링 할 수 있다. error.log 파일은 웹 서버에서 발생한 에러를 기록한다.

 

원격제어 ssh

ssh는 secure shell의 줄임말로, 원격 서버에 접속하기 위해 사용되는 보안 프로토콜이다. ssh를 사용하기 위해서는 ssh client와 ssh server가 설치되어있어야 한다. 

# ssh server 설치
sudo apt-get install openssh-server
# ssh client 설치
sudo apt-get install openssh-client
# ssh server 구동
sudo service ssh start
# 확인
sudo ps aux | grep ssh

 

포트 (port)

웹 브라우저의 기본 포트 넘버는 80, ssh의 기본 포트 넘버는 22이다. 1024번까지의 포트를 well-known 포트라고 한다. ssh의 포트 번호를 바꾸기 위해서는 /etc/ssh/sshd_config 파일을 수정한다.

 

 

포드 포워딩(Port Forwarding)이란 패킷이 라우터, 방화벽 같은 네트워크 게이트웨이를 통과하는 동안 네트워크 주소를 변환해주는 것을 의미한다. 

 

 

이때 게이트웨이의 내부 ip 주소를 default gateway라고 한다. Default gateway를 알기 위해서는 ip route 명령을 사용한다.

 

 

맥에서는 시스템 환경 설정 - 네트워크 - 고급 - TCP/IP - 라우터 주소로 알 수 있다. 해당 ip 주소를 브라우저에 입력하면 공유기에 따라 다르겠지만 공유기 관리 페이지로 들어간다. 거기서 포드 포워딩 설정을 할 수 있다.