Для установки OpenVPN в CentOS нужно подключить репозиторий – rpmforge. Ранее я писал как правильно подключить репозитории – rpmforge и epel.Установка OpenVPN в CentOS не должна вызвать сложность. Ставим пакеты

yum install openvpn -y

Копируем папку с конфигурационным скриптами

cp -r /usr/share/doc/openvpn-2.2.2/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/
rm -rf 1.0/ Windows/

Делаем  исполняемыми.

cd /etc/openvpn/easy-rsa/2.0/
chmod +x *

Модифицируем файл “vars”, он запускается при каждом создании нового юзера. Меняем на свои значения.

export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU"
export KEY_CITY="Moscow"
export KEY_ORG="IT"
export KEY_EMAIL="me@gmail.me"

Создаем openssl.cnf файл.

cp openssl-1.0.0.cnf openssl.cnf

Далее запускаем последовательно комманды и отвечаем на вопросы.

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

После этого у вас текущей директории появится папка keys. В ней будут лежать все сертификаты и ключи.

Создаем ключ сервера

./build-key-server Server

Отвечаем на вопросы, подписываем сертификат.

Генерируем ключ Диффи-Хелмана

./build-dh

Создаем ключ для клиента.  Если в дальнейшем придется  создавать новых пользователей,  достаточно будет повторить текущую комманду.

./build-key user-laptop

Создаем директорию где будут храниться ключи и сертификаты сервера и копируем их туда.

mkdir /etc/openvpn/key
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/key/
cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/key/
cp /etc/openvpn/easy-rsa/2.0/keys/Server.crt /etc/openvpn/key/
cp /etc/openvpn/easy-rsa/2.0/keys/Server.key /etc/openvpn/key/

Создаем конфигурационный файл сервера следующего содержания.

#
#OpenVPN conf
#

port 48841
proto udp
dev tun
ca /etc/openvpn/key/ca.crt
cert /etc/openvpn/key/Server.crt
key /etc/openvpn/key/Server.key
dh /etc/openvpn/key/dh1024.pem
#crl-verify /etc/openvpn/crl.pem

server 10.170.30.0 255.255.255.224
push "route 10.170.30.0 255.255.255.0"

ifconfig-pool-persist ipp.txt #Let OpenVPN server to record the last used IP for each client, which allows client to use the same IP when reconnected.

keepalive 10 120
comp-lzo #Enable compression for saving bandwidth.

user nobody
group users

persist-key
persist-tun
status     /var/log/openvpn/openvpn-status.log
log        /var/log/openvpn/openvpn.log

verb 3
client-to-client # Allow clients to communicate with each others. Remove this line if you dont▒t want it.

Не забываем создать папку для логов

mkdir /var/log/openvpn

Добавляем в автозагрузку и запускаем

chkconfig openvpn --level 235 on
service openvpn start

Не забываем добавить в Iptables правила.

iptables -A INPUT   -i eth0                 -p udp --dport 48841                   -j ACCEPT
iptables -A OUTPUT  -o eth0                 -p udp --dport 48841                    -j ACCEPT
iptables -A INPUT   -i tun0                                                         -j ACCEPT
iptables -A OUTPUT  -o tun0                                                         -j ACCEPT
iptables -A FORWARD -o tun0                                                         -j ACCEPT

Далее настриваем клиентскую часть. Для начала нужно скачать и установить OpenVPN-client. После создаем в папке “C:\Program Files (x86)\OpenVPN\config” папку с названием к примеру “ConnectVPN”. В ней создаем конфигурационный файл – “ConnectVPN.ovpn” следующего содержания. Замечу что имя файла должно совпадать с именем директории.

client
dev tun
proto udp
remote {ваш IP} 48841
resolv-retry infinite
nobind
persist-tun
ca ca.crt
cert user-laptop.crt
key user-laptop.key
ns-cert-type server
comp-lzo
verb 3

В эту же папку нужно будет скопировать с сервера следующие файлы

ca.crt
user-laptop.crt
user-laptop.key

Все теперь можно подключаться.