본문 바로가기

개발/네트워크

가정용 인터넷에 웹서버 사용하기 (윈도우)

지난번 글에서는 가정용 인터넷에 리눅스 서버를 설치해서 다양한 서버로 활용하는 방법에 대해 알아봤는데요, 가정에서 제일 많이 사용하는 Windows 를 사용해서 서버를 운영하는 방법에 대해서는 따로 적어두지 않았더군요. 큰 차이는 없지만 Windows 10 Professional 을 사용하는 경우, 더 간단하게 사용할 수 있어서, 적어 보려고 합니다.

이번 글에서 다루게 될 내용은 아래와 같구요. 

  • 인터넷 정보 서비스(IIS) 설치
  • ASP.NET Core 번들 설치
  • 구글 도메인 (Google Domains) 를 사용해서 동적 DNS 설정
  • 무료 LetsEncrypt SSL 인증서 셋업과 자동 갱신


작업을 다 마치고 나면, 공짜로 나만의 무제한 웹서버를 가질 수 있게 되는 셈이죠. 뭔가 테스트용 서버를 사용하거나, 간단하게 나만의 백엔드 API 서비스를 실험해 보고자 할 때, 굳이 추가로 돈 들일 필요없이 오래되서 사용하지 않게 된 컴퓨터에 설치해 두면 가끔 요긴하게 쓰고 있습니다.

IIS에 들어있는 기본기능 중에 편리한 하나는 Host Header 를 정의해 두면, 별도의 프록시를 설치하지 않고도 여러개의 웹사이트를 한 웹서버에서 운영하기 편한 장점이 있습니다. 그리고 ASP.NET Core는 새로워진, 크로스 플랫폼, 오픈소스 웹서비스 프레임워크입니다.

제가 사용하는 윈도우10 이 영문판이라 영문 화면을 보기로 설명하지만, 한글판에서도 동일한 화면이 있기 때문에 따라하는데 무리는 없을 것 같아요.


인터넷 정보 서비스 (IIS) 설치

우선, IIS를 설치해야죠. IIS는 윈도우 10 프로페셔널에 포함되어 있지만, 기본으로 설치되어 있지 않아 추가로 설치해 주어야 합니다. 윈도우 시작 메뉴에서 'windows features' 라고 입력하면 아래와 같은 화면이 나옵니다. 

'Turn Windows features on or off' 를 선택하면, 아래와 같이 'Windows Features' 화면이 나옵니다. 거기서 'Internet Information Services'를 선택합니다.

여러가지 부가기능은 설치하지 말고, 위에서 선택한 것 처럼 기본 기능만 설치해도 됩니다.  'OK'를 눌러 설치를 시작합니다.


IIS Manager 웹사이트 셋업

자, 이제 나만의 웹사이트를 IIS에 셋업합니다. IIS에서 ASP.NET Core를 사용하는 방식을 표현한 그림이 다음과 같습니다. 




  • IIS Manager 를 실행, 'Sites' 를 클릭한 후, 'Default Web Site'를 중지합니다. 이 작업을 하지 않으면, 내 컴퓨터의 IP주소를 웹브라우저에 직접 입력하면, 의미없는 마이크로소프트 IIS 기본 화면이 보이게 됩니다.
  • 아래 화면과 같이 내 웹 사이트 이름을 입력하고 'OK' 를 클릭합니다. 



  • ASP.NET Core Hosting Bundle을 마이크로소프트에서 다운로드 받아 설치합니다. 현재 최신버전은 3.1 이지만, 더 업그레이드 된 버전이 나오면 최신 버전을 설치해 주세요.
  • 설치를 마치고, 'Modules'를 선택하면, 아래와 같이 'AspNetCoreModuleV2' 가 추가 되어 있음을 확인합니다.


  • 이제, 내 웹 사이트를 화면의 오른쪽에 있는 초록색 'Play' 버튼을 눌러 웹사이트를 실행합니다.


공유기 포트 전달 (Port Forwarding) 셋업

다음은 가정용 공유기 (라우터)에 이 컴퓨터가 사용할 포트를 셋팅합니다. 'bigwolf.io' 라고 누군가 브라우저에서 입력해서 내 가정용 인터넷으로 들어왔을때, 어떤 컴퓨터가 응답을 할지 설정하는 과정입니다.

브라우저에서 http://bifwolf.io 라고 입력했으면 80번 포트를 사용하고, https://bifwolf.io 는 443번 포트를 사용하도록 서로 약속으로 정해져 있는데요. 기본 포트 (80, 443) 이외의 포트를 사용할수도 있습니다.

이 과정은 공유기마다 메뉴 화면구성이 달라 설정하는 방법이 다르므로 공유기 제조업체의 매뉴얼을 참조하는게 좋습니다. 예로 들자면 이 컴퓨터의 IP주소가 192.168.1.50 으로 공유기에 표시된다면, 포트 전달 (또는 포트 포워딩) 기능에서 공유기 바깥 네트워크에서 80번 포트를 사용해 들어오는 데이타는 192.168.1.50 주소로 전달해 이런 의미로 설정해야 합니다.



웹사이트 폴더 권한 및 공유 설정

추가로, 웹사이트에 콘텐츠를 새로 올리거나 변경하는 작업을 다른 컴퓨터를 사용해서 하려면 공유 폴더를 설정해 놓으면 편리 합니다.


구글 도메인을 사용한 동적 DNS 설정


