SoftEther VPN을 이용한 원격 접속 구현

이 글에서는 VPN 활용 사례에서 설명한 대표적인 원격 접속 (Remote Access to LAN) VPN을 오픈소스 VPN 소프트웨어인 SoftEther VPN을 이용하여 구현하는 방법을 설명하고자 한다. SoftEther VPN은 일본의 츠쿠바(Tsukuba) 대학의 Daiyuu Nobori가 석사학위 논문을 위한 개인 프로젝트로 시작하여 2013년 8월에 오픈소스로 공개한 VPN 소프트웨어로 Windows, Linux, FreeBSD, Solaris, Mac OS X 등 다양한 운영 체제에서 구동이 가능하며 상용 VPN에서 지원하는 대부분의 기능이 구현되어 있는 VPN 소프트웨어이다. SoftEther에 대한 자세한 사항은 SoftEther VPN 홈페이지를 참조하기 바란다. 여기에서는 SoftEther VPN을 실제로 설치하여 원격 접속을 구현하는 예를 설명하고자 한다.

1. 구현 환경

사외접속1

그림과 같이 회사 내부에는 메일 서버와 파일 서버가 설치되어 있고, 이 서버들은 회사내부에서만 사설 IP인 10.0.0.x 대역으로만 연결되어 회사 외부에서는 접속이 불가능하게 되어 있다. 그리고 회사 내부와 인터넷은 10.0.0.1이라는 게이트웨어를 통해 연결이 되며 방화벽과 NAT 기능을 같이 수행하고 있다. 이 때 회사 내부에서는 외부로 인터넷이 연결이 되지만 인터넷에서 회사 내부로의 접속은 차단되어 있는 상태이다. 우리가 흔히 사용하고 있는 공유기를 생각하면 된다. 이러한 환경에서 사내에 VPN 서버를 설치한 후 사외접속자가 VPN을 통해 메일서버와 파일서버를 접속할 수 있는 환경을 구현하고자 한다.

대부분의 회사에서는 메일 서버와 파일 서버에 공인 IP를 부여하고 직접 사외에서 접속할 수 있도록 방화벽에서 개방하는 경우도 있으나 이렇게 할 경우 불특정 다수가 인터넷에서 직접 사내 서버들에 대해서 해킹을 시도할 가능성이 있고, 외부에서 접속을 허용할 서버들이 늘어날 때마다 방화벽을 개방하거나 공인 IP를 할당해야하는 등 여러가지로 불편한 사항이 늘어난다. 따라서 이와 같이 모든 서버를 개방하기보다는 VPN 서버를 설치하고 VPN 서버만 외부에서 접속이 가능하도록 개방한 후에 VPN을 통해서만 사내 서버에 접속이 가능하도록 하는 것이 보안 및 관리 측면에서도 유리하다.

2. VPN 서버 준비

먼저 SoftEhter VPN을 설치할 서버를 준비한다. SoftEther VPN은 다양한 운영 체제를 지원하는데, 이 글에서는 Windows 서버(Windows PC도 가능하다)에 SoftEther VPN을 설치하는 예를 설명할 예정이므로 Windows가 설치된 컴퓨터를 준비한 후 Intranet에 연결하고 10.0.0.2라는 사내 IP를 부여한다. 그리고 VPN 서버에 443 포트로 접속이 가능하도록 공인 IP를 부여하고 방화벽에서 개방한다. 이 과정은 방화벽 설정 또는 공유기 등의 설정에서 포트포워딩 등으로 수행할 수 있는데, 여기에 대해서는 방화벽 관리자나 공유기 등의 매뉴얼에 따라서 진행하기 바란다.

사외접속2

그림과 같이 SoftEther VPN을 설치할 서버는 인터넷에서 110.92.xxx.248이라는 공인 IP를 통해 443 포트로만 접속이 가능한 상태이다. 보안을 위해서 반드시 443포트를 제외한 다른 포트는 개방하지 않도록 한다.

3. SoftEther VPN 설치

VPN 서버에 로그인하여 다음의 순서대로 SoftEther VPN을 설치한다.

사용자 지정 2

SoftEther VPN 다운로드 페이지에서 Windows 용 VPN 서버를 다운로드 한다.

사용자 지정 3

다운로드 후에 설치 프로그램을 실행하면 그림과 같이  VPN Server, VPN Bridge 및 관리툴을 선택하여 설치할 수 있다. SoftEther VPN Server를 선택하면 Server Manager도 같이 설치된다. 별도의 PC에서 관리를 수행하고자 할 경우에는 VPN Server Manager 만 설치할 수 있다.

사용자 지정 4

설치할 디렉토리를 선택하고 Advanced Option에서 Advanced Option에서 원하는 옵션을 선택한다.

사용자 지정 5

사용자 지정 6

4. SoftEther VPN 원격 접속 구성

설치가 진행된 후 완료되면 SoftEther VPN Server Manager를 실행한다.

사용자 지정 7-1

SoftEther VPN Server Manager가 실행되면 그림에서와 같이 localhost에 VPN Server가 설치되어 있음을 알 수 있다. 관리툴에 여러개의 VPN Server를 등록하여 관리할 수 있다. localhost를 선택하고 Connect를 누른다.

사용자 지정 9-1

처음 실행 시에 VPN Server 암호를 입력한다.

사용자 지정 10

다음으로는 설정 마법사가 나타나는데, 여기에서는 Remote Access VPN, Site-to-Site VPN 등을 설정할 수 있으나, 이 글에서는 직접 설명할 예정이므로 마법사를 사용하지 않고 Close를 선택하고 다음으로 진행한다.

사용자 지정 11

다음으로 SoftEther VPN에서 IPsec/L2TP/EtherIP/L2TPv3를 지원하는 VPN 클라이언트 기능을 사용할 것인지를 선택하는 창이 나타나는데 L2TP 서버 설정에 대해서는 별도로 설명할 예정이므로 “아니오(N)”을 누르고 다음으로 진행한다.

사용자 지정 13-1

그림과 같이 DEFAULT라는 Virtual Hub가 생성되어 있는데, 이를 선택하고 Manage Virtual Hub를 클릭한다. SoftEther VPN에서는 하나의 VPN Server에 여러 개의 Virtual Hub를 생성할 수 있고, 각각의 Virtual Hub 별로 별도의 사용자와 네트워크 구성이 가능하다.

윈도우 1-1
SoftEther VPN의 Vitrual Hub 생성 예

위의 그림에는  한 대의 VPN 서버에 다양한 네트워크에 연결할 수 있는 VPN 서버에 대한 예가 나타나 있는데 5개의 Virtual Hub를 생성한 후에 일본으로 연결을 위한 japan, 192.168.9.x 대역 접속 및 Secure NAT등을 위한 Virtual Hub등이 생성되어 있음을 볼 수 있다.

사용자 지정 14-1

Virtual Hub 관리 화면에서 VPN 원격 접속 사용자 추가를 위해 Manage Users를 선택한다.

사용자 지정 15-1

Manage Users화면에서 새 사용자를 추가하기 위해 New를 선택한다.

사용자 지정 16-1

추가하고자 하는 사용자 계정(User Name)을 입력한다. 이 글에서는 gotocloud라는 계정으로 사용자를 생성한다. 다음으로 사용자 인증 방법을 선택한다. SoftEther VPN에서는 암호 없이 접속이 가능한 Anonymous Authentication, 암호 인증을 위한 Password Authentication, 개인 인증서 인증(Indivisual Certificate Authentication), 서명된 인증서 인증(Signed Certificate Authentication), Radius 인증, Active Directory 인증(NT Domain Authentication)을 지원하는데 여기에서는 암호 인증을 선택하고 우측 암호 입력 창에서 gotocloud 계정에 대한 암호를 입력한다.

사용자 지정 17

사용자 계정 성생이 완료되면 그림과 같이 계정 정보를 볼 수 있다. 원하는 사용자 만큼 계정을 생성할 수 있으며, 하나의 Virtual Hub에 서로 다른 인증 방식을 갖는 사용자를 생성할 수도 있다.

윈도우 2-2
서로 다른 사용자 인증 방식 사용자 등록 예

위의 그림은 하나의 Virtual Hub 내에서 암호 인증과 Radius 인증 사용자를 동시에 생성한 예를 보여주고 있다. 그림과 같이 특정 사용자(또는 사용자 그룹)은 Radius 서버에서 VPN 인증을 수행하고 관리자나 테스트 계정 등은 암호 인증으로 분리하는 것이 가능하다.

