В стандартных репозиториях 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
Автору за интересную информацию спасибо.