OpenVPN (443 порт) установка на CentOS

В стандартных репозиториях CentOS пакет OpenVPN отсутствует… достаем бубен… и пробуем реализовать следующую схему:

 Веб сервер должен быть перенастроен на 4443

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

yum install yum-priorities

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

[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://apt.sw.be/RPM-GPG-KEY.dag.txt

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

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

x86_64:

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

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

rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm

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

rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm

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

yum check-update

Установим 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.1.1/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="admin@example.com"

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

cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
./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

dev tap
port 443
port-share localhost 4443
tls-server
proto tcp-server

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem

user nobody
group nobody

server 192.168.222.0 255.255.255.0
push "route 192.168.222.0 255.255.255.0"
route 172.22.172.0 255.255.255.0 192.168.222.8

log /var/log/openvpn/openvpn-log.log
log-append /var/log/openvpn/openvpn-log-append.log
status /var/log/openvpn/openvpn-status.log 60
status-version 2
writepid /var/log/openvpn/pid
verb 3
client-to-client
comp-lzo
persist-key
persist-tun
max-clients 10
client-config-dir /etc/openvpn/ccd

Пропишем клиента в /etc/openvpn/ccd и маршруты до домашних сетей

vi /etc/openvpn/ccd/client01

Содержимое файла  client01

ifconfig-push 192.168.222.2 255.255.255.0
push "route 192.168.77.0 255.255.255.0 192.168.222.1"
push "route 192.168.17.0 255.255.255.0 192.168.222.1"

Сгенерируем клиентские ключи (в секции Common Name указать client01) :

cd /etc/openvpn/easy-rsa
./build-key client01
cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server vpnserver
./build-dh
openvpn --genkey --secret keys/server/ta.key
./build-key client1

После всех этих манипуляций в папке keys получается много файлов:

ca.crt — Главный CA сертификат, этот файл нужен и клиенту и серверу dh1024.pem — ключ Диффи Хельман, этот файл нужен только серверу server.crt — Сертификат сервера, нужен только серверу server.key — Ключ сервера, нужен только серверу (СЕКРЕТНЫЙ файл) client.crt — Сертификат клиента, нужен только клиенту client.key — Ключ клиента, нужен только клиенту (СЕКРЕТНЫЙ файл) ta.key — TLS-ключ, нужен и клиенту и серверу

Файлы которые должна храниться на

 сервере: ca.crt dh1024.pem server.crt server.key ta.key клиенте: ca.crt dh1024.pem client.crt client.key ta.key

Для клиента Linux:Необходимые файлы: ca.crt client1.crt client1.key client.conf Содержимое конфига client.conf

client
dev tap
proto tcp-client
remote АДРЕС_ВАШЕГО_OPENVPN_СЕРВЕРА(ip или dns) 443
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client1.crt
key /etc/openvpn/keys/client1.key
log /var/log/openvpn/openvpn.log
Советую сделать ссылку в /etc/openvpn/ на /var/log/openvpn
ls -s /var/log/openvpn/ /etc/openvpn/logs

Для клиента Windows:Необходимые файлы: ca.crt client1.crt client1.key client.ovpn Содержимое конфига client.ovpn

client
dev tap
proto tcp
remote  АДРЕС_ВАШЕГО_OPENVPN_СЕРВЕРА(ip или dns) 443
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca ca.crt
cert  client1.crt
key  client1 .key

Запуск сервера OpenVPN:

/etc/init.d/openvpn start

Автозапуск OpenVPN:

chkconfig --add openvpn

Правило для IPTABLES:

IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT
IPTABLES -A INPUT -p udp --dport 443 -j ACCEPT
IPTABLES -A FORWARD -i tap0 -s 192.168.0.1/255.255.255.0 -j ACCEPT
IPTABLES -A FORWARD -o tap0 -s 0/0 -j ACCEPT
IPTABLES -A INPUT -i tap0 -s 192.168.0.1/255.255.255.0 -j ACCEPT

ОШИБКИ:1. configure: error: OpenSSL Crypto headers not found.

 yum install openssl-devel

2. ошибка связанная со временем

пропала после установки ntp

3. Ошибка LZO

LZO headers were not found LZO library available from www.oberhumer.com/opensource/lzo/ configure: error: Or try ./configure —disable-lzo

wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
tar zxvf lzo-2.03.tar.gz
cd lzo-2.03
./configure
make
make install

3. Ошибка: Не запускается под Ubuntu

user@ls-666:~$ service openvpn start
* Starting virtual private network daemon(s)...
* Autostarting VPN 'client' [fail]
user@ls-666:~$ sudo service openvpn start
* Starting virtual private network daemon(s)...
* Autostarting VPN 'client' [ OK ]

4. Ошибка: Отказано в доступе

[root@gw 2.0]# ./build-ca
./build-ca: line 8: /etc/openvpn/easy-rsa/2.0/pkitool: Отказано в доступе

Решение

[root@gw 2.0]# chmod +x whichopensslcnf

5. Ошибка: Отказано в доступе

[root@gw 2.0]# . ./vars
bash: /etc/openvpn/easy-rsa/2.0/whichopensslcnf: Отказано в доступе
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

Решение

[root@gw 2.0]# chmod +x whichopensslcnf
Share

You may also like...

1 Response

  1. Арина:

    Автору за интересную информацию спасибо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *