SoftEther를 활용한 리눅스 VPN 서버 구축

2018년 최신 글

구글 클라우드를 이용한 VPN 서버 구축 ( 첫 1년 무료)

들어가기 전에

SoftEther VPN은 일본의 츠쿠바 대학에서 개발한 VPN 툴로 매우 강력한 VPN 툴이다. 이 프로그램을 이용하면 SoftEther 자체 툴과 OpenVPN, L2TP/IPsec, SSTP 등 다양한 VPN 방식들을 동시에 사용할 수 있다. SoftEther VPN은 윈도우, 리눅스, 맥, FreeBSD, Solaris 를 지원하며 프리웨어인 동시에 오픈 소스이기 때문에 누구나 공짜로 사용가능하다.

1. SoftEther VPN 리눅스 서버 구축

서버 구축은 리눅스 Debian 7 32bit 환경을 기준으로 한다.

apt-get update && apt-get upgrade

http://www.softether-download.com/en.aspx?product=softether

여기에서 VPN 서버 리눅스 32bit 버전으로 선택한다.

33

가장 최신 버젼의 설치 파일의 주소를 복사한다.

wget http://www.softether-download.com/files/softether/v4.21-9613-beta-2016.04.24-tree/Linux/SoftEther_VPN_Server/32bit_-_Intel_x86/softether-vpnserver-v4.21-9613-beta-2016.04.24-linux-x86-32bit.tar.gz

wget 명령어 뒤에 파일 주소를 입력하고 다운로드 받는다.

tar xzvf softether 입력 후 탭키를 누르면 파일명이 자동완성된다.
apt-get install build-essential -y

이렇게 softether의 필수 패키지 설치가 완료되었다.

VPN 서버 구축

cd vpnserver
make

34

1을 입력하고 엔터 이후에도 1을 입력하고 엔터를 한다.

서버 시작시 vpn 서버 자동 실행 설정하기

cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/
chmod 600 *
chmod 700 vpnserver
chmod 700 vpncmd
vi /etc/init.d/vpnserver

파일 생성 후 아래 내용을 넣고 저장하고 종료한다.

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

아래 폴더가 없으면 생성해준다.

mkdir /var/lock/subsys

서비스 시작 권한 설정

chmod 755 /etc/init.d/vpnserver && /etc/init.d/vpnserver start

vpn 서버 자동시작

update-rc.d vpnserver defaults

vpn 서버 정상 작동 확인

cd /usr/local/vpnserver

./vpncmd

이후 3을 선택한 후

check

35

check 명령어를 입력하면 위와 같이 화면이 출력된다. 모두 Pass가 나왔다면 VPN 서버가 정상 작동하고 있다는 의미이다. exit를 입력하면 vpn 툴에서 빠져 나올 수 있다.

exit

Admin 비밀번호 변경하기

./vpncmd

이후 1번을 선택한다. 그 후 아무것도 입력하지 말고 그냥 엔터를 친다.

ServerPasswordSet

이후 사용할 Admin 패스워드를 입력한다.

Virtual Hub 생성

VPN이라는 Hub를 생성한다. 다른 이름으로 생성해도 상관없다.

HubCreate VPN

VPN 허브에 사용할 패스워드를 입력해준다.

아래 명령어를 통해 Hub를 선택해준다.

Hub VPN

SecureNAT 설정하기

hub에 접속하는 방법에는 두 가지가 있다. 로컬 브릿지를 사용하거나 SecureNAT을 이용하는 사용하는 방법인데, 로컬 브릿지를 사용하게 될 경우 DHCP 서버 설정을 해주어야 하는 부분이 있어 여기서는 간편하게 SecureNAT을 사용한다.

SecureNatEnable

사용자 생성 및 관리

VPN 서버에 접속할 사용자 아디를 생성하고 관리할 수 있다. 여러 가지 다양한 클라이언트 인증 방법이 있는데 여기서는 가장 편하게 사용하고 관리할 수 있는 비밀번호 인증방법을 사용한다.

test 라는 사용자를 생성한다. 다른 이름으로 생성해도 상관없다.

UserCreate test

이후 그룹, 이름, 설명 등을 입력하라고 나오는데 그냥 엔터를 치면된다.

사용자가 접속 시 입력하게 될 비밀번호를 생성한다.

UserPasswordSet test

이후 비밀번호를 입력한다.

이로써 SoftEther VPN 서버 설정이 완료되었다. 윈도우에 SoftEther VPN 클라이언트를 설치하여 사용하는 경우 아래 과정들은 생략하고 클라이언트를 설치하여 사용하면 된다.

L2TP/IPSec 연결 설정

이는 아이폰이나 안드로이드 기기 등을 통해 SoftEther VPN에 연결하고자 하는 경우 필요한 설정이다.

L2TP/IPSec을 이용한 VPN을 사용하고 싶을 경우 다음과 같은 명령어를 입력한다.

IPsecEnable

Enable L2TP over IPsec Server Function : L2TP에 IPsec 암호화를 사용할 것이냐는 질문이다. yes를 입력하면 아이폰, 안드로이드, 윈도우 그리고 맥을 통해 VPN 서버에 접속할 수 있다.

Enable Raw L2TP Server Function : yes를 입력하면 클라이언트가 L2TP 연결에 IPSec 암호화 없이도 연결할 수 있다.

Enable EtherIP / L2TPv3 over IPsec Server Function : yes를 선택하면 IPSec 암호화를 사용한 EtherIP/L2TPv3 방식으로 다른 라우터에서 연결 가능하다.

Pre Shared Key for IPsec : L2TP 연결에 사용할 암호키를 입력하면 된다.

Default Virtual HUB in a case of omitting the HUB on the Username : 어떤 Hub로 연결할지 설정하는 것이다. 앞서 VPN이란 Hub를 생성했으므로 VPN을 입력하면 된다. 그리고 L2TP에 연결할 때는 계정 부분에 test@VPN(사용자명@허브명) 으로 입력해야한다.

이로써 L2TP 서버 설정이 완료되었다. 이제 안드로이드 기기나 아이폰을 통해 SoftEther VPN에 연결할 수 있다.

SSTP/ OpenVPN 연결 설정

SoftEther VPN에서는 SSTP와 OpenVPN 연결도 지원한다. 이 기능을 사용하기에 앞서 우선 SSL 인증서를 생성해야 한다.

아래와 같이 입력한다. 명령어 뒤에는 자신의 서버 주소를 IP 주소나 도메인 네임으로 입력한다.

ServerCertRegenerate 자신의 서버 주소

생성한 인증서를 다운받기 위해 아래와 같이 입력한다.

ServerCertGet ~/cert.cer

이제 SFTP 프로그램을 이용해서 서버에 접속하면 /root 폴더에 cert.cer 이라는 인증서가 생성된 것을 확인 할 수 있다. 그것을 클라이언트에 다운로드 받아 사용하면된다.

인증서 체인 설치

sstp를 활성화 해준다.

SstpEnable yes

openvpn을 활성화 한다. 포트는 다른 포트를 설정해도 관계없다.

OpenVpnEnable yes /PORTS:1194

OpenVPN 설정 파일을 생성한다.

OpenVpnMakeConfig ~/my_openvpn_config.zip

마찬가지로 SFTP 프로그램을 이용하여 /root 폴더에서 다운로드 받아서 사용하면된다.

 

2. SoftEther VPN 윈도우 클라이언트 설치

http://www.softether-download.com/en.aspx

위 사이트에서 윈도우용 VPN 클라이언트 최신 버전을 다운받고 설치한다.

설치 후 SoftEther VPN 클라이언트를 실행하여 Add VPN Connection을 더블클릭한다.

36

Host Name에는 자신의 서버주소를 입력하고 Virtual Hub Name에는 hub 이름을 VPN으로 생성했으므로 VPN을 입력한다. User Name에는 생성했던 사용자명을 입력하고 비밀번호를 입력한다.

