SoftEther VPN IPv6 NAT

IPv6 에 NAT이라니;;
쓰는 호스팅이 IPv6 을 단 1 개만 줘서 어쩔수없이 NAT을 쓰게되었다.

DHCP 서버 설정

/etc/dnsmasq.conf

softether tap 인터페이스에 ip 할당 (IP는 필요하지 않음)

Centos 7 IPv6 Forward 활성화

/etc/sysctl.conf

ip6tables를 통한 SNAT 적용

SoftEther VPN에 VPN 클라이언트 어댑터를 하나 더 추가. 이 어댑터에는 IPv4 비활성화. IPv6만 활성화.

 

 

SoftEther VPN 서버 구축 (4) – TAP Device를 통한 Local Bridge 설정

SoftEther VPN SecureNAT

SoftEther VPN에 있는 SecureNAT은 Virtual DHCP 서버와 Virtual NAT을 구현한 SoftEther의 소프트웨어이다. 커널을 건들지 않아서 정말 어떠한 권한이나 시스템 설정 없이 바로바로 VPN을 구현시켜주는 가상 인터페이스이다.

참고 : https://blog.lincoln.hk/blog/2013/05/17/softether-on-vps-using-local-bridge/

문제점

  • 느리다.
  • 서버에 ICMP PING이 중복으로 처리되서 DUP 문제가 생긴다.
  • 호스트서버와 연결을 할 수 없다.

서버에 존재하지 않은 가상의 인터페이스이므로 호스트서버와 연결을 할 수 없다.

서버 아이피가 168.126.63.1 이고, 192.168.1.0/24 에 클라이언트가 있다고 쳐보자.
SecureNAT을 이용하는 클라이언트는 가상 DHCP 서버에게서 게이트웨이로 192.168.30.1의 주소를 받고, 192.168.30.101 의 아이피를 받았다.
그러나 게이트웨이 주소인 192.168.30.1은 서버에 없는 가상의 인터페이스이다.
서버와 통신까지 하고 싶다면, 서버가 그 SecureNAT VPN Client를 실행시켜 VPN에 접속해 아이피를 부여받는 방법 뿐이다.

 

해답은 SecureNAT 대신 Local Bridge을 이용

방법은 SecureNAT 대신 Local Bridge을 사용하는 것이다.
Local Bridge는 TAP어댑터를 이용해 구성을 할 것이다. OpenVZ 컨테이너에서는 커널을 변경할 수 없다. 그러나 대부분 TUN/TAP 어댑터를 지원하기 떄문에 이 방법으로 이용할 수 있다.

 

Disable SecureNAT

SecureNAT과 로컬브릿지 모드가 함께 작동하면, 트래픽이 무한루프에 빠져 CPU가 100%에 달하게 된다. 그래서 비활성화 해야한다.

Disable SoftEther VPN SecureNAT허브 관리메뉴에

SecureNAT 클릭.

Disable SecureNAT 클릭.

SecureNAT 비활성화 완료.

 

Local Bridge 설정

SoftEther VPN Local Bridge

Local Bridge Setting 클릭

SoftEther VPN Local Bridge기존의 Virtual Hub를 선택후,
New Tap Device 에 탭 디바이스이름을 넣고 로컬 브릿지 생성을 한다.
탭 디바이스는 어댑터에 머릿말로 tap_ 이 붙기 때문에 tap 이라는 이름은 삼가하자 ㅎㅎ

tap 디바이스가 생성되었는지 SSH 에서 확인한다.

DHCP 서버 설치

SecureNAT은 Virtual DHCP 서버가 포함돼 있었는데, 로컬 브리지로 설정하면 DHCP 서버도 구현해줘야한다. dnsmasq 소프트웨어로 DHCP서버를 구축하겠다.

설정할 NAT 주소 정보
네트워크 아이디 10.255.255.0
서브넷마스크 255.255.255.0 (/24)
게이트웨이 10.255.255.254
DHCP 할당 범위 10.255.255.100 – 10.255.255.250

dnsmasq 설치

RHEL 6, 7

yum install dnsmasq

Debian 9
apt install dnsmasq

dnsmasq 설정

/etc/dnsmasq.conf 를 에디터로 열어서 보기좋게

맨위에 있는 이 주석 라인 밑에 DHCP 설정값을 입력해야지.

를 입력해준다.

port=0 은 dnsmasq 가 기본적으로 DNS서버를 구현하는데 필요없어서 비활성화하였다.
필요한 경우 dns-server 옵션을 제거 후 기본 포트인 53으로 설정해서 쓰면 된다.

dnsmasq 재시작

systemctl restart dnsmasq

 

daemon 스크립트 변경

