지금은 공유기를 사용해 집에서도 네트워크를 구성할 수 있다.
인터넷이 가능하고, 집에서만 사용하는 내부 네트워크를 만드는 것도 수월해 졌다.
다만, IP 주소를 통한 접속환경을 만들어야 하지만, hosts 파일을 이용하면 로컬 도메인을 만들고 편하게 다른 PC 또는 외부 기기에 접속할 수도 있다.
hosts 파일은 사용하기 난해한 IP 주소를 사람이 보기 편하게 도메인으로 매핑시키는 역할을 한다.
도메인 뜻 / domain
도메인은 사람이 인식하기 쉬운 인터넷 주소이다.
웹브라우저의 주소창에 인터넷 주소를 입력하면 자신이 원하는 홈페이지를 접속할 수 있다.
예로 들면 우리가 잘 알고 있는 https://naver.com/ 가 대표적이다.
이런 도메인이 없다면 네이버를 접속할 때 숫자로 된 xxx.xxx.xxx 를 입력하여 접속해야 할 것이다.
도메인의 종류는 크게 로컬 도메인과 공인 도메인으로 나눌 수 있다.
로컬 도메인은 특정 구역에 있는 컴퓨터들이 네트워크로 연결되어 있고, 공인 도메인은 네트워크가 허용된 모든 구역에 있는 컴퓨터들이 네트워크로 연결되어 있다.
쉽게 표현해 보면 다음과 같다.
집에는 공유기가 하나쯤 있을 것이고, 여러 기기들이 연결되어 있을 것이다.
만약, 공유기에만 컴퓨터들이 연결되어 도메인으로 연결된다면 로컬 도메인을 사용하는 것이며, 공유기에 연결되어 네이버, 구글 등의 외부 홈페이지에 연결된다면 외부 도메인을 사용하는 것이다.
자세히 알아 보자.
로컬 도메인 / 내부 도메인 / Local / 인트라넷
도메인에는 로컬 도메인이 있다.
내부에 연결된 기기들만 연결 되고, 외부로의 네트워크는 연결을 할 수 없다.
로컬 즉, 지역 한정 또는 접속이 허가된 구역 이란 뜻이다.
로컬 도메인, 내부 도메인, Local, 인트라넷은 모두 비슷한 개념으로 Local 즉, `지역`으로 한정된 영역에만 연결된 것을 뜻한다.
만약 공유기가 1대 있다고 하자.
지금은 여러 대의 기기들을 공유기 1대에 연결하여 사용하고 있을 것이지만, 외부로 나가는 인터넷이 되지 않는 상태를 내부 네트워크 또는 인트라넷 이라 할 수 있다.
쉽게 말해, 특정 구역, 특정 회사 내에서만 사용할 수 있는 네트워크인 인트라넷를 의미한다.
공인 도메인 / 외부 도메인 / Public / 인터넷
위에서 로컬 도메인이 특정 지역에서만 사용되는 것이라면 공인 도메인은 내부 밖인 외부에서 접속이 가능한 누구에게나 접속이 가능한 도메인을 뜻한다.
naver.com , google.com 등이 대표적이다.
즉, 공인 도메인은 불특정 모든 이에 공개된 도메인을 의미한다.
비슷한 개념으로 외부 도메인, public, 인터넷이 그것이다.
네이버나 구글은 불특정 모든 사용자에 공개되어 있다는 점을 보면 이해가 된다.
내부 네트워크
위에서도 이미 언급한 내용이긴 하지만, 내부 네트워크는 외부 네트워크에 접속할 수 없는 특정 지역의 공유기 또는 라우터에 연결된 네트워크를 의미한다.
소위 인트라넷이라고도 한다.
내부 네트워크 또는 인트라넷이 존재하는 이유는 간단하다.
외부의 접근을 완전히 차단하고, 내부의 보안을 유지하기 위함이다.
과거나 지금이나 마찬가지겠지만 ERP나 MES와 같은 민감한 정보들이 보관되어 있는 시스템을 유지할 때 내부 네트워크를 구성하고 인트라넷을 구축하여 외부접속을 차단하는 동시에 내부 회사 내에서만 접속하여 운영할 수 있게 하였다.
로컬 도메인 내부 네트워크 만들기 방법
이제 내부 네트워크 로컬 도메인을 사용해 만들어 보자.
로컬 도메인은 hosts 파일에 도메인을 지정하면 된다.
그 전에 사용할 PC의 내부 아이피를 확인할 필요가 있다.
전체적인 과정은 다음과 같다.
- 로컬 도메인을 설정할 컴퓨터의 내부 IP를 확인한다.
- hosts 파일을 관리자 권한으로 실행한다.
- 로컬 도메인을 설정한다.
- hosts 파일을 저장한다.
- 웹브라우저를 열고 로컬 도메인을 입력한다.
내부 IP 찾기
먼저 다른 컴퓨터 또는 기기들이 접속할 내부 IP를 찾아야 한다.
명령 프롬프트 에서 ipconfig 를 실행한다.
이 후 IPv4 라고 적혀진 항목이 보일 것이다.
192로 시작하는 주소가 내부 IP 주소이다.
이것을 기억하거나 다른 곳에 붙여넣기 하자.
추후 hosts 파일에 추가하고 로컬 도메인하고 연결할 주소가 된다.
- [ 명령 프롬프트 실행 방법 보기 ]
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 파일을 읽을 때 무시된다.
또한 마지막 문장으로 보면 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 테스트를 작성한 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 코드를 실행했다는 점에 있다.
이로써, 로컬도메인을 사용한 내부 네트워크의 기본 구성이 완료되었다.
댓글
댓글 쓰기