웹사이트 검색

CentOS 6에서 OpenVPN 서버를 설정하고 구성하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 CentOS 버전에 대해 설명합니다. 현재 CentOS 6을 실행하는 서버를 운영 중인 경우 지원되는 버전의 CentOS로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

이유:

대신 참조:

다음 DigitalOcean 튜토리얼은 CentOS 7 서버에 OpenVPN을 설치하고 구성하는 방법을 간략하게 설명하므로 즉시 관심을 가질 수 있습니다.

  • CentOS 7에서 OpenVPN 서버를 설정하고 구성하는 방법

소개

이 문서는 CentOS 6 클라우드 서버에서 OpenVPN 서버의 설정 및 구성을 안내합니다. 새로 설치된 OpenVPN 서버에 연결하기 위해 Windows, OS X 또는 Linux 클라이언트를 구성하는 방법도 다룰 것입니다.

시작하기 전에 클라우드 서버에서 EPEL(Extra Packages for Enterprise Linux) 리포지토리를 활성화해야 합니다. 이것은 OpenVPN 패키지를 제공할 Fedora 프로젝트에서 제공하는 타사 리포지토리입니다.

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

초기 OpenVPN 구성

먼저 EPEL에서 OpenVPN 패키지를 설치합니다.

yum install openvpn -y

OpenVPN은 샘플 구성만 제공하므로 구성 파일을 대상에 복사합니다.

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

이제 적절한 위치에 파일이 있으므로 편집을 위해 엽니다.

nano -w /etc/openvpn/server.conf

첫 번째 변경 사항은 클라이언트 시스템의 트래픽이 OpenVPN을 통해 라우팅되도록 하는 "push" 매개변수의 주석을 제거하는 것입니다.

push "redirect-gateway def1 bypass-dhcp"

또한 경로 DNS 쿼리를 바로 따르는 섹션을 Google의 공용 DNS 서버로 변경하고 싶습니다.

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

또한 보안을 강화하려면 시작 후 OpenVPN이 권한을 삭제하는지 확인하십시오. 관련된 "user" 및 "group" 줄의 주석을 제거하십시오.

user nobody
group nobody

easy-rsa를 사용하여 키 및 인증서 생성

이제 구성 파일 수정을 마쳤으므로 필요한 키와 인증서를 생성합니다. 구성 파일과 마찬가지로 OpenVPN은 기본적으로 문서 폴더에 필요한 스크립트를 배치합니다. 필요한 폴더를 만들고 파일을 복사합니다.

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa

파일이 원하는 위치에 있는 경우 필요한 정보가 있는 easy-rsa 스크립트를 제공하는 "vars" 파일을 잘 편집하십시오.

nano -w /etc/openvpn/easy-rsa/vars

파일 하단에 있는 "KEY_" 변수를 수정하려고 했습니다. 변수 이름은 상당히 설명적이며 적용 가능한 정보로 채워져야 합니다.

완료되면 "vars" 파일의 맨 아래가 다음과 유사하게 나타납니다.

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="administrator@example.com"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

OpenVPN은 CentOS 6에서 OpenSSL 버전을 제대로 감지하지 못할 수 있습니다. 예방 조치로 필요한 OpenSSL 구성 파일을 수동으로 복사하십시오.

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

이제 작업 디렉토리로 변경하고 위에서 제공된 정보를 기반으로 인증 기관(CA)을 빌드합니다.

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca

이제 CA가 있으므로 OpenVPN 서버용 인증서를 생성합니다. build-key-server에서 물으면 예라고 대답하여 커밋합니다.

./build-key-server server

또한 다음과 같이 build-dh 스크립트를 사용하여 Diffie Hellman 키 교환 파일을 생성하고 모든 파일을 /etc/openvpn에 복사해야 했습니다.

./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

클라이언트가 인증할 수 있도록 하려면 클라이언트 인증서를 만들어야 합니다. 필요에 따라 이를 반복하여 각 클라이언트 또는 장치에 대해 고유한 인증서 및 키를 생성할 수 있습니다. 두 개 이상의 인증서 쌍을 보유하려는 경우 설명이 포함된 파일 이름을 사용해야 합니다.

