Подготовка

В стандартных репозиториях CentOS пакет OpenVPN отсутствует. Добавляем репозиторий rpmforge, предварительно установив плагин priorities. Дело в том, что в различных репозиториях пакеты могут повторяться, priorities же указывает yum на то из какого репозитория использовать пакет, если имеются совпадения. Рекомендуемые значения приоритетов следующие:

[base], [addons], [updates], [extras] ... priority=1
[centosplus],[contrib] ... priority=2
Остальные ... priority=N  (где N > 10)

Устанавливаем priorities:

# yum install yum-priorities

Добавляем приоритеты (priority=1) к репозиториям (/etc/yum.repos.d):

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5
priority=1

... и т.д.

Устанавливаем GPG ключ репозитория:

# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

Скачиваем пакет с информацией о репозитории:

i386:
wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

x86_64:
wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

Проверяем пакет:

# rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm

Если проверка прошла успешно, устанавливаем:

# rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm

Обновляем локальный кеш:

# yum check-update

Все, новый репозиторий подключен. Можно переходить к установке OpenVPN.

Установка OpenVPN

Установим OpenVPN:

# yum install openvpn

Создадим конфигурационные файлы OpenVPN‘а

# touch /etc/openvpn/openvpn.conf
# mkdir /etc/openvpn/ccd
# mkdir /etc/openvpn/keys
# cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa/ /etc/openvpn/
# cp /usr/share/doc/openvpn-2.0.9/easy-rsa/openssl.cnf /etc/openvpn
# cd /etc/openvpn/easy-rsa
# chmod +x clean-all
# chmod +x build*

Отредактируем /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY=RU
export KEY_PROVINCE=MSK
export KEY_CITY=MOSCOW
export KEY_ORG="OpenVPN-TEST-INSTALLATION"
export KEY_EMAIL="[email protected]"

Создадим ключи:

# cd /etc/openvpn/easy-rsa
# . ./vars
# ./clean-all
# ./build-ca
# ./build-key-server vpnserver
# ./build-dh

Скопируем ключи:

# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ca.crt
# cp /etc/openvpn/easy-rsa/keys/vpnserver.crt /etc/openvpn/keys/vpnserver.crt
# cp /etc/openvpn/easy-rsa/keys/vpnserver.key /etc/openvpn/keys/vpnserver.key
# cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem

Отредактируем /etc/openvpn/openvpn.conf

port 1194
proto tcp
dev tun
tls-server
server 192.168.100.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
client-config-dir /etc/openvpn/ccd
push "route 192.168.100.0 255.255.255.0"
duplicate-cn
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpnserver.crt
key /etc/openvpn/keys/vpnserver.key
dh /etc/openvpn/keys/dh1024.pem

Пример добавления клиента:

# 192.168.100.100/30
192.168.100.100 -  *net
192.168.100.101 - client01
192.168.100.102 -  *gw
192.168.100.103 -  *br

Пропишем клиента в /etc/openvpn/ccd

# touch /etc/openvpn/ccd/client01
# echo "ifconfig-push 192.168.100.101 192.168.100.102" > /etc/openvpn/ccd/client01

Сгенерируем клиентские ключи:

# cd /etc/openvpn/easy-rsa
# ./build-key client01 (в секции Common Name указать client01)

Теперь клиенту следует отдать файлы ca.crt, client01.crt, client01.key (все находятся в /etc/openvpn/easy-rsa/keys) и конфигурационный файл:

client
tls-client
verb 3
dev tun
proto tcp
remote <ip.add.re.ss> 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client01.crt
key client01.key

Запуск OpenVPN:

# /etc/init.d/openvpn start


Дополнительные записи: