docs/blog/2023-02-11-linux-04.md
2026-08-29 22:09:51 +09:00

16 KiB

title description image authors
리눅스 사용 part 2 (작성 중) /assets/blog/04-linux-04/NetworkTopologies.svg
bitdori

World Wide Web

192.168.56.101 로 접속을 시도해 보면 들어갈 수 없을 것이다. conn-refused

해당 주소는 ip addr 실행 후 enp0s8 인터페이스에 할당 받은 주소이다. xubuntu-ip

  • sudo apt install nginxnginx 설치 nginx
  • systemctl status nginxActive 상태 확인
  • q 를 눌러 종료한다.
  • 다시 192.168.56.101 로 접속을 시도
  • nginx 환영 페이지 확인 nginx-welcome

웹브라우저에서 example.tld 라는 주소로 접속을 시도하면 들어갈 수 없을 것이다. example-not-resolved

  • Windows 탐색기에서 %windir%\system32\drivers\etc 로 이동
  • hosts 를 복사해서 백업본을 만들고 관리자 권한으로 원본 hosts를 연다
  • 192.168.56.101 example.tld 를 추가한 뒤 저장 hosts
  • 웹브라우저에서 다시 example.tld 탐색

192.168.56.101 로 접속 했을 때 나오던 nginx 환영페이지를 볼 수 있다.

같은 주소로 접속 했다는 것을 확인하기 위해 tail -f /var/log/nginx/access.log 로 파일 내용을 감시해 놓으면 페이지 새로고침을 할 때 마다 새로운 내용이 기록되는 것을 확인할 수 있다. nginx-welcome-hosts

Domain Name System

예를 들어 173.239.79.196 이라는 주소로 웹브라우저에서 접속을 시도하면 https://www.eff.org/ 라는 주소로 변환돼서 들어간다. eff

어떤 클라이언트에서 웹사이트 접속을 시도하면 맨 처음에는

  1. 웹브라우저의 cache를 탐색해 보고 이전 방문 기록이 없는 경우
  2. 해당 시스템의 hosts 파일에서 어느 도메인이 어느 IP 주소로 연결되어 있는지 확인
  3. hosts 파일에도 해당 내용이 없으면 현재 가입 중인 ISP에게 질의를 보낸다
  4. ISP의 cache에도 해당 도메인에 대한 정보가 없으면 TLD 종류에 따라서 ccTLD인 경우 ICANN 산하 기관이 지정한 국가 DNS 서버로 (한국은 KRNIC), gTLD인 경우 루트 네임 서버로 질의를 보낸다
  5. 루트 네임 서버에 질의가 들어오면 TLD 네임 서버로 질의를 돌린다
  6. TLD 네임 서버는 Domain name registrar 등 다시금 접속하고자 하는 도메인의 네임 서버로 질의를 돌린다
  7. 이곳 zone 파일에 목적지 IP 주소가 저장되어 있다면 결과를 보여주고 해당 목적지에서 개별적으로 DNS 서버를 운영하고 있다면 다시 한 번 더 질의를 그쪽으로 보내서 zone 파일을 탐색한 뒤 A 레코드에 지정된 주소의 결과를 보여준다.
  8. 성공적으로 접속을 하면 다음 번 질의를 할 때 트래픽 낭비 없이 더 빨리 응답하기 위해 클라이언트의 브라우저와 ISP에는 해당 도메인-IP 짝을 저장해 놓는다.

Example_of_an_iterative_DNS_resolver DNS_Architecture

이처럼 각 웹사이트는 원래 숫자로 이루어진 IP 주소로 서비스가 이루어지고 있지만 사람이 더 쉽게 식별할 수 있도록 숫자가 아닌 문자열을 입력하면 그 주소에 할당된 IP 주소로 매칭시키도록 Domain Name System 이라는 체계로 구현하고 있다.

  • 참고로 IPv6옥텟 내에 abcd 와 같은 문자열이 끼어 있는 것처럼 보일 수도 있는데 이는 16진수 숫자이다.