지금까지의 과정을 완료하면 다음의 그림과 같은 상태가 된다.

VPN터널

그림과 같이 사외 접속자는 110.92.xxx.248 이라는 공인 IP의 SoftEther VPN 서버에 앞에서 생성한 gotocloud라는 계정으로 VPN 접속을 시도하고, 인증에 성공하면 사외 접속자의 PC와 회사 내의 SoftEther VPN 서버 간에 VPN 터널이 연결되어 둘 사이의 모든 통신은 암호화되어 이루어진다. 이를 통해 사외 접속자는 사내 네트워크에 접속이 가능해진다.

이제 VPN 서버를 통해 접속한 사외 접속자가 회사 내부의 인트라넷인 10.0.0.x 대역에 연결되어 있는 메일 서버와 파일 서버에 접속이 가능하도록 VPN 터널을 인터라넷과 로컬 브리지(local bridge)로 연결해야 VPN을 통해 통신이 가능해진다.

브리지

그림의 3번 과정과 같이 VPN 서버와 인트라넷 간에 local bridge 연결이 되면 사외접속자는 VPN 터널을 통해 VPN 서버에 연결되고 local bridge를 통해 인트라넷으로 접속이 가능하게 된다. 이 과정을 SoftEther에서는 다음과 같이 설정한다.

사용자 지정 13-2

VPN 관리 화면에서 좌측 하단의 Local Bridge Setting을 선택한다.

사용자 지정 18-1

Local Bridge Setting 화면에서 먼저 인트라넷과 Bridge를 연결할 Virtual Hub를 선택한다. 이글에서는 DEFAULT라는 이름의 Virtual Hub를 Bridge로 연결할 것이다. 다음으로 Bridge에 사용할 네트워크 카드를 지정한다. 랜카드 이름은 ethX, 네트워크1과 같이 운영체제에서 네트워크 이름을 지정한 형태로 나타나게 된다. 여기에서는 “Red Hat (ID=3606764797)”이라는 랜카드 이름을 갖고 있다. SoftEther VPN 서버에 여러 개의 랜카드가 있을 경우 물리적으로 10.0.0.x 네트워크에 연결된 랜 카드를 지정한다. 그리고 Create Local Bridge를 눌러 Bridge를 활성화 한다.

사용자 지정 19-1

그림과 같이 DEFAULT Virtual Hub는 Red Hat (ID=3606764797) 이라는 이름의 랜카드를 이용해 Bridge가 동작하고 있음을 알 수 있다.

인터라넷접속

최종적으로 위의 그림과 같이 VPN 터널을 통해 접속한 사외 접속자는 로컬브리지를 거쳐서 인트라넷에 연결된 메일 서버나 파일 서버에 접속이 가능하게 된다.

이상으로 원격 접속을 위한 SoftEther VPN 서버 설치 및 구성이 완료되었다.

5. SoftEther VPN 클라이언트 설치 및 VPN 접속

이제 사외 접속자의 PC에 SoftEther VPN 클라이언트를 설치하고 회사 내부의 파일 서버와 메일 서버에 접속을 해보도록 한다.

사용자 지정 1

SoftEther VPN 다운로드 페이지에서 Windows 용 VPN 클라이언트를 다운로드하여 설치를 시작한다.

사용자 지정 2

SoftEther VPN Client를 선택하고 다음으로 진행한다. 이 때는 VPN Client Manager도 같이 설치된다. 만약 VPN Client Manager를 선택할 경우 관리툴만 설치된다.

사용자 지정 5

처음 설치가 완료된 후 Add VPN Connection을 선택하면 Virtual Network Adapter를 생성하라는 창이 나타난다. Virtual Network Adapter는 VPN 접속에 사용될 네트워크 어댑터로 나중에 “Virtual Adapter” 메뉴에서 생성할 수도 있다.

사용자 지정 6

VPN Network Adapter의 이름을 원하는 대로 입력한다. 여기에서는 네트워크 어뎁터 이름을 VPN으로 입력하였다.

사용자 지정 7

Virtual Network Adapter 생성 화면이 나타나면서 VPN Adapter가 생성된다.

사용자 지정 8

VPN Client Manager 화면에서 하단에 생성된 VPN Client Adapter가 나타난다. Add VPN Connection을 클릭하여 VPN 접속 정보를 입력한다.

사용자 지정 9