웹 호스팅을 하면 보통 내 웹사이트에는 IP주소가 하나로 정해지지만 가정용 인터넷의 IP주소는 정해진 IP가 아니라 종종 바뀌는 동적 IP주소 (Dynamic IP address) 입니다. 가정용 인터넷을 사용해서 호스팅을 하려면, IP주소가 변하더라도, 새로운 IP 주소가 구글 도메인에 자동으로 업데이트되어 언제든지 'bigwolf.io' 를 브라우저에서 입력하면 내 컴퓨터의 IP주소를 찾아 연결해 줍니다. 구글 도메인 (Google Domains)에 내 도메인이 등록되어 있는 경우, 다음 과정을 따라하면 됩니다. 다른 도메인 회사에 등록되어 있다면, 해당 도메인 회사의 동적 DNS정책에 따라야 합니다. 

  • 우선, 내 컴퓨터의 네트워크 장치에서 IP version 6를 사용하지 않고 IP version 4 만을 사용하도록 설정합니다. 간단히 이유를 설명하자면, (몰라도 됨) 글을 작성하는 시점에, 구글 도메인은 IP version 6를 통해 들어온 IP 주소 변경 요청은 AAAA type 도메인 레코드로 갱신됩니다. 이렇게 되면 대부분의 공유기에서 포트 전달 설정에서 사용하는 IP version 4 방식과 혼동을 일으키게 됩니다.


  • 구글 도메인  (Google Domains) 에 등록된 내 도메인이 있다면, 로그인해서, DNS관련 메뉴에서, 다음과 같이 설정해 줍니다.
  • 새로 동적 DNS 레코드를 생성하고 나면 구글에서 내 도메인 이름에 대한 사용자이름과 패스워드를 정해서 표시해 줍니다. 이 정보는 다음 단계에서 사용하게 됩니다.
  • 'Dynamic DNS Updater for Google Domains' 라는 프로그램을 다운로드해서 원하는 위치에 압축을 풀고 'build' 폴더를 선택합니다.

  • 그안에 ‘GoogleDomainsDdnsSvc.exe.config’ 파일을 노트패드로 열어 내 도메인에 맞도록 수정해 주고, 저장합니다. (hostname, username, password 변경) 
  • 이제, 변경한 내용이 구글 도메인에 전달되도록 실행합니다. 관리자 모드로 명령 프롬프트를 열고, 
  • 'GoogleDomainsDdnsSvc.exe' 파일이 있는 폴더로 이동하여 다음 명령을 실행합니다.

  GoogleDomainsDdnsSvc.exe --install
  • 프로그램이 설치되어 제대로 실행되고 있는지 확인하려면, 윈도우 시작메뉴에서 'Service' 라고 입력해서  

  • ‘Dynamic DNS Updater for Google Domains’ 이라는 서비스가 실행중인지 확인합니다.
  • 이제 http://bigwolf.io 라고 브라우저에서 입력하면 내 컴퓨터에 있는 홈페이지로 연결되는지 확인합니다. 구글 도메인에 IP주소가 업데이트 되는데 5분까지 걸릴 수 있습니다.


무료 LetsEncrypt SSL 인증서 셋업


이제 마지막으로, 공짜로 SSL 인증서를 발행해 주는 (혜자로운) LetsEncrypt를 사용해서 내 웹사이트에서 제대로된 HTTPS 를 사용할 수 있도록 해 봅니다. 요즈음엔 HTTPS가 아닌 웹사이트는 신뢰하기 어려운 지경이라 다른 사람들이 내 웹사이트에 들어왔다가 꺼림직해서 금방 나가버릴 수도 있으니까요. 

우선, win-acme (LetsEncrypt ACME protocol client for Windows) 를 다운로드 받아 원하는 폴더에 넣고 압축을 풉니다.


관리자 모드 명령화면에서 “wacs.exe” 를 실행합니다. 아래와 같은 화면이 나오면 순차적으로 화면에 옵션에 따라 선택해서 실행을 마칩니다.

WACS 프로그램은 다음과 같은 작업을 자동으로 실행하게 됩니다.

  • 우선 LetsEncrypt SSL 인증서를 생성하고, 인증서를 내 컴퓨터의 키 저장소 (Key Store)에 저징합니다. 제대로 인증서가 저장되었는지 확인하려면 다음과 같이 IIS Manager 에서 ‘Server Certificates’를 선택합니다.

  • 또 하나는 하루에 한번 인증서를 갱신할 때가 되었는지 자동으로 체크해 줍니다. 윈도우의 Task Scheduler 를 실행하면 다음과 같이 정해진 시간 (9:00 AM)에 인증서 갱신을 확인하는 명령을 자동실행하도록 설정되어 있는 걸 볼 수 있습니다.


다 끝났네요!

자, 지금까지 몇가지 프로그램 설치를 마치고 나면, 무제한, 다목적, 웹서버, API 서버, 데이타베이스 서버, 기타등등, 무궁무진하게 활용이 가능한 나만의 서버를 운영할 수 있습니다. (게다가 인증서까지 공짜라는 ...)


인터넷 업체에 따라, 가정용 인터넷에서 서버를 돌리는 걸 허용하지 않는 업체도 있는지는 잘 모르겠네요.


'개발 > 네트워크' 카테고리의 다른 글

무제한 공짜 서버 (홈 서버) 호스팅  (0) 2019.12.27