# меняем пароль пользователя
passwd root
# обновляем список пакетов и установим mc (дело вкуса, но я его ставлю)
apt-get update
apt-get install mc
# установим openvpn и приступим к настройке
apt-get install openvpn
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
# редактируем переменные
nano ./vars
# меняем строки
export KEY_SIZE=1024 # Длинна ключа
export KEY_EXPIRE=3650 # Срок действия ключа в днях
# описание сертификатов по-умолчанию
export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU"
export KEY_CITY="Moscow"
export KEY_ORG="http://habrahabr.ru"
export KEY_EMAIL="org@example.com"
# сохраняем файл
# инициализируем переменные и чистим папку keys и создаем сертификаты
. ./vars
. ./clean-all
./build-ca # корневой сертификат
./build-key-server server # сертификат сервера
./build-dh # ключ Диффи Хельман
# если вы планируете использовать tls-auth, который позволит скрыть порт на котором сервер слушает vpn подключения, защитить от DoS атак и кое чего еще, то выполните еще и эту строку:
openvpn --genkey --secret ./keys/ta.key
# Включили tls-auth? Тогда не забудьте передать ta.key клиентам, его надо будет положить рядом с сертификатом пользователя.
# перенесем полученные сертификаты в рабочую папку
cp ./keys/ca.crt /etc/openvpn
cp ./keys/server.crt /etc/openvpn
cp ./keys/server.key /etc/openvpn
cp ./keys/dh1024.pem /etc/openvpn
# Для tls-auth, выполните и эту строку:
cp ./keys/ta.key /etc/openvpn
# создадим сертификаты пользователей, сколько вам нужно (вводить данные не обязательно, поля будут принимать значения переменных по-умолчанию, достаточно просто нажимать Enter. В конце будет предложено ввести пароль (Enter export password), он защитит ваш сертификат от импорта недоброжелателями, хорошенько его запомните)
./build-key-pkcs12 vpn.android
./build-key-pkcs12 vpn.windows
./build-key-pkcs12 vpn.debian
./build-key-pkcs12 vpn.ddwrt
./build-key-pkcs12 vpn.home
# после этого в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ появятся ваши сертификаты vpn.android.*, vpn.windows.* и другие.
# Если захотите создать сертификаты поздней, подключаетесь по SSH, и:
# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
# . ./vars
# ./build-key-pkcs12 vpn.newuser1
# ./build-key-pkcs12 vpn.newuser2
# настроим сервер
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
nano /etc/openvpn/server.conf
# все настройки по-умолчанию нас устроят, меняем, раскомментируем:
local IP_АДРЕС_ВАШЕГО_СЕРВЕРА
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client # раскомментируйте, если хотите иметь доступ между клиентами внутри вашего VPN
# Для включения tls-auth, необходимо добавить (без #)
# tls-auth ta.key 0
# Если хотите спрятать сервер от китайских ботов и ФСБ, поменяйте стандартный порт, на любой другой. Только не забудьте прописать этот же порт в настройках клиента.
port 1194
# сохраняем
# применим настройки файрвола через rc.local, можно сделать иначе, но я остановился на этом варианте.
nano /etc/rc.local
# добавляем строки до exit 0
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# сохраняем
nano /etc/sysctl.conf
# раскомментируем строчку
net.ipv4.ip_forward=1
# отправляем на перезагрузку, чтобы сразу убедиться что автозапуск работает
reboot