로컬 도메인 / 내부 네트워크 방법 / hosts 파일 사용

지금은 공유기를 사용해 집에서도 네트워크를 구성할 수 있다.
인터넷이 가능하고, 집에서만 사용하는 내부 네트워크를 만드는 것도 수월해 졌다.
다만, IP 주소를 통한 접속환경을 만들어야 하지만, hosts 파일을 이용하면 로컬 도메인을 만들고 편하게 다른 PC 또는 외부 기기에 접속할 수도 있다.
hosts 파일은 사용하기 난해한 IP 주소를 사람이 보기 편하게 도메인으로 매핑시키는 역할을 한다.

로컬 도메인 / 내부 네트워크 방법 / hosts 파일 사용
로컬 도메인 / 내부 네트워크 방법 / hosts 파일 사용

도메인 뜻 / domain

도메인은 사람이 인식하기 쉬운 인터넷 주소이다.
웹브라우저의 주소창에 인터넷 주소를 입력하면 자신이 원하는 홈페이지를 접속할 수 있다.
예로 들면 우리가 잘 알고 있는 https://naver.com/ 가 대표적이다.
이런 도메인이 없다면 네이버를 접속할 때 숫자로 된 xxx.xxx.xxx 를 입력하여 접속해야 할 것이다.
도메인의 종류는 크게 로컬 도메인과 공인 도메인으로 나눌 수 있다.
로컬 도메인은 특정 구역에 있는 컴퓨터들이 네트워크로 연결되어 있고, 공인 도메인은 네트워크가 허용된 모든 구역에 있는 컴퓨터들이 네트워크로 연결되어 있다.
쉽게 표현해 보면 다음과 같다.
집에는 공유기가 하나쯤 있을 것이고, 여러 기기들이 연결되어 있을 것이다.
만약, 공유기에만 컴퓨터들이 연결되어 도메인으로 연결된다면 로컬 도메인을 사용하는 것이며, 공유기에 연결되어 네이버, 구글 등의 외부 홈페이지에 연결된다면 외부 도메인을 사용하는 것이다.
자세히 알아 보자.

로컬 도메인 / 내부 도메인 / Local / 인트라넷

도메인에는 로컬 도메인이 있다.
내부에 연결된 기기들만 연결 되고, 외부로의 네트워크는 연결을 할 수 없다.
로컬 즉, 지역 한정 또는 접속이 허가된 구역 이란 뜻이다.
로컬 도메인, 내부 도메인, Local, 인트라넷은 모두 비슷한 개념으로 Local 즉, `지역`으로 한정된 영역에만 연결된 것을 뜻한다.
만약 공유기가 1대 있다고 하자.
지금은 여러 대의 기기들을 공유기 1대에 연결하여 사용하고 있을 것이지만, 외부로 나가는 인터넷이 되지 않는 상태를 내부 네트워크 또는 인트라넷 이라 할 수 있다.
쉽게 말해, 특정 구역, 특정 회사 내에서만 사용할 수 있는 네트워크인 인트라넷를 의미한다.

공인 도메인 / 외부 도메인 / Public / 인터넷

위에서 로컬 도메인이 특정 지역에서만 사용되는 것이라면 공인 도메인은 내부 밖인 외부에서 접속이 가능한 누구에게나 접속이 가능한 도메인을 뜻한다.
naver.com , google.com 등이 대표적이다.
즉, 공인 도메인은 불특정 모든 이에 공개된 도메인을 의미한다.
비슷한 개념으로 외부 도메인, public, 인터넷이 그것이다.
네이버나 구글은 불특정 모든 사용자에 공개되어 있다는 점을 보면 이해가 된다.

내부 네트워크

위에서도 이미 언급한 내용이긴 하지만, 내부 네트워크는 외부 네트워크에 접속할 수 없는 특정 지역의 공유기 또는 라우터에 연결된 네트워크를 의미한다.
소위 인트라넷이라고도 한다.
내부 네트워크 또는 인트라넷이 존재하는 이유는 간단하다.
외부의 접근을 완전히 차단하고, 내부의 보안을 유지하기 위함이다.
과거나 지금이나 마찬가지겠지만 ERP나 MES와 같은 민감한 정보들이 보관되어 있는 시스템을 유지할 때 내부 네트워크를 구성하고 인트라넷을 구축하여 외부접속을 차단하는 동시에 내부 회사 내에서만 접속하여 운영할 수 있게 하였다.

내부 네트워크 / 인트라넷
내부 네트워크 / 인트라넷

로컬 도메인 내부 네트워크 만들기 방법

이제 내부 네트워크 로컬 도메인을 사용해 만들어 보자.
로컬 도메인은 hosts 파일에 도메인을 지정하면 된다.
그 전에 사용할 PC의 내부 아이피를 확인할 필요가 있다.
전체적인 과정은 다음과 같다.

  1. 로컬 도메인을 설정할 컴퓨터의 내부 IP를 확인한다.
  2. hosts 파일을 관리자 권한으로 실행한다.
  3. 로컬 도메인을 설정한다.
  4. hosts 파일을 저장한다.
  5. 웹브라우저를 열고 로컬 도메인을 입력한다.

내부 IP 찾기

먼저 다른 컴퓨터 또는 기기들이 접속할 내부 IP를 찾아야 한다.
명령 프롬프트 에서 ipconfig 를 실행한다.
이 후 IPv4 라고 적혀진 항목이 보일 것이다.
192로 시작하는 주소가 내부 IP 주소이다.
이것을 기억하거나 다른 곳에 붙여넣기 하자.
추후 hosts 파일에 추가하고 로컬 도메인하고 연결할 주소가 된다.

IPv4 주소
IPv4 주소

hosts 파일

윈도우에 있는 hosts 파일은 IP 주소를 로컬 도메인 주소로 매핑하는 것을 의미한다.
매핑이란 의미는 1:1 맞추는 것으로 `IP 주소 = 로컬 도메인`으로 시스템을 설정하는 것을 뜻한다.
만약 로컬 IP가 192.168.0.46 을, 내가 원하는 도메인 또는 mypc.loc 로컬 도메인으로 설정할 수 있다는 것이다.
이렇게 설정하면 mypc.loc로 접속할 수 있다.
쉽게 표현하면 어떤 모임 또는 게임을 할 때 사람의 이름 옆에 숫자를 설정하는 경우가 있을 것이다.
숫자는 어떤 사람의 이름과 매핑되며, 이름 대신 번호로 부를 수 있다.
이런 매핑되는 작업을 하는 hosts 파일의 위치는 아래와 같다.

C:\Windows\System32\drivers\etc

윈도우 탐색기에서 경로를 찾아가면 다음과 같다.
확장자는 딱히 없으며 유형 또한 정해지지 않았다.
특별한 유형도 없고, 확장자가 없을 뿐 엄연한 텍스트 파일이지만, 시스템의 관리자 권한이 아니면 파일을 수정할 수 없다.
하지만, 파일의 내용은 볼 수 있다.

hosts 파일 위치
hosts 파일 위치

hosts 파일을 변경하기 전에 먼저 백업을 해 두자.
백업의 과정이 뭐 거창한 것은 아니다.
원본 파일을 복사, 붙여넣기 하면 되는 것이다.
단순히 원본 파일을 보관하는 것이라 생각하자.
아래는 hosts 파일의 원본을 복사하기, 붙여넣기 하여 백업 파일을 복사본으로 하나 만들어 본 것이다.
백업파일을 만드는 목적은 간단하다.
파일의 내용을 잘못 수정되어 비정상 동작했을 때,
원본 파일을 사용해 복구하면 되는 것이다.
복구하는 방법 또한 간단하다.
잘못된 파일은 삭제한 후,
백업 파일을 복사, 붙여넣기하여
파일명을 원본 파일과 맞추면 되는 것이다.

hosts 파일 백업
hosts 파일 백업

hosts 파일을 수정하려면 텍스트 파일을 수정할 수 있는 모든 프로그램이면 가능하다.
아주 간단한 프로그램으로 `메모장`을 활용할 수 있다.
다만, hosts 파일을 열고 수정하기 위해 `관리자 권한으로 실행`으로 메모장 열기를 해야 한다.
만약, `관리자 권한`이 아닌 경우 hosts 파일을 열기 할 수는 있지만, 수정은 되지 않는다.

