Установка VPN на Ubuntu 12.04 сервере и клиенте.
mkdir /etc/openvpn/easy-rsa/
Скопируем шаблон для создания ключей:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa/
в этом каталоге ( /etc/openvpn/easy-rsa/) будут формироваться ключи. Если они будут созданы криво, то система не заработает.
открываем файл vars и изменяем там переменные под наши реалии:
export KEY_COUNTRY="US"
export KEY_PROVINCE="NZ"
export KEY_CITY="NewYourk"
export KEY_ORG="<myorg>"
export KEY_EMAIL="<
admin@example.org>"
export KEY_CN=something
Важно! Значения переменных не должны повторяться! Значения в <> нужно заменить на свои.
после этого очищаем конфигурацию
source vars
,/clear-all
теперь идем в папку ./keys и меняем в файле ./keys/index.txt.attr значение параметра
unique_subject = no
если этого не сделать, то при генерации клиентского ключа возникнет сообщение
failed to update database
TXT_DB error number 2
, файл сертификата будет иметь размер 0 и не будет работать.
Затем возвращаемся назад, в каталог /etc/openvpn/easy-rsa и продолжим генерировать ключи:
./build-dh
./pkitool --initca
./pkitool --server server
./pkitool client
теперь в каталоге ./keys должны появиться файлы с именами ca.*, server.*, client.*. Их нужно скопирвать в папку /etc/openvpn. Так же туда нужно скопировать конфигурационный файл, но с другим именем:
mv ./openssl-1.0.0.cnf openssl.cnf
теперь для настройки сервера нужно распаковать его примерную конфигурацию :
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/cd /etc/openvpngunzip -d /etc/openvpn/server.conf.gz
в файле конфигурации server.conf проверяем параметры
ca ca.crtcert server.crtkey server.keydh dh1024.pem
Такие файлы должны лежать в той же папке. для большей безопасности я добавил к ним еще и путь:
ca /etc/openvpn/ca.crtcert /etc/openvpn/server.crtkey /etc/openvpn/server.key
Кроме того желательно изменить адрес выделяемой подсети. По умолчанию это 10.8.0.0, я поменял на 192.168.30.0. При серии экспериментов я добился того, что этот адрес у клиента гдето капитально прописался и сервер пингуется всегда, даже при отсутствии физического соединения с сервером.
стартуем конфигурацию:
service openvpn start
должно пойти сообщение, что демон нашел конфигурацию для server.
Теперь проверим, все ли там в порядке:
openvpn --config /etc/openvpn/server.conf
должен сообщить, что ничего ошибочного не нашел. Если есть ошибки, то нужно их исправить.
проверку того, что конфигурация работает нужно посмотреть в настройках сети:
ifconfig
должно вывести информацию о новом сетевом устройстве tun0.
разрешаем на сервере форвардинг
echo 1 > /proc/sys/net/ipv4/ip_forward
и добавляем новый разрешенный маршрут
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o eth0 -j MASQUERADE
Его даже лучше добавить в файл конфигурации /etc/init.d/rc.local.
копируем файлы ca.crt, client.crt, client.key клиенту для использования в его конфигурации.
------- КЛИЕНТ -------
также устаноавливаем пакет, распаковываем конфигурацию клиента:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf.gz /etc/openvpn/cd /etc/openvpngunzip -d /etc/openvpn/client.conf.gz
В эту же паку (/etc/openvpn) копируем наши ключи и сертификаты. Так же меняем значения в cilent.conf:
ca /etc/openvpn/ca.crtcert /etc/openvpn/client.crtkey /etc/openvpn/client.key
Запуск и проверка точно такие же, как и для сервера.