웹사이트 검색

OpenSUSE Leap 42.1에서 OpenVPN을 설치 및 구성하는 방법


이 페이지에서

  1. 1단계 - TUN/TAP 활성화 여부 확인\n
  2. 2단계 - OpenVPN 설치
  3. 3단계 - 간편한 RSA 설정\n
  4. 4단계 - OpenVPN 구성
  5. 5단계 - SuSEfirewall2 구성
  6. 5단계 - 클라이언트 구성
  7. 참조

VPN 또는 가상 사설망은 인터넷과 같은 공용 네트워크를 통한 안전한 사설망입니다. VPN은 데이터 트래픽을 보호하고 인터넷 개인 정보 보호 및 보안을 강화하는 인터넷을 통한 보안 터널입니다. VPN에 대한 액세스는 보안 인증 방법으로 제한됩니다.

OpenVPN은 가상 사설망을 구축하기 위한 오픈 소스 소프트웨어이며 OpenSSL 라이브러리를 사용하여 터널링된 데이터를 암호화하고 UDP 또는 TCP 전송을 지원합니다. OpenVPN은 사전 공유 키, 인증서 기반 및 사용자 이름/암호 기반 인증 메커니즘을 사용할 수 있습니다.

이 튜토리얼에서는 Linux 운영 체제 OpenSUSE Leap 42.1에서 OpenVPNvpn을 사용하여 가상 사설망을 구현하는 방법을 보여줍니다.

전제 조건

  • OpenSUSE 도약 42.1 - 64비트
  • 루트 권한\n
  • TUN/TAP 활성화\n

1단계 - TUN/TAP 활성화 여부 확인

서버에 VPN을 만들려면 TUN/TAP가 설치되고 사용 설정되어 있는지 확인하세요. 아래 명령으로 확인할 수 있습니다.

cat /dev/net/tun

결과는 다음과 같아야 합니다.

cat: /dev/net/tun: File descriptor in bad state

2단계 - OpenVPN 설치

OpenVPN은 OpenSUSE 리포지토리에서 사용할 수 있습니다. zypper 명령을 사용하여 설치할 수 있습니다.

zypper in openvpn

3단계 - 간편한 RSA 설정

다음으로 easy-rsa를 다운로드하여 인증서 파일을 생성합니다. easy-rsa는 인증서를 관리하는 유틸리티로, 이를 사용하여 루트 인증 기관을 만들고 인증서를 요청하고 서명할 수 있습니다.

OpenVPN 디렉토리로 이동하여 wget 명령으로 easy-rsa를 다운로드합니다.

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/archive/release/2.x.zip

아카이브를 추출하고 easy-rsa 디렉토리를 이동합니다.

unzip 2.x.zip
mv easy-rsa-release-2.x/easy-rsa/ /etc/openvpn/
rm -rf easy-rsa-release-2.x/

키 구성

easy-rsa 디렉토리로 이동하고 vars 파일을 편집하여 키와 인증서를 구성합니다.

cd easy-rsa/2.0/
vim vars

53행 - 정말로 편집증이 있다면 키 크기를 늘릴 수 있습니다.

export KEY_SIZE=2048

56행 및 59행 - 키와 인증서가 만료되는 일수입니다.

export CA_EXPIRE=3650
export KEY_EXPIRE=3650

Line 64 - 72 - 키 및 인증서 정보의 기본값을 변경합니다.

export KEY_COUNTRY="US"
export KEY_PROVINCE="California"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL=""
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

파일을 저장하고 종료합니다.

PKI 초기화

다음으로 PKI(Public Key Infrastructure)를 초기화합니다.

source ./vars && ./clean-all && ./build-ca

기본값을 그대로 두고 \Enter\를 누르십시오.

Diffie Hellman 매개변수 생성

아래 명령을 실행합니다.

./build-dh

출력이 표시됩니다.

Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..................................

서버 개인 키 생성

이름이 "server"인 개인 키를 생성합니다.

./build-key-server server

Enter 키를 누르고 "y"를 입력하여 키 생성을 확인합니다.

클라이언트용 키 및 인증서 생성

이름이 "client1"인 클라이언트 키와 인증서를 생성합니다.

./build-key client1

Enter 키를 누르고 "y"를 입력하여 키 생성을 확인합니다.

키와 인증서는 \keys\ 디렉토리에 생성되었습니다. 이제 \keys\ 디렉토리의 복사본을 만들어 \openvpn\ 디렉토리에 넣습니다.

cp -r keys/ /etc/openvpn/

4단계 - OpenVPN 구성

이 단계에서는 클라이언트 연결에 포트 2034를 사용하여 UDP 프로토콜에서 실행되도록 OpenVPN을 구성합니다. OpenVPN 디렉터리에 새 구성 파일 server.conf를 만듭니다.

cd /etc/openvpn/
vim server.conf

