11. VPN / SSH 터널링

원격 관리 서버에 접속하기 위해 VPN 또는 SSH 터널링을 이용할 수 있습니다.

특히, 아마존 AWS 라이트세일 한국 지역을 선택할 경우 국내 접속으로 처리할 수 있습니다.

SoftEther VPN

VPN 서버 구축

우분투 패키지 업데이트 및 빌드 도구 설치

$ sudo apt-get update && sudo apt-get dist-upgrade
$ sudo apt-get install build-essential

SoftEther VPN 서버 다운로드 및 압축 풀기

SoftEther VPN 컴포넌트, Linux 플랫폼, Intel x64/AMD 64 CPU를 선택하면 현재 가장 최신 버전은 Ver 4.28, Build 9669, beta입니다.

$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.28-9669-beta/softether-vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz
$ tar zxvf softether-vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz

SoftEther VPN 서버 소스 빌드

$ cd vpnserver
$ make

중간에 라이센스 동의를 위해서 1을 세번 누릅니다.

SoftEther VPN 서버 설치

서버 설치라는 게 결국 /usr/local 디렉토리에 놓는 것 뿐입니다.

$ cd ..
$ sudo mv vpnserver/ /usr/local
$ cd /usr/local/vpnserver/

보안을 위해 파일의 권한을 아래와 같이 변경합니다.

$ sudo chmod 600 *
$ sudo chmod 700 vpnserver vpncmd

명령행에서 VPN 서버 실행 및 종료

sudo ./vpnserver start 명령으로 VPN 서버를 실행하고 아래와 같이 결과를 확인할 수 있습니다.

$ sudo ./vpnserver start
The SoftEther VPN Server service has been started.
$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:992             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN
tcp6       0      0 :::5555                 :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN
tcp6       0      0 :::992                  :::*                    LISTEN
tcp6       0      0 :::1194                 :::*                    LISTEN

sudo ./vpnserver stop 명령으로 VPN 서버를 종료하고 아래와 같이 결과를 확인할 수 있습니다.

$ sudo ./vpnserver stop
Stopping the SoftEther VPN Server service ...
SoftEther VPN Server service has been stopped.
$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

vpncmd 관리 명령어

vpncmd 명령어로 VPN 서버를 관리합니다.

그 전에 앞서 sudo ./vpnserver start 명령으로 VPN 서버를 미리 구동해둡니다.

서버 정상 가동 여부 테스트

sudo ./vpncmd 명령을 실행하고 3, check를 차례로 입력합니다.

$ sudo ./vpncmd
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.28 Build 9669   (English)
Compiled 2018/09/11 12:23:27 by yagi at pc33
Copyright (c) SoftEther VPN Project. All Rights Reserved.

By using vpncmd program, the following can be achieved.

1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 3

VPN Tools has been launched. By inputting HELP, you can view a list of the commands that can be used.

VPN Tools>check
Check command - Check whether SoftEther VPN Operation is Possible
---------------------------------------------------
SoftEther VPN Operation Environment Check Tool

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait...

Checking 'Kernel System'...
              Pass
Checking 'Memory Operation System'...
              Pass
Checking 'ANSI / Unicode string processing system'...
              Pass
Checking 'File system'...
              Pass
Checking 'Thread processing system'...
              Pass
Checking 'Network system'...
              Pass

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.

The command completed successfully.

VPN Tools>exit

VPN 서버를 올바르게 실행하려면 All checks passed. 결과가 나와야 합니다.

VPN 서버 관리를 위한 접속 확인

VPN 서버를 구동한 상태에서 sudo ./vpncmd 명령을 실행하고 1, localhost:5555를 차례로 입력하여 VPN 서버에 접속합니다.

$ sudo ./vpncmd
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.28 Build 9669   (English)
Compiled 2018/09/11 12:23:27 by yagi at pc33
Copyright (c) SoftEther VPN Project. All Rights Reserved.

By using vpncmd program, the following can be achieved.

1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 1

Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on.
By specifying according to the format 'host name:port number', you can also specify the port number.
(When the port number is unspecified, 443 is used.)
If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer).
Hostname of IP Address of Destination: localhost:5555

If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name.
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name:
Connection has been established with VPN Server "localhost" (port 5555).

You have administrator privileges for the entire VPN Server.

VPN Server>

관리자 비밀번호 변경

VPN Server>ServerPasswordSet
ServerPasswordSet command - Set VPN Server Administrator Password
Please enter the password. To cancel press the Ctrl+D key.

Password: *************
Confirm input: *************


The command completed successfully.

허브 생성

test 허브를 생성한다고 가정합니다.

VPN Server>HubCreate test
HubCreate command - Create New Virtual Hub
Please enter the password. To cancel press the Ctrl+D key.

Password: *****
Confirm input:

The command completed successfully.

보안 NAT 연결

test 허브가 보안 NAT 연결을 지원하도록 합니다.

VPN Server>Hub test
Hub command - Select Virtual Hub to Manage
The Virtual Hub "test" has been selected.
The command completed successfully.

VPN Server/test>SecureNatEnable
SecureNatEnable command - Enable the Virtual NAT and DHCP Server Function (SecureNat Function)
The command completed successfully.

사용자 추가 및 비밀번호 설정

test 허브에 egg 사용자를 추가하고 비밀번호를 설정하려면 UserCreate egg, UserPasswordSet egg 명령어를 입력합니다.

VPN Server/test>UserCreate egg
UserCreate command - Create User
Assigned Group Name:

User Full Name:

User Description:

The command completed successfully.

VPN Server/test>UserPasswordSet egg
UserPasswordSet command - Set Password Authentication for User Auth Type and Set Password
Please enter the password. To cancel press the Ctrl+D key.

Password: *************
Confirm input: *************


The command completed successfully.

L2TP/IPSec 연결 설정

안드로이드/아이폰 스마트폰에서 VPN 서버 연결을 지원하는 설정입니다.

test 허브로 들어가지 않고 기본 설정을 해야 Not enough privileges 에러가 발생하지 않습니다. 프롬프트가 VPN Server>test가 아니라 VPN Server>인 것을 반드시 먼저 확인합니다.

VPN Server>IPSecEnable
IPsecEnable command - Enable or Disable IPsec VPN Server Function
Enable L2TP over IPsec Server Function (yes / no): yes

Enable Raw L2TP Server Function (yes / no): no

Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): no

Pre Shared Key for IPsec (Recommended: 9 letters at maximum): test

Default Virtual HUB in a case of omitting the HUB on the Username: test

The command completed successfully.

VPN Server>

우분투 서비스 등록

/etc/systemd/system/vpnserver.service 파일을 아래 내용으로 만듭니다.

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

이제 아래와 같이 시작 서비스로 등록 후 재시작하도록 합니다.

$ sudo systemctl daemon-reload
$ sudo systemctl enable vpnserver
Created symlink /etc/systemd/system/multi-user.target.wants/vpnserver.service  /etc/systemd/system/vpnserver.service.
$ sudo systemctl restart vpnserver

포트 개방

아래의 포트는 PC 기반 클라이언트 사용할 경우 반드시 열려 있어야 합니다.

  • TCP 443

아래의 포트는 스마트폰으로 L2TP/IPSec 프로토콜 연결 시 반드시 열려 있어야 합니다.

  • UDP 500
  • UDP 1701
  • UDP 4500

참고로 아마존 AWS Ligthsail의 경우 UDP 포트는 웹 관리자 화면에서 직접 열어줘야 합니다.

SoftEther VPN 서버 업데이트

$ wget 바이너리파일.tar.gz
$ tar zxvf 바이너리파일.tar.gz
$ cd vpnserver/
$ make
$ cd ..
$ sudo /usr/local/vpnserver/vpnserver stop
$ sudo cp -r vpnserver/ /usr/local
$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpnserver vpncmd
$ sudo ./vpnserver start

VPN 클라이언트

윈도우

VPN 연결

  • Host Name: VPN 서버 아이피 주소
  • Port Number: 443
  • Virtual Hub Name: test
  • User Name: egg
  • Password: 비밀번호

스마트폰

  • 타입: L2TP/IPSec PSK
  • 서버주소: VPN 서버 아이피 주소
  • IPSec 사전 공유 키: test
  • 사용자 이름: egg@test
  • 비밀번호: 비밀번호

SSH 터널링

최종 수정일시: 2019-05-28 15:05

blog comments powered by Disqus