Инсталляция OpenVPN на CentOS 6
# vi /etc/hosts
192.168.1.11 server.localdomain server
192.168.1.12 client.localdomain client
Server и Client
# cd /tmp/
# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh epel-release-6-8.noarch.rpm
# yum install -y openvpn easy-rsa
# chkconfig openvpn on
# rpm -qa openvpn
openvpn-2.2.2-1.el6.rf.x86_64
# rpm -qa easy-rsa
easy-rsa-2.2.2-1.el6.noarch
# rpm -qa openssl
openssl-1.0.1e-16.el6_5.4.x86_64
# mkdir /var/log/openvpn
# chown -R openvpn:openvpn /etc/openvpn
mkdir /etc/openvpn/.key
mkdir /etc/openvpn/.tls
Server
# cp /usr/share/easy-rsa/2.0/vars /usr/share/easy-rsa/2.0/vars.orig
# vi /usr/share/easy-rsa/2.0/vars
# easy-rsa parameter settings
# NOTE: If you installed from an RPM,
# don't edit this file in place in
# /usr/share/openvpn/easy-rsa --
# instead, you should copy the whole
# easy-rsa directory to another location
# (such as /etc/openvpn) so that your
# edits will not be wiped out by a future
# OpenVPN package upgrade.
# This variable should point to
# the top level of the easy-rsa
# tree.
export EASY_RSA="`pwd`"
#
# This variable should point to
# the requested executables
#
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
# This variable should point to
# the openssl.cnf file included
# with easy-rsa.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
# Edit this variable to point to
# your soon-to-be-created key
# directory.
#
# WARNING: clean-all will do
# a rm -rf on this directory
# so make sure you define
# it correctly!
export KEY_DIR="$EASY_RSA/keys"
# Issue rm -rf warning
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
# PKCS11 fixes
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
# Increase this to 2048 if you
# are paranoid. This will slow
# down TLS negotiation performance
# as well as the one-time DH parms
# generation process.
export KEY_SIZE=2048
# In how many days should the root CA key expire?
export CA_EXPIRE=730
# In how many days should certificates expire?
export KEY_EXPIRE=730
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="OUTSIDEMKAD"
export KEY_CITY="Babaysk"
export KEY_ORG="Faton"
export KEY_EMAIL="support@localdomain"
export KEY_EMAIL=support@localdomain
export KEY_CN=qwert0
export KEY_NAME=server
export KEY_OU=DD
#export PKCS11_MODULE_PATH=changeme
#export PKCS11_PIN=1234
# cd /usr/share/easy-rsa/2.0/
# . ./vars
# ./clean-all
# ./build-ca
Enter на все вопросы
# ./build-key-server server
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
# ./build-dh
-- команда создания пользователя (если я все правильно понимаю.)
# ./build-key velowup
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
# openvpn --genkey --secret ta.key
===========================================
Переместить сгенерированные файлы в соответствующие каталоги:
# cp /usr/share/easy-rsa/2.0/keys/* /etc/openvpn/.key/
# cp /usr/share/easy-rsa/2.0/ta.key /etc/openvpn/.tls/
==========================================
vi /etc/openvpn/server.conf
# Какой интерфейс слушать?
#(У кого-то это может быть ip адрес интерфейса, который смотрит в интернет. Скорее всего это скорее всего eth0)
local 192.168.1.11
# Какой порт слушать?
port 1723
# На каком протоколе будем работать?
proto tcp-server
# В каком режиме работать? Мостом (tap) или маршрутизация (tun)
dev tun0
;dev tap0
# MTU
tun-mtu 1392
# Разрешить аутентификацию по паролю
#auth-user-pass
# Пути к корневому сертефикату, сертификату и закрытому ключу.
ca /etc/openvpn/.key/ca.crt
cert /etc/openvpn/.key/server.crt
key /etc/openvpn/.key/server.key
# Параметры Диффи-Хелмана
dh /etc/openvpn/.key/dh2048.pem
# Отключить проверку пользовательских сертификатов
# client-cert-not-required
# username-as-common-name
# Настройка режима сервера и ИП адресов для выдачи клиентам. Сервер возьмет
# себе 10.10.20.1
# На каждом клиенте указывается адрес сервера 10.10.20.1. Закомментируйте эту
# строку, если вы используете ethernet мост.
server 10.10.20.0 255.255.255.0
;ifconfig 172.16.1.1 255.255.255.0
;ifconfig-pool 172.16.1.2 172.16.1.96
# Установите серверный режим для ethernet моста.
# Вы должны сначала в своей ОС настроить мост
# между TAP и NIC интерфейсом.
# Затем вы должны вручную установить
# IP/маску на мост, к примеру 10.8.0.4/255.255.255.0.
# В заключении мы должны установить диапазон IP
# адресов в этой подсети для выделения клиентам
# (начало=10.8.0.50 конец=10.8.0.100).
# Оставьте эту строку закоментированной, если вы
# не используете ethernet мост.
;server-bridge
# Режим сервера
daemon
mode server
# Разрешаем использовать TLS
tls-server
# Разрешить клиентам доступ VPN клиентам между друг другом?
#client-to-client
# Сопоставления клиент <-> виртуальный IP-адрес
# хранятся в этом файле. Если OpenVPN упадет или
# будет перезапущен, повторно подключающимся клиентам могут быть назначены
# из пула такие же виртуальные IP-адреса, которые были назначены им в прошлый
# раз.
ifconfig-pool-persist /etc/openvpn/ip.sv
;client-config-dir /etc/openvpn/.clt
# Передача клиенту параметров маршрутизации, где X.X.X.X — IP адрес вашего eth0, что смотрит в интернет
push «route 192.168.0.0 255.255.255.0»
# Передаем клиенту настройку шлюза
;push «route-gateway 192.168.0.2»
# Некоторые Windows-специфичные сетевые настройки
# могут быть переданы клиентам, такие как адреса DNS-
# или WINS-серверов. ПРЕДОСТЕРЕЖЕНИЕ:
# openvpn.net/faq.html#dhcpcaveats
push «dhcp-option DNS 192.168.0.2»
;push «dhcp-option DNS 192.168.0.1»
# Чтобы весь трафик при подключении к VPN шел через VPN-сервер (это заставляет
# клиента изменить шлюз по умолчанию на vpn-сервер),
# нужно добавить следующую строчку в основной конфиг openvpn.conf.
;push «redirect-gateway»
# Проверка соединения
keepalive 10 120
# Для большей безопасности и защиты от ДОС и флуда выдаём клиентам ta.key. На сервере 0, на клиентах 1.
tls-auth /etc/openvpn/.tls/ta.key 0
# Допустимые алгоритмы шифра. Надо прописывать так же и на клиенте.
cipher AES-256-CBC
#cipher AES256-SHA
# размер ключа в битах
#keysize 2048
# алгоритм хэширования
auth SHA512
# Включить сжатие. Если да, то надо прописывать и на клиенте.
comp-lzo
# Максимальное количество одновременно подключенных клиентов
max-clients 20
# От какого пользователя и группы работать серверу?
user openvpn
group openvpn
# persist-опции скажут OpenVPN при перезагрузке воздержаться от доступа
# к определенным ресурсам,
# т.к. они могут быть недоступны из-за понижения привелегий.
persist-key
persist-tun
# Файл состояния текущих соединений. Перезаписывается раз в минуту.
status /var/log/openvpn/openvpn-status.log
# Куда писать логи?
log-append /var/log/openvpn/openvpn.log
# Уровень детализации лога
verb 5
# Не записывать больше повторяю��ихся сообщений сразу
mute 20
==========================================
Теперь можно переходить к настройкам файервола.
В iptables перед строчками, запрещающими все INPUT и FORWARD
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
пишем:
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
Также добавляем строки «натизации»:
*nat
:PREROUTING ACCEPT [4:614]
:POSTROUTING ACCEPT [18:936]
:OUTPUT ACCEPT [18:936]
-A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE
«Рестартим» iptables:
service iptables restart
==========================================
# service openvpn start
Проверяем что сервис открыл порт да и вообще работает:
# netstat -nlp | grep 1723
tcp 0 0 192.168.1.11:1723 0.0.0.0:* LISTEN 1560/openvpn
==========================================
# cd /etc/openvpn/.key/
Копирую файлы на клиент:
ca.crt
dh2048.pem
velowup.crt
velowup.key
# scp ca.crt dh2048.pem velowup.crt velowup.key [email protected]:/etc/openvpn/.key/
# cd /etc/openvpn/.tls/
# scp ta.key [email protected]:/etc/openvpn/.tls/
Client
# vi /etc/openvpn/client.conf
# Укажем, что мы являемся клиентом
client
tls-client
# В каком режиме работать? Мостом (tap) или маршрутизация (tun)
dev tun
# На каком протоколе работать
proto tcp-client
# Адрес и порт сервера (Хоть IP хоть доменное имя)
remote server.localdomain 1723
# Бесконечно пробовать разрешить имя хоста OpenVPN-сервера.
resolv-retry infinite
# Не «биндиться» к интерфейсу
nobind
# Стараться сохранять некоторое объекты между перезапусками
persist-key
persist-tun
# Параметры SSL/TLS.
# Смотрите файл конфигурации сервера для более
# подробного описания. Лучше всего использовать
# отдельные пары .crt/.key-файлов
# для каждого клиента. Один ca-файл
# может быть использован для всех клиентов.
ca /etc/openvpn/.key/ca.crt
dh /etc/openvpn/.key/dh2048.pem
cert /etc/openvpn/.key/velowup.crt
key /etc/openvpn/.key/velowup.key
# Если на сервере используется ключ tls-auth,
# то каждый клиент также должен иметь этот ключ.
tls-auth /etc/openvpn/.tls/ta.key 1
# Выбор криптографического шифра (cipher).
# Если опция cipher используется на сервере,
# то вы также должны указать её здесь.
cipher AES-256-CBC
auth SHA512
# Включить сжатие
comp-lzo
# Уровень журналирования
verb 4
# Не записывать повторяющиеся сообщения более чем
mute 20
# От какого пользователя и группы работать клиенту?
user openvpn
group openvpn
# Куда писать журнальные данные о работе клиента?
log-append /var/log/openvpn/openvpn_client.log
status /var/log/openvpn/status_client.log
;route 172.16.1.0 255.255.255.0
# openvpn /etc/openvpn/client.conf
# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.20.6 P-t-P:10.10.20.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
-- хм. почему-то пинг на интерфейс который указан не идет
# ping -I tun0 10.10.20.5
-- а на интерфейс, что на сервере проходит.
# ping -I tun0 10.10.20.1
PING 10.10.20.1 (10.10.20.1) from 10.10.20.6 tun0: 56(84) bytes of data.
64 bytes from 10.10.20.1: icmp_seq=1 ttl=64 time=1.59 ms
64 bytes from 10.10.20.1: icmp_seq=2 ttl=64 time=1.55 ms
Server
# ping -I tun0 10.10.20.6
PING 10.10.20.6 (10.10.20.6) from 10.10.20.1 tun0: 56(84) bytes of data.
64 bytes from 10.10.20.6: icmp_seq=1 ttl=64 time=1.49 ms
64 bytes from 10.10.20.6: icmp_seq=2 ttl=64 time=1.52 ms
# less /var/log/openvpn/openvpn.log
# less /var/log/openvpn/openvpn-status.log
В логах все хорошо.
IP tables не настраивал.
--------------------------------------------------------------
Если клиент windows
https://community.openvpn.net/openvpn/wiki/Easy_Windows_Guide#DownloadingandInstallingOpenVPN
Конфиг файл для вин пользователя может быть таким:
client
dev tun
proto udp
remote 192.168.2.254 1194
resolv-retry infinite
persist-key
persist-tun
ca c:\\vpn\\ca.crt
cert c:\\vpn\\client2.crt
key c:\\vpn\\client2.key
comp-lzo
verb 3
Посомтреть:
Установка и настройка OpenVPN Server на CentOS 6
http://www.voip-lab.ru/ustanovka-i-nastrojka-openvpn-server-na-centos-6/
Установка OpenVPN на CentOS 6.4
http://habrahabr.ru/post/194144/
Вариант настройки конфига:
http://linuxforum.ru/viewtopic.php?id=34487