아래 구성을 붙여넣습니다.

#change with your port
port 2034

#You can use udp or tcp
proto udp

# "dev tun" will create a routed IP tunnel.
dev tun

#Certificate Configuration

#ca certificate
ca /etc/openvpn/keys/ca.crt

#Server Certificate
cert /etc/openvpn/keys/server.crt

#Server Key and keep this is secret
key /etc/openvpn/keys/server.key

#See the size a dh key in /etc/openvpn/keys/
dh /etc/openvpn/keys/dh2048.pem

#Internal IP will get when already connect
server 10.10.2.0 255.255.255.0

#this line will redirect all traffic through our OpenVPN
push "redirect-gateway def1"

#Provide DNS servers to the client, you can use goolge DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

#Enable multiple client to connect with same key
duplicate-cn

keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon

#openvpn status log
status /var/log/openvpn/openvpn-status.log

#enable log
log-append /var/log/openvpn/openvpn.log

#Log Level
verb 3

파일을 저장하고 편집기를 종료합니다.

다음으로 openvpn 로그에 대한 새 디렉터리와 파일을 만듭니다.

mkdir -p /var/log/openvpn/
touch /var/log/openvpn/{openvpn,openvpn-status}.log

5단계 - SuSEfirewall2 구성

SuSEfirewall2는 "/etc/sysconfig/SuSEfirewall2" 파일을 기반으로 iptables 규칙을 생성하기 위한 스크립트입니다. SuSEfirewall2를 설치하고 OpenVPN에 액세스하도록 포트를 구성한 다음 OpenVPN용 iptables 스크립트로 NAT를 활성화합니다.

zypper 명령을 사용하여 SuSEfirewall2를 설치합니다.

zypper in SuSEfirewall2

이제 sysconfig 디렉토리로 이동하여 SuSEfirewall2 구성 파일을 편집합니다.

cd /etc/sysconfig/
vim SuSEfirewall2

134행 - 경로를 활성화합니다.

FW_ROUTE="yes"

253행 - 네트워크 외부에서 SSH 액세스를 위해 TCP 포트 22를 활성화합니다.

FW_SERVICES_EXT_UDP="22"

Line 267 - openvpn 클라이언트 액세스를 위해 udp 포트 활성화 - 포트 2034.

FW_SERVICES_EXT_UDP="2034"

877행 - 사용자 정의 규칙 SuSEfirewall2를 활성화합니다.

FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"

저장 및 종료.

그런 다음 scripts 디렉터리에서 SuSEfirewall2 사용자 지정 규칙을 편집합니다.

cd /etc/sysconfig/scripts/
vim SuSEfirewall2-custom

"fw_custom_after_chain_creation" 지시문 안에 OpenVPN에 대한 새 iptables 규칙을 붙여넣습니다.

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.2.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.2.0/24 -o eth0 -j MASQUERADE

저장 및 종료.

메모:

IP 10.10.2.0/24는 server.conf OpenVPN 구성 파일의 네트워크입니다.

이제 이 새로운 구성 행을 sysctl.conf 파일에 추가하여 전달을 활성화할 수 있습니다.

vim /etc/sysctl.conf

아래에 구성 붙여넣기:

net.ipv4.ip_forward = 1

저장 및 종료.

메모:

파일에 줄이 이미 있는 경우 새 줄을 추가하는 대신 값을 "0"에서 "1"로 변경합니다.

이제 아래 명령어를 실행하여 구성 변경을 적용하세요.

sysctl -p

SuSEfirewall2 및 OpenVPN 서버 시작:

systemctl start SuSEfirewall2
systemctl start

오류가 있는 경우 OpenVPN 로그에서 자세한 오류 메시지를 볼 수 있습니다.

시스템 시작에 모든 서비스를 추가합니다.

systemctl enable SuSEfirewall2
systemctl enable

5단계 - 클라이언트 구성

키 디렉터리에서 로컬 컴퓨터로 클라이언트 키와 인증서를 다운로드합니다. scp 명령이나 sftp를 사용할 수 있습니다. 여기서는 scp를 사용합니다.

로컬 컴퓨터에서 실행해야 하는 명령입니다.

scp :~/etc/openvpn/keys/client1.key ~/myvpn/

myvpn 디렉터리에서 클라이언트 "client1.ovpn"에 대한 새 구성 파일을 만듭니다.

cd ~/myvpn/
vim client1.ovpn

아래 구성을 붙여넣습니다.

client
dev tun
proto udp

#Server IP and Port
remote SERVERIP 2034

resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo

저장 및 종료.

VPN에 연결하려면 VPN 클라이언트를 설치하거나 Linux를 사용하는 경우 "Network-Manager"를 사용할 수 있습니다. 터미널로 VPN을 테스트하려면 아래 명령을 사용할 수 있습니다.

cd ~/myvpn/
sudo openvpn --config client1.ovpn

참조