생성한 TAP 인터페이스에 아이피를 할당해야한다.
SoftEther VPN 서버가 실행될 때마다 자동으로 할당해주기 위해
/etc/init.d/vpnserver  를 에디터로 수정한다. (RHEL 7 기준)

데비안/우분투의 경우 스크립트가 조금 다르다. 주의.
어 그런데, 데비안/우분투 계열 최신 배포판에는 ifconfig 이 없는걸로 아는데??

수정한 데몬적용 및 서버 재시작

TAP 인터페이스에 아이피주소가 할당되었는지 확인.

 

VPN 서버 연결 테스트

10.255.255. 로 정상적으로 아이피를 부여받았다.

게이트웨이 아이피에 핑도 잘 된다.

IP 포워드

바로 위 상태까지 진행했다면, 당연히 인터넷이 되질 않는다. 내부 네트워크 (tap_sevpn)에서 인터넷(eth) IP를 이용해 나갈 수 있도록 포워딩을 해야한다.

/etc/sysctl.d/1-ipv4_forward.conf 를 생성 혹은 수정한다.

아래명령을 통해 sysctl 를 적용한다.

iptables POSTROUTING rule 추가

위는 IP 주소를 지정해야한다. 일반적인 서버에 그럴 일 없지만 IP주소가 동적아이피인경우

으로 사용한다.

iptables 저장

iptables 룰은 iptables 서비스가 재시작되거나 시스템이 재부팅되면, 룰이 날라가버린다.
이를 방지하기 위해 iptables를 유지시켜주는 프로그램을 설치한다. (RHEL 7 기준)

 

기타 참고사항

iptables 를 첫 실행시 iptables의 기본 방화벽이 설정되어 DHCP 서버가 차단되는 불상사가?? 있었다. 이 경우 iptables 룰을 제거 후, 다시 설정한 뒤 save를 하자.