VPN Connection 설정 화면에서  설정 이름(Setting Name)과 VPN 서버의 정보를 입력한다. 우리가 사용할 SoftEther VPN 서버의 주소인 110.92.xxx.248을 입력하고 사용할 포트인 443과 Virtual Hub 이름인 DEFAULT를 선택한다. 그리고 우측에 서버에서 생성한 VPN 사용자 정보인 gotocloud와 암호를 입력한다.

사용자 지정 12

다음으로 Virtual Network Adapter에 VPN 접속 후에 사용할 IP 주소를 설정한다. 윈도우의 네트워크 설정 화면에서 VPN Adpater를 선택하고 회사 내부 네트워크에 접속이 가능한 IP 주소 10.0.0.x 와 서버넷 마스크, 게이트웨어 정보 및 DNS 서버 정보를 입력한다. 이 글에서는 회사 내부 네트워크인 10.0.0.x 대역에 해당하는 주소를 입력하였다. 만약, 사내의 10.0.0.x 대역에 자동으로 IP 할당이 가능한 DHCP 서버가 있을 경우는 “자동으로 주소받기”로 해두면 VPN 접속 후에 사내의 DHCP 서버에서 IP를 할당 받게할 수도 있다.

사용자 지정 16

VPN 접속 전에는 외부의 PC에서 내부 메일 서버나 파일 서버의 주소인 10.0.0.x 에 ping을 시도하여도 통신이 되지 않음을 알 수 있다.

사용자 지정 13

이제 생성한 VPN Connection인 Remote VPN Access를 선택하고 Connect를 누른다.

사용자 지정 14

VPN 접속이 성공하면 그림과 같이 Connected라는 상태로 변경되며 VPN 연결이 생성된다.

사용자 지정 15

이제 사내 서버인 10.0.0.3과 10.0.0.4에 ping을 시도해보면 접속이 성공했음을 알 수 있다.

이상으로 SoftEther VPN 서버를 회사 내부에 설치하고, 회사 외부에서 원격 접속 VPN을 구성하는 예를 살펴보았다. VPN을 이용하여 원격 접속을 허용할 경우 서버를 인터넷에 개방하지 않고, VPN 서버만을 개방한 후에 안전하게 접속할 수 있게 된다. 특히 SoftEther VPN과 같은 오픈소스 VPN 소프트웨어를 이용하면 별도의 상용 VPN 장비 없이도 손쉽게 VPN 서버를 구축할 수 있을 것이다.

추후에는 이 글에서 설치한 SoftEther VPN 서버를 통해 스마트폰 등에서 접속하는 방법 및 VPN Client에 자동으로 IP 주소를 할당하는 방법 등을 설명하고자 하니 이 글에서 설명한 SoftEther VPN 서버 설정을 잘 익혀두기를 바란다.