위에서 %windir%\system32\drivers\etc\hosts 에 직접 example.tld 라는 도메인으로 원하는 주소를 넣었고 해당 DNS query는 이 단계에서 끝이 난다.

하지만 hosts 파일은 관리자 권한으로 다뤄지는 파일인데 왜냐하면 이 파일이 사이트를 잘못 가리키면 잘못된 결과가 나오기 때문이다.

192.168.56.101 대신 173.239.79.196 으로 변경하고 example.tld 로 접속해 보면 아까 확인했던 nginx 환영 페이지가 아니라 https://www.eff.org/ 로 연결이 된다. hosts-forgery

  • %windir%\system32\drivers\etc\hosts 에 지금까지 변경한 내용을 지우고 이전 상태로 되돌린다.

이러한 주의사항으로 인해 각종 보안 프로그램에서 hosts 변조를 감지하는 기능을 내장하고 있다.

DNS 서버 구축 (작성 중)

DNS 서버를 자체적으로 구축하면 hosts 를 그대로 둔 채 도메인과 IP 짝을 원하는대로 묶을 수 있다.


다운로드 하는 동안 볼 내용

  • BIND를 설치해서 DNS query에 응답만 해 주도록 단순하게 구성할 것이기 때문에 X가 없는 서버 버전을 설치한다.
  • 우분투 서버 버전은 X를 제외시킨 경량 버전이기 때문에 마우스 포인터를 사용하지 않는다. 나중에라도 데스크탑 환경을 설치하면 마우스 포인터를 인식할 수 있다.
  • 우분투처럼 유명한 리눅스 배포본은 torrent를 이용하든 말든 본인에게 가장 손쉬운 방법으로 프로그램을 획득하면 되지만 AlmaLinux처럼 배포본 개발을 시작한지 오래되지 않은 프로젝트에 대해서는 torrent로 트래픽을 절감해주면 프로젝트 자원봉사자의 운영 부담을 덜어줄 수 있다.
  • 리눅스는 서로 다른 개발주체의 소프트웨어를 결합한 것이기 때문에 필요한 프로그램을 찾아서 설치하고 관리하는 비용이 MS 운영체제 대비 낮다고 할 수 없으나 그만큼 운영체제 내에서 각 프로그램 간 결합도가 느슨한 편이어서 커널 업데이트를 하지 않는 이상 유저 랜드 소프트웨어에 몇몇 사소한 변경사항이 생긴 것만으로는 시스템 재시작을 하지 않아도 된다. 필수 재부팅 상황이 더 적기 때문에 구동 중인 프로그램의 규모가 작을수록 고가용성 운용을 할 수 있다.

live-server iso 다운로드가 끝나면 VirtualBox에 설치한다.

vbox-ubt-serv-inst-01 vbox-ubt-serv-inst-02 vbox-ubt-serv-inst-03 vbox-ubt-serv-inst-04 vbox-ubt-serv-inst-05 vbox-ubt-serv-inst-06 vbox-ubt-serv-inst-07 vbox-ubt-serv-inst-08 vbox-ubt-serv-inst-09

Update to the new installer 가 나오지 않으면 필수사항이 아니기 때문에 그대로 진행하면 된다. vbox-ubt-serv-inst-10 vbox-ubt-serv-inst-11 vbox-ubt-serv-inst-12

Search for third-party drivers 도 필수사항은 아니다. vbox-ubt-serv-inst-13

enp0s8 인터페이스에 할당된 IP 주소를 사용하게 될 것이다. vbox-ubt-serv-inst-14 vbox-ubt-serv-inst-15 vbox-ubt-serv-inst-16

LVM 구성에 대한 안내를 보여준다. vbox-ubt-serv-inst-17 vbox-ubt-serv-inst-18