37

이후 오른쪽 아래에 Advanced Settings를 눌러 위와 같이 설정한다. TCP 연결을 최대 32개까지 할 수 있는데 확인해 본 결과 연결 개수가 많을수록 인터넷 속도 역시 증가하는 것을 확인할 수 있었다. 설정이 완료되었으면 OK를 한다. 그 후 VPN 연결을 하면 VPN 서버와 연결이 되고 VPN 서버를 통해 인터넷을 사용할 수 있다. SoftEther VPN의 경우 설정법이 어렵지 않아 쉽게 사용할 수 있고 443 포트를 이용하기 때문에 중국에서도 안정적으로 사용가능한 장점이 있다. 또한 L2TP 연결을 지원하기 때문에 안드로이드나 아이폰 등 다른 기기로도 원활한 접속이 가능하다.

3. Local Bridge 설정을 통해 VPN 속도 증가

이 페이지 참조

참조 사이트

https://www.digitalocean.com/community/tutorials/how-to-setup-a-multi-protocol-vpn-server-using-softether

SoftEther를 활용한 리눅스 VPN 서버 구축”에 대한 답글 4개

  1. 잘 정리된 글 덕분에 쉽고 빠르게 VPN 서버를 만들었습니다. 우선 이런 좋은 가이드 글을 써주신 것에 감사드립니다 😀
    다름이 아니고 L2TP/IPSec VPN 서버 설정을 하고 이것저것 해보던중 알게된 것이 있는데요. SoftEther 클라이언트 프로그램을 이용하면 접속이 잘 되는데 Windows나 Mac의 기본 VPN 연결로는 접속이 안되더라구요. 혹시 왜 그런지 이유를 알 수 있을까요?
    같은 사설망 안에 CentOS 6.6 기반의 SoftEther VPN서버(L2TP/IPSec)를 만들어서 테스트 진행을 했구요. 아래 사이트의 “Windows L2TP Client Setup” 파트와 “Mac OS X L2TP Client Setup” 파트를 참조하여 가상PC(Windows XP), 리얼MAC(Mac OS 10.11),리얼PC(Windows 10) 의 세 클라이언트에서 ID/PASSWORD/Key 등을 입력하고 테스트했습니다. 접속할 때 사용한 서버 주소는 서버의 사설아이피 주소입니다.
    https://www.softether.org/4-docs/2-howto/9.L2TPIPsec_Setup_Guide_for_SoftEther_VPN_Server

    좋아요

    • 자답입니다. 상단 글 내용중에 간과한 부분이 있었네요.
      “L2TP에 연결할 때는 계정 부분에 test@VPN(사용자명@허브명) 으로 입력해야한다.” 라는 부분인데요.
      VPN 연결시 사용자 이름(윈도우) 혹은 계정 이름(맥) 항목에 “사용자명@허브명” 으로 입력하면 정상적으로 접속이 됩니다. 댓글 형식이지만 저처럼 헤매는 분이 있다면 도움이 되었으면 좋겠습니다.

      좋아요

    • 지난달부터 중국에서 L2TP로는 접속이 안되는 현상이 발견되어 저도 현재 원인을 파악 중에 있습니다. 대안으로는 softether 관리 툴로 서버에 접속하셔서 OpenVPN 설정에 들어가시면 Generate a Sample Configuration File for OpenVPN Clinets라는 버튼이 있습니다. 그 버튼을 누르시면 자동으로 OpenVPN 접속 파일을 생성해주는데, 그안에서 remote access 파일을 사용하시면 openvpn연결이 가능합니다. 아이폰 같은 경우 openvpn connect 앱을 다운받으신 후 이메일로 접속파일을 다운받으셔서 추가해주시면 됩니다. 현재로선 아이폰이나 맥으로 L2TP 접속이 불가능하므로, OpenVPN을 통해 접속하는 방법 밖엔 없는것 같습니다.

      좋아요

댓글 남기기