cd /etc/openvpn/easy-rsa
./build-key client

라우팅 구성 및 OpenVPN 서버 시작

VPN 서브넷의 적절한 라우팅을 허용하는 iptables 규칙을 만듭니다.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save

그런 다음 sysctl에서 IP 전달을 활성화합니다.

nano -w /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

마지막으로 새로운 sysctl 설정을 적용합니다. 서버를 시작하고 부팅 시 자동으로 시작되는지 확인합니다.

sysctl -p
service openvpn start
chkconfig openvpn on

이제 작동하는 OpenVPN 서버가 있습니다. 다음 단계에서는 클라이언트를 올바르게 구성하는 방법에 대해 자세히 설명합니다.

OpenVPN 클라이언트 구성

이제 OpenVPN 서버가 온라인 상태이므로 연결하도록 클라이언트를 구성할 수 있습니다. 사용 중인 운영 체제에 관계없이 단계는 대체로 동일합니다.

계속하려면 원격 서버에서 ca.crt, client.crt 및 client.key 파일을 검색해야 합니다. 선호하는 SFTP/SCP(Secure File Transfer Protocol/Secure Copy) 클라이언트를 사용하여 로컬 디렉터리로 옮기기만 하면 됩니다. 또는 nano에서 파일을 열고 내용을 수동으로 로컬 파일에 복사할 수 있습니다. client.crt 및 client.key 파일은 이전에 "./build-key"와 함께 사용된 매개변수에 따라 자동으로 이름이 지정됩니다. 필요한 모든 파일은 /etc/openvpn/easy-rsa/keys에 있습니다.

nano -w /etc/openvpn/easy-rsa/keys/ca.crt
nano -w /etc/openvpn/easy-rsa/keys/client.crt
nano -w /etc/openvpn/easy-rsa/keys/client.key

이제 클라이언트 시스템에 있는 인증서를 사용하여 client.ovpn이라는 또 다른 새 파일을 생성합니다. 여기서 "client"는 빌드 키에서 배포되는 클라이언트의 이름과 일치해야 합니다. 콘텐츠는 다음과 같아야 합니다. \x.x.x.x"에 클라우드 서버 IP 주소를 지정하고 해당 파일을 지정된 영역에 붙여넣습니다. 아래와 같이 "BEGIN" 헤더 행에서 시작하여 "END" 행까지 내용만 포함하십시오. 인증 토큰과 마찬가지로 이러한 파일을 기밀로 유지해야 합니다.

client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
Contents of ca.crt
</ca>
<cert>
Contents of client.crt
</cert>
<key>
Contents of client.key
</key>

연결을 설정하는 데 필요한 모든 정보가 이제 .ovpn 파일에 집중되어 있으므로 이제 클라이언트 시스템에 배포할 수 있습니다.

Windows에서는 버전에 관계없이 GUI와 함께 사전 패키지로 제공되는 공식 OpenVPN Community Edition 바이너리가 필요합니다. 설치 후 필요한 유일한 단계는 .ovpn 구성 파일을 적절한 디렉토리(C:\\Program Files\\OpenVP

Mac OS X에서 오픈 소스 응용 프로그램 "Tunnelblick"은 Windows의 OpenVPN GUI와 유사한 인터페이스를 제공하며 OpenVPN 및 필수 TUN/TAP 드라이버와 함께 사전 패키지로 제공됩니다. Windows와 마찬가지로 필요한 유일한 단계는 .ovpn 구성 파일을 ~/Library/Application Support/Tunnelblick/Configurations 디렉토리에 배치하는 것입니다.

Linux에서는 배포 공식 리포지토리에서 OpenVPN을 설치해야 합니다. 그런 다음 간단히 다음을 실행하여 OpenVPN을 호출할 수 있습니다.

sudo openvpn --config ~/path/to/client.ovpn