디스크 파티션 레이아웃을 확정한 뒤에는 되돌릴 수 없다는 경고가 나온다.

가상머신 내에서는 실수를 하더라도 호스트에 영향을 주지 않는다는 점이 편리하다고 할 수 있다.

Continue 하여 계속 진행한다. vbox-ubt-serv-inst-19 vbox-ubt-serv-inst-20

원격접속을 받기 위해서 Install OpenSSH server 체크

이 단계에서 실수로 sshd 설치를 하지 않고 넘겨버렸어도 운영체제 설치가 끝난 뒤에 sudo apt install openssh-server 를 설치하면 된다. vbox-ubt-serv-inst-21 vbox-ubt-serv-inst-22

오케스트레이션, RDBMS 툴 등을 사전 설치할 것인지 보여주고 있는데 아무 것도 선택하지 않아도 된다. vbox-ubt-serv-inst-23 vbox-ubt-serv-inst-24

모든 작업이 끝난 뒤 Reboot Now 메세지에 엔터를 쳐서 재부팅을 한다. vbox-ubt-serv-inst-25

만약 재부팅이 안 되고 Please remove the installation medium, then press ENTER: 라고 표시가 된다면 상단 Machine 메뉴에서 Reset 을 누르면 된다. vbox-ubt-serv-inst-26 vbox-ubt-serv-inst-27

재부팅이 끝나면 화면에 나온 메세지를 밀어내기 위해서 엔터를 누른 뒤 로그인을 한다. vbox-ubt-serv-1

ip addr 를 실행하면 설치할 때 enp0s8 NIC로 할당됐던 IP 주소가 나온다.

xubuntu에 이어서 두 번째 Host-only Adapter를 사용했기 때문에 192.168.56.102 가 들어가 있을 것이다.

vbox-ubt-serv-2

모든 작업을 리눅스 프레임버퍼 내에서 처리할 수 있지만 마우스 포인터로 복사/붙여넣기를 하고 싶다면 Cygwin에서 ssh로 원격접속을 하면 된다.

  • systemctl status sshd 로 ssh 서버 구동상태 확인
  • Cygwin에서 ssh ubuntu-server@192.168.56.102 로 접속

vbox-ubt-serv-3 vbox-ubt-serv-4

  • sudo shutdown -h now 로 우분투 서버 종료 shutdown

X가 없는 로그인 매니저에서는 마우스 포인터로 시스템을 끌 수 없고 shutdown 커맨드로 끄면 된다.


  • 다시 가상머신 시작
  • sudo apt install bind9
  • systemctl status named 로 서비스 상태 확인
  • cd /etc/bind
  • ls -l

bind9-inst bind9-status bind9-path

  • cd /var/lib/bind
  • sudo cp /etc/bind/db.local default-zone-data
  • sudo vi default-zone-data
  • 다음과 같이 작성한다
$TTL    1h
@       IN      SOA     ns.example.tld. root.example.tld. (
                   2023021401           ; Serial
                          1h            ; Refresh
                          1h            ; Retry
                          1w            ; Expire
                          1h    )       ; Negative Cache TTL
;
                NS      ns.example.tld.
ns              A       192.168.56.102
@       IN      AAAA    ::1

bind-zone-default

  • sudo vi /var/lib/bind/zone-example.tld
$INCLUDE /var/lib/bind/default-zone-data
example.tld.    IN      A       192.168.56.101

bind-zone-example

  • $TTL과 Refresh 값을 줄인다

vi /etc/bind/named.conf 에서 named.conf.options, named.conf.local, named.conf.default-zones 를 포함하고 있다. bind-named-conf

{/* bind-named-conf-options bind-named-conf-local */}

dns-browser

mdns https://answers.microsoft.com/en-us/windows/forum/all/how-to-force-windows-10-to-use-dns/5b80e376-fa6a-4c6e-b59d-5eb5ec65c26d dns-preferred dns-flush vbox-start-dns-and-web