iptables 룰 제거 명령 (참고: https://serverfault.com/questions/200635/best-way-to-clear-all-iptables-rules)

SoftEther VPN 서버 구축 (3) – SoftEther VPN Client로 VPN 연결

SoftEther VPN Client

SoftEther VPN 에서 제공하는 VPN Client 또는
VPNGate 에서 제공하는 SoftEther VPN Client + VPN Gate Client Plugin 을 사용한다.

설치 과정 생략.

VPN 어댑터가 없는경우 어댑터를 추가한다는 메시지가 뜰수있다.

Add VPN Connection 을 누른다.

SoftEther VPN Client

이전단계에서 생성한 계정과 서버 호스트네임으로 프로필을 생성한다.

생성된 VPN 프로필에 연결을 하면

성공.

SoftEther VPN 서버 구축 (2) – 계정 및 SecureNAT 설정

SoftEther VPN Manager for Windows

를 실행하여 관리할 서버에 접속 후

가상허브 VPN 을 선택 후 Manage Virtual Hub 를 클릭

계정생성

Manage Users를 클릭.

계정 새로만들기 (New) 클릭.

사용자 이름, 사용자 ID, 패스워드를 설정하고 확인을 누른다.

계정이 생성됨을 확인하였으면, 창을 닫는다.

SecureNAT 설정

가상허브 관리창에서

Virtual NAT and Virtual DHCP Server (SecureNAT) 을 클릭.

Enable SecureNAT 을 클릭하면 SecureNAT이 활성화 됨.

SecureNAT 의 네트워크주소를 변경하고자 할 때

굳이 건들 필요가 없으므로, 이 섹션은 스킵해도 됩니다.

SecureNAT Configuration 을 클릭.

원하는 NAT 주소로 변경한다.
내부네트워크 사정으로 192.168.30.0/24 를 사용할 수 없거나, 접속클라이언트가 200 세션이상 뛰어넘는다는 등의 경우에 특히 필요할 것이다.

보안설정

Encryption and Network 를 클릭

암호 알고리즘을 선택, 아래 ECDHE-RSA- 가 가장 강력하지만, VPN으로 쓰기엔 처리속도가 매우 느리다. 메신저등의 용도로 쓰는 경우가 아니라면, AES128-SHA 또는 AES128-GCM-SHA256 을 추천한다.

VPN over ICMP / DNS Settings는 필요한 경우 설정한다.

확인을 누르면 VPN을 사용할 수 있는 기본적인 설정은 끝났다.

SoftEther VPN 서버 구축 (1) – SoftEther VPN을 이용한 겁나 쉬운 VPN 서버 구축

SoftEther VPN

SoftEther VPN 은 Tsukuba University 에서 만든 겁나 좋은 VPN 소프트웨어다.

  • 서버 소프트웨어는 다양한 플랫폼에서 지원하고 있다.

나는 Centos 7 로 구축해야지.

SoftEther VPN 공식 사이트에서는 리눅스플랫폼의 경우 RHEL (Centos, Fedora) 계열의 배포판을 매우 권장하고 있다.

 

Download

이곳에서 각 플랫폼별로 파일을 제공한다. 리눅스는 빌드해서 써야되나보다.
VPN 서버를 구축할 거니깐 SoftEtherVPN Server 리눅스 tar.gz 파일로 내려받는다.

 

SoftEther VPN Server Download

 

설치

라이브러리 설치

SoftEther VPN 패키지 설치에 필요한 라이브러리를 먼저 설치한다.

RHEL7 (Centos 7, Fedora >=19)

Debian (Ubuntu)

또는 구버전 OS인 경우 apt-get

패키지 압축해제

다운받은 tar.gz 파일을 압축한다. tar xvzf [받은파일명]

 

프로그램 생성

vpnserver 디렉토리가 생성됨을 알 수있다.
cd 명령으로 vpnserver 디렉토리로 접속한다.
[[email protected] ~]# cd vpnserver/
[[email protected] vpnserver]#

make 를 이용해 실행파일을 생성한다.

License Agreement 에 동의한다. 1 입력 후 엔터를 누르면 된다… 과정이 두번 정도 더 있다.

 

이게 뜨면 됐겠지.

 

VPN 서버위치

생성된 vpnserver의 위치를 변경할거다.

 

VPN 서버 실행파일 권한변경

보안을 위해 vpnserver 관련파일의 권한을 root 만 손댈수 있도록 변경해준다.

 

vpnserver 서비스 등록

/etc/init.d/vpnserver 파일을 생성 및 수정하여 아래와 같은 스크립트를 넣는다.

데비안 계열 (우분투 포함) 사용자는 설정 방법이 좀 다르다. 자세한건 인터넷을 참조

데몬 스크립트 권한 수정

데몬 적용

서버 시작

 

서버 셋팅

여기서 이번엔 SoftEther VPN Server Manager for Windows 를 내려받아 설치 및 실행시킨다.

새로운 설정 (New Settings) 를 눌러 VPN서버와의 연결을 설정한다.
softether vpn manager
포트는 443이 HTTPS 포트라서 이미 쓰고 있는 경우가 생긴다면 5555포트 등으로 시도한다.

첫 접속 시도시 관리자 비밀번호를 설정하라는 메시지가 뜬다. 설정해주자.


난 전문가가 아니니 VPN을 쉽게쉽게 설정해 줄 팝업을 이용한다.
Remote Access VPN Server 를 선택 후 다음.

초기화됩니다. – 예.

VPN 가상 허브의 이름을 주라고 한다. 상관없으니 기본값인 VPN 이라고 명명하겠다.

SoftEther VPN 서버 설정시 DDNS 를 강제이자? 무료로 가입시켜준다. 확인하면 닫는다.

닫으면 IPsec / L2TP 설정창이 뜬다.

암호화되지 않는 L2TP 서버, Ether IP / L2TPv3 over IPsec 들은 우리와 크게 친화적이지 않으니,
L2TP over IPsec 만 체크한다.

아래 있는 IPsec pre-shared 키는 약간의 비밀아이디 같은건데, 잊기 쉬우므로 그냥 확인을 누른다.

VPN Azure Cloud… 도 친하지 않으므로 그냥 사용 안 함으로 설정한 뒤 확인을 누른다.

마지막 나머지 설정을 하라고 하는데, 우선 패스하겠다.
창을 닫는다.

여기까지 과정을 마쳤으면 OpenVPN 까지 기본으로 설정된다.

 

방화벽 설정에 대하여

방화벽이 설정되어있다면, VPN 서버에 대한 방화벽을 허용해 주자.
SoftEther VPN 은 기본적으로 5555 포트를 사용하며,
기본값으로 설정되어있는 포트는 443, 993, 1194, 5555 포트로
993 포트는 IMAP (메일서버),
1194 포트는 OpenVPN 의 기본포트고, 443 포트는 HTTPS 서버의 포트다.
ISP/회사/학교/China Great Firewall 등 특수한 환경에서 VPN 포트를 차단할 가능성이 높기때문에, 통상 사용하는 443 포트도 기본적으로 쓰인다. 웹서버와 겹치기 때문에, HTTPS 서버를 같이 운용한다면 포트를 제거해줘야 정상적으로 운용할 수있다.

iptables의 경우

이건 5555 포트만을 위한 예시이며, 상황에 맞게 당연히 변경해야한다. OpenVPN는 UDP를 기본적으로 사용하는듯.

 

나머지 설정은 다음포스트에서!