메모장 관리자 권한 실행
메모장 관리자 권한 실행

hosts 파일을 메모장을 사용해 관리자 권한으로 열기 했을 경우 아래와 같은 내용이 보일 것이다.
# 표시는 주석으로 시스템에서 hosts 파일을 읽을 때 무시된다.
또한 마지막 문장으로 보면 127.0.0.1 localhost 가 적혀있는 것을 볼 수 있다.
즉, 윈도우 시스템은 이 정보를 사용해 127.0.0.1 = localhost 가 같음을 알 수 있다.
마지막 줄에 # 문자를 제외하고 자신의 내부 IP를 자신이 원하는 로컬 도메인 주소로 작성해 보자.
본인의 컴퓨터인 경우 아래와 같이 작성하였다.

192.168.0.46 mypc.loc

위의 IP는 본인 PC의 내부 IP 이며, 로컬 도메인은 mypc.loc 으로 지정되었다.
윈도우 시스템은 이 정보를 읽고 19.168.0.46 = mypc.loc 가 같음으로 인식하며 웹브라우저 뿐만 아니라 네부 네트워크 접속을 설정할 때 로컬 IP 대신 mypc.loc 로 사용할 수 있다.

hosts 파일 내부 IP 설정
hosts 파일 내부 IP 설정

hosts 파일을 위의 이미지대로 수정하고 저장했다면 이제 테스트를 해보면 된다.
아래는 IP 테스트를 작성한 html 코드이다.
비주얼스튜디오코드로 작성하였으며, 코드를 작성 후 실행하면 된다.
참고로 아래의 코드는 웹브라우저에서 실행시 IP와 PORT, hostname을 볼 수있는 html, 자바스크립트 코드이다.

<!doctype html>
<html lang="ko">
<meta charset="utf-8">
<title>URL & IP</title>
<pre id="out">Loading...</pre>
<script>
(async () => {
  const o = {};
  // URL 정보
  o.href     = location.href;
  o.origin   = location.origin;
  o.protocol = location.protocol;
  o.host     = location.host;
  o.hostname = location.hostname;
  o.port     = location.port || "(default)";
  o.pathname = location.pathname;
  o.search   = location.search || "(none)";
  o.hash     = location.hash   || "(none)";

  // 공인 IP (IPv4/IPv6 시도)
  async function getJSON(u){ try{ const r=await fetch(u); if(!r.ok) throw 0; return r.json(); }catch(e){ return null; } }
  const v6 = await getJSON("https://api64.ipify.org?format=json");
  const v4 = await getJSON("https://api.ipify.org?format=json");

  o.public_ipv6 = v6 && v6.ip ? v6.ip : "(unavailable)";
  o.public_ipv4 = v4 && v4.ip ? v4.ip : "(unavailable)";

  // 출력
  const lines = Object.entries(o).map(([k,v]) => `${k}: ${v}`);
  document.getElementById("out").textContent = lines.join("\n");
})();
</script>
</html><!doctype html>
<html lang="ko">
<meta charset="utf-8">
<title>URL & IP</title>
<pre id="out">Loading...</pre>
<script>
(async () => {
  const o = {};
  // URL 정보
  o.href     = location.href;
  o.origin   = location.origin;
  o.protocol = location.protocol;
  o.host     = location.host;
  o.hostname = location.hostname;
  o.port     = location.port || "(default)";
  o.pathname = location.pathname;
  o.search   = location.search || "(none)";
  o.hash     = location.hash   || "(none)";

  // 공인 IP (IPv4/IPv6 시도)
  async function getJSON(u){ try{ const r=await fetch(u); if(!r.ok) throw 0; return r.json(); }catch(e){ return null; } }
  const v6 = await getJSON("https://api64.ipify.org?format=json");
  const v4 = await getJSON("https://api.ipify.org?format=json");

  o.public_ipv6 = v6 && v6.ip ? v6.ip : "(unavailable)";
  o.public_ipv4 = v4 && v4.ip ? v4.ip : "(unavailable)";

  // 출력
  const lines = Object.entries(o).map(([k,v]) => `${k}: ${v}`);
  document.getElementById("out").textContent = lines.join("\n");
})();
</script>
<body>

</div>
</html>

위의 코드를 비주얼스튜디오 코드에서 위의 html 코드를 작성하고 웹브라우저에서 실행해 본다.
웹브라우저의 주소는 hosts 파일에서 수정한 대로 http://mypc.loc 로 입력한다.
아래와 같이 html 파일이 웹브라우저에서 실행되며 자신의 ip 정보가 나타날 것이다.
여기서 중요한 점은 실행된 것이 아니며,
hosts 파일에서 작성한 mypc.loc 를 사용해 웹브라우저에서 html 코드를 실행했다는 점에 있다.
이로써, 로컬도메인을 사용한 내부 네트워크의 기본 구성이 완료되었다.

로컬 도메인 내부 네트워크 테스트
로컬 도메인 내부 네트워크 테스트

댓글

이 블로그의 인기 게시물

귀문과 혼문 뜻 어떤 영(靈)들이 드나드는 문

윈도우 캡쳐 이미지 자동 저장 위치 찾기

포토피아 모자이크 효과 만들기 인터넷 포토샵 사용

Featured Post

안전자산의 뜻과 종류 | 자산가치의 하락이 적고 신뢰도가 높은 자산

이미지
국제사회가 어지러운 경우, 시장 변동성이 커지고 경제 전망이 불투명해진다. 이런 경제 상황이 불안해지는 경우 사람들의 시선은 `안전자산`으로 향하게 된다. 불안한 경제의 위기 상황 속에서 내 소중한 원금을 최대한 보존할 수 있는 자산은 대표적으로 금, 달러, 국채가 있다. `안전자산`이라고 해도 가지고 있는 원금을 완전히 보존한다고 장담할 수 없지만, 가치 하락에 대한 변동성은 상대적으로 작다. 즉, 자신이 가진 자산가치의 하락이 적고, 신뢰도가 높은 자산을 의미한다. 안전자산 뜻 종류 / 금, 예금, 적금, 미국 달러 안전자산이란 무엇인가? `안전자산`의 뜻은 금융 시장의 불확실성이 커지거나 위험이 닥쳤을 때도 가치가 크게 하락하지 않고, 원금이 상대적으로 최대한 안전하게 보장될 가능성이 높은 자산을 뜻한다. 단순히 가격이 변하지 않는 것 뿐만 아니라, 필요할 때 즉시 현금화할 수 있다는 장점이 있지만, `유동성`과 채무 불이행에 따른 `신용도`가 어느 정도는 뒷받침되어야 합니다. 이런 경우 유동성과 변동폭이 큰 주식같은 투자 자산에서 돈은 빠져나오며 `안전자산`으로 돈이 다시 몰리는 현상이 발생한다. 대표적인 안전자산의 종류 안전자산의 세계에도 대장주들이 있다. 금, 달러, 국채가 그렇다. 시장 상황에 따라 선호도는 다르지만, 전 세계적으로 통용되는 대표적인 자산은 다음과 같다. 금(Gold) 인플레이션이나 화폐 가치 하락에 대비할 수 있는 대표적인 실물 자산이다. `실물`이라는 점에서 사람들의 심리적 안정감이 크다. 예금, 적금 가장 친숙한 형태의 안전자산 중 하나. 예금자 보호법에 의해 일정 금액까지 원금이 보장된다. 미국 달러(USD) 세계 기축통화인 달러는 경제 위기 시 가치가 상승하는 경향이 있다. 가장 강력한 유동성을 자랑한다. 미국 국채 미국 정부가 망하지 않는 한 원금과 이자를 보장받을 수 있다는 신뢰가 존재한다. 미국 국채의 신뢰성 덕분에 가장 안전한 국가 채권으로 분류됩니다. 안전자산 투자 시 주의사항 안전자산이 무조건 `무결점`인 것도 ...