14 thoughts on “SoftEther VPN을 이용한 원격 접속 구현

  1. 자세한 설명의 정말 감사드립니다. 그런데 궁금한게 있습니다. 포트를 보통 https에 사용되는 443으로 할당하셨는데요. 그리하신 이유가 궁금합니다.

    이런 질문을 드리는 이유는 제 생각에는 vpn 서버에 할당된 포트는 알기 여럽게 하는게 좋다고 생각해서 제가 구축할 vpn 서버는 만번대 이상의 포트를 할당하는 것을 생각하고 있습니다. 제가 잘 몰라서 그런 생각을 하는지 softeher vpn 서버를 운영하면서 지정하신 포트를 사용해야 하는 것이 좋은지 깨우침 부탁드립니다.

  2. 제 생각에는 softether가 https 프로토콜을 가장하여 tunneling 하기 때문이라 생각합니다. softether 홈피에 관련 설명이 있습니다.

  3. 회사 내부에 vpn 서버를 설치하는 예제인데 그럴경우 포트를 하나는 개방을 해야하는데, 일반적으로 443을 많이 여니까요. SoftEther는 어떤 포트를 사용해도 상관이 없으니 원하는 포트를 사용하시면 될 듯. 다음에는 방화벽을 개방하지 않고 열려있는 포트에 tunnel을 연결하는 것을 설명하도록 해보겠습니다.

  4. 안녕하세요..

    덕분에 vpn을 잘 활용하고 있습니다..

    그런데 vpn을 사용하면 인터넷이 작동이 안되던데..

    로컬 연결영역이 알수없는 영역이라고 나옵니다..

    원래 vpn을 사용하여 원격사용하면 인터넷이 안되는지요….

    1. VPN을 사용하면 인터넷이 안되는 것이 아니라, 모든 네트워크 트래픽이 Client -> VPN Server -> 인터넷 이렇게 전송이 됩니다. 따라서 SoftEther VPN을 사용할때 인터넷이 안된다면, VPN Server와 인터넷 간의 연결 구간을 확인해 보셔야 합니다.

  5. softether 프로그램을통해서 컴퓨터에 설치하여 서버여는법말고 공유기에 vpn기능 ddns를 열어둔곳으로

    asus나 iptime 같은 공유기로요 접속할수도있나요?

    1. 이 글의 내용에서 두번째 그림의 Router에 해당되는 부분에 일반적인 공유기가 위치하게 되는데, 그 공유기의 VPN기능을 오픈하고 내부 서버로 Fortforwarding을 해도 VPN 연결이 가능합니다만, IPtime의 경우 PPTP로 접속하고, VPN 클라이언트에 공유기의 내부IP 중의 하나를 할당받게 되어 내부 서버에 접속이 가능합니다. 이때, 클라이언트는 PPTP를 지원하는 VPN 클라이언트(윈도우 내장에서 지원합니다)를 사용해서 수행하시면 됩니다.

      정리하자면, IPtime의 경우
      1. DDNS를 사용하여 공유기의 공인IP로 접속
      2. 공유기에 VPN서버를 설정하고 클라이언트에 내부IP를 할당
      3. PPTP 클라이언트를 사용하여 DDNS주소로 공유기에 접속 -> VPN서버에서 공유기 내부의 사설IP할당 -> 공유기 내부로 접속

      위의 순서로 접속하면 됩니다.

  6. 홈 네트워크에 언제든지 접근할 수 있도록 (같은 인터넷 망 안에 있다고 인식하도록) 만드려고 따라해보았는데

    동일 네트워크에서는 정상 작동하다가

    외부 네트워크에서 VPN 접속을 시도하면 (예를들면 핸드폰의 핫스팟) VPN 접속이 되지 않습니다.

    이유가 뭘까요…?

    1. 질문 내용만으로는 정확한 구성을 잘 모르겠네요… 일단 외부에서 VPN 서버로 접속하고자 할 경우에 443 포트 등이 제대로 오픈이 되어 있는지 확인하시기 바랍니다. 그리고, 핸드폰으로 VPN을 접속할 경우는 l2tp 설정이 되어 있어야 합니다.

  7. 안녕하세요.

    부서 내부에 vpn이 필요해 softethervpn 을 이용해 사용하고 있습니다. 헌데 연결은 잘되는데 내부 파일서버에 접근해서 용량이 있는 파일을 열면 너무오래 걸려서요…
    추가적인 설정이 있는건지 검색길에 설명이 잘되어 있는거 같아 질문드립니다.
    Vpn서버는 가상화 환경에서 운영중이고 내부 사설 ip와 공인 ip NAT 설정되어 있습니다.

    1. VPN 서버에 외부에서 말고 내부에서도 느리다면 VPN 서버 처리가 느릴 수 있으니 가상 머신 용량을 늘여보세요. 그리고 MTU가 안맞을 수도 있으니까 확인해보시고요

  8. 일반적인 환경에서의 설정일 경우
    (브로드밴드사 – 공유기 – 서버PC)
    설정은 공유기와 방화벽에서 따로 작업을 해주어야 작동을 하는 것이죠?
    그게 어렵네요 ㅠ

  9. 저는 호스트 컴퓨터에서 iptime 2004ns공유기를 사용중인데요 이 글을 읽고 그대로 해봤지만
    계속해서 error code1이 뜨네요…. 이틀동안 여기저기 찾아보고 계속 시도해봤지만 제가 완전 초보라 호스트서버에 접속이 안되는 원인을 도저히 못찾겠습니다 백신이 카스퍼스키 인터넷 시큐리티라 이거때문인지 아님 포트포워딩 해야하는 포트가 존재하는건지 아니면 방화벽때문인지 이것저것 해봐도 안되더라구여… ㅠㅠ 혹시 도움을 주실수 있을까 싶어서 간절한 마음으로 글 올려봅니다…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.