16 KiB
| title | description | image | authors | |
|---|---|---|---|---|
| 리눅스 사용 part 2 (작성 중) | /assets/blog/04-linux-04/NetworkTopologies.svg |
|
World Wide Web
192.168.56.101 로 접속을 시도해 보면 들어갈 수 없을 것이다.

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

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

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

- Windows 탐색기에서
%windir%\system32\drivers\etc로 이동 - hosts 를 복사해서 백업본을 만들고 관리자 권한으로 원본 hosts를 연다
192.168.56.101 example.tld를 추가한 뒤 저장
- 웹브라우저에서 다시
example.tld탐색
192.168.56.101 로 접속 했을 때 나오던 nginx 환영페이지를 볼 수 있다.
같은 주소로 접속 했다는 것을 확인하기 위해 tail -f /var/log/nginx/access.log
로 파일 내용을 감시해 놓으면 페이지 새로고침을 할 때 마다 새로운 내용이
기록되는 것을 확인할 수 있다.

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

어떤 클라이언트에서 웹사이트 접속을 시도하면 맨 처음에는
- 웹브라우저의 cache를 탐색해 보고 이전 방문 기록이 없는 경우
- 해당 시스템의 hosts 파일에서 어느 도메인이 어느 IP 주소로 연결되어 있는지 확인
- hosts 파일에도 해당 내용이 없으면 현재 가입 중인 ISP에게 질의를 보낸다
- ISP의 cache에도 해당 도메인에 대한 정보가 없으면 TLD 종류에 따라서 ccTLD인 경우 ICANN 산하 기관이 지정한 국가 DNS 서버로 (한국은 KRNIC), gTLD인 경우 루트 네임 서버로 질의를 보낸다
- 루트 네임 서버에 질의가 들어오면 TLD 네임 서버로 질의를 돌린다
- TLD 네임 서버는 Domain name registrar 등 다시금 접속하고자 하는 도메인의 네임 서버로 질의를 돌린다
- 이곳 zone 파일에 목적지 IP 주소가 저장되어 있다면 결과를 보여주고 해당 목적지에서 개별적으로 DNS 서버를 운영하고 있다면 다시 한 번 더 질의를 그쪽으로 보내서 zone 파일을 탐색한 뒤 A 레코드에 지정된 주소의 결과를 보여준다.
- 성공적으로 접속을 하면 다음 번 질의를 할 때 트래픽 낭비 없이 더 빨리 응답하기 위해 클라이언트의 브라우저와 ISP에는 해당 도메인-IP 짝을 저장해 놓는다.
이처럼 각 웹사이트는 원래 숫자로 이루어진 IP 주소로 서비스가 이루어지고 있지만 사람이 더 쉽게 식별할 수 있도록 숫자가 아닌 문자열을 입력하면 그 주소에 할당된 IP 주소로 매칭시키도록 Domain Name System 이라는 체계로 구현하고 있다.
위에서 %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/ 로 연결이 된다.

%windir%\system32\drivers\etc\hosts에 지금까지 변경한 내용을 지우고 이전 상태로 되돌린다.
이러한 주의사항으로 인해 각종 보안 프로그램에서 hosts 변조를 감지하는 기능을 내장하고 있다.
DNS 서버 구축 (작성 중)
DNS 서버를 자체적으로 구축하면 hosts 를 그대로 둔 채 도메인과 IP 짝을 원하는대로 묶을 수 있다.
- https://mirror.kakao.com/ubuntu-releases/jammy/ 또는 https://releases.ubuntu.com/jammy/
에서 live-server-amd64.iso.torrent 를 다운로드

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

Search for third-party drivers 도 필수사항은 아니다.

enp0s8 인터페이스에 할당된 IP 주소를 사용하게 될 것이다.

LVM 구성에 대한 안내를 보여준다.

디스크 파티션 레이아웃을 확정한 뒤에는 되돌릴 수 없다는 경고가 나온다.
가상머신 내에서는 실수를 하더라도 호스트에 영향을 주지 않는다는 점이 편리하다고 할 수 있다.
원격접속을 받기 위해서 Install OpenSSH server 체크
이 단계에서 실수로 sshd 설치를 하지 않고 넘겨버렸어도 운영체제 설치가 끝난 뒤에
sudo apt install openssh-server 를 설치하면 된다.

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

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

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

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

ip addr 를 실행하면 설치할 때 enp0s8 NIC로 할당됐던 IP 주소가 나온다.
xubuntu에 이어서 두 번째 Host-only Adapter를 사용했기 때문에 192.168.56.102 가
들어가 있을 것이다.
모든 작업을 리눅스 프레임버퍼 내에서 처리할 수 있지만 마우스 포인터로 복사/붙여넣기를 하고 싶다면 Cygwin에서 ssh로 원격접속을 하면 된다.
systemctl status sshd로 ssh 서버 구동상태 확인- Cygwin에서
ssh ubuntu-server@192.168.56.102로 접속
X가 없는 로그인 매니저에서는 마우스 포인터로 시스템을 끌 수 없고 shutdown 커맨드로 끄면 된다.
- 다시 가상머신 시작
sudo apt install bind9systemctl status named로 서비스 상태 확인cd /etc/bindls -l
cd /var/lib/bindsudo cp /etc/bind/db.local default-zone-datasudo 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
sudo vi /var/lib/bind/zone-example.tld
$INCLUDE /var/lib/bind/default-zone-data
example.tld. IN A 192.168.56.101
- $TTL과 Refresh 값을 줄인다
vi /etc/bind/named.conf 에서 named.conf.options, named.conf.local,
named.conf.default-zones 를 포함하고 있다.

https://answers.microsoft.com/en-us/windows/forum/all/how-to-force-windows-10-to-use-dns/5b80e376-fa6a-4c6e-b59d-5eb5ec65c26d























