OpenVPN — как быстро и просто настроить

Ниже - описание установки вручную. webmin-openvpn - как сделать быстро и просто.

net.ipv4.ip_forward = 1 !!!!!

Наконец нашёл простое руководство как настроить OpenVPN с выдачей кучи сертификатов нескольким пользователям.

Единственная ошибка:

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #Если установить пароль, он будет запрашиваться при подключении An optional company name []: Using configuration from /usr/share/openvpn/easy-rsa/2.0/openssl.cnf

Пароль, запрашиваемый при подключении, задаётся вызовом ./build-key-pass < name >

Теперь последовательность действий для Debian Squeeze Цель - сделать доступ в приватную сеть, не перенаправляя весь трафик в неё (в отличии от оригинальной статьи). В /etc/network/interfaces добавим для внутреннего интерфейса:

auto eth1
iface eth1 inet static
        address 10.10.0.2
        netmask 255.255.255.0
        up iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j SNAT --to-source 10.10.0.2

Установим openvpn:

aptitude install openvpn

Подправляем файл /etc/sysctl.conf, в строке: net.ipv4.ip_forward = 0 меняем 0 на 1 net.ipv4.ip_forward = 1 и выполняем команду: sysctl -p

Создаём директорию, где будет всё хозяйство:

mkdir -p /etc/openvpn/keys /etc/openvpn/easy-rsa /etc/openvpn/easy-rsa/keys 
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

В vars указываем директорию с конфигами easy-rsa:

export EASY_RSA=/etc/openvpn/easy-rsa

vars вынесен за пределы easy-rsa для того, чтобы при необходимости можно было переписать все скрипты в easy-rsa. После этого надо выполнить

source /etc/openvpn/vars
cd /etc/openvpn/easy-rsa

Дальше всю работу выполняем в /etc/openvpn/easy-rsa Можно выполнить, для полной очистки, ./clean-all - keys/ будет очищена.

Создаём самоподписной корневой сертификат и ключи сервера: ./build-ca ./build-key-server server ./build-dh openvpn --genkey --secret keys/tls.key

Копируем из easy-rsa/keys в /etc/openvpn/keys файлы ca.crt dh1024.pem server.crt server.key tls.key

cd keys
cp ca.crt dh1024.pem server.crt server.key tls.key /etc/openvpn/keys/

Создаём /etc/openvpn/server.conf:

port 1194 proto tcp dev tun server 10.8.0.0 255.255.255.0
# push "route 1.b.c.d 255.255.255.0" - приватные подсети надо добавить сюда
tls-server 
ca /etc/openvpn/easy-rsa/keys/ca.crt 
cert /etc/openvpn/easy-rsa/keys/server.crt 
key /etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret 
dh /etc/openvpn/easy-rsa/keys/dh1024.pem 
tls-auth /etc/openvpn/easy-rsa/keys/tls.key 0 
cipher AES-256-CBC 
max-clients 30 
client-config-dir /etc/openvpn/servers/server/ccd 
comp-lzo 
persist-key 
persist-tun 
keepalive 10 120

Запускаем, проверяем: /etc/init.d/openvpn restart - должно рестартоваться ifconfig -a - должен появиться интерфейс tun0 netstat -lntp - должен появиться процессс на порту 1194

Создаём клиентов. делаем файл, генерящий клиента:

#!/bin/sh
CLIENT=$1
cd /etc/openvpn/easy-rsa
./build-key $CLIENT

или для клиента с паролем

./build-key-pass $CLIENT

копируем файлы для клиента:

mkdir -p /root/ovpn/$CLIENT
cp  ca.crt $CLIENT.crt $CLIENT.key tls.key dh1024.pem /root/ovpn/$CLIENT/

cat <<END >/root/ovpn/$1/$1.ovpn
$CLIENT
client
remote `hostname -i` 1194 # или вписать адрес 
proto tcp 
dev tun 
ca ca.crt 
dh dh1024.pem 
cert $CLIENT.crt 
key $CLIENT.key 
tls-auth tls.key 1 
cipher AES-256-CBC 
verb 3 
mute 20 
keepalive 10 120 
comp-lzo 
persist-key 
persist-tun 
resolv-retry infinite 
link-mtu 1544
END

ls -la /root/ovpn/$CLIENT/

Если клиента надо отозвать, запускаем

./revoke-full client01

Дополнение - организация client-to-client Если надо обеспечить видимость клиентов друг для друга, надо добавить опцию client-to-client в конфигурацию сервера. Кроме того, удобно дать всем клиентам статические адреса, для этого в ccd файлы (определяется параметром client-config-dir файла конфигурации сервера OpenVPN) надо добавить опции типа ifconfig-push 10.0.0.1 10.0.0.2 Адреса должны быть из выделенного пула и подходящие под маску /30:

[  1,  2]   [  5,  6]   [  9, 10]   [ 13, 14]   [ 17, 18]   [ 21, 22]
[ 25, 26]   [ 29, 30]   [ 33, 34]   [ 37, 38]   [ 41, 42]   [ 45, 46]   
[ 49, 50]   [ 53, 54]   [ 57, 58]   [ 61, 62]   [ 65, 66]   [ 69, 70]   
[ 73, 74]   [ 77, 78]   [ 81, 82]   [ 85, 86]   [ 89, 90]   [ 93, 94]   
[ 97, 98]   [101,102]   [105,106]   [109,110]   [113,114]   [117,118]
[121,122]   [125,126]   [129,130]   [133,134]   [137,138]   [141,142]   
[145,146]   [149,150]   [153,154]   [157,158]   [161,162]   [165,166]   
[169,170]   [173,174]   [177,178]   [181,182]   [185,186]   [189,190]   
[193,194]   [197,198]   [201,202]   [205,206]   [209,210]   [213,214]   
[217,218]   [221,222]   [225,226]   [229,230]   [233,234]   [237,238]
[241,242]   [245,246]   [249,250]   [253,254]

Это средние адреса из подсетей /30 , то есть для подсети из адресов 10.0.0.0,10.0.0.1,10.0.0.2,10.0.0.3 берём 10.0.0.1,10.0.0.2

Дополнительные настройки

192.168.0.0/24 - сеть, в которой стоит OpenVPN сервер

192.168.0.3 - адрес OpenVPN сервера

10.8.0.0 - подсеть, из которой будут нарезаться P-to-P соединения клиент-сервер То есть каждый подключившийся к OpenVPN получит адрес, указанный в его ccd файле

Дополнительные настройки на сервере

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.3

Дополнительные настройки на клиенте OpenVPN

iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 192.168.0.0/24 -j ACCEPT

Дополнительные настройки на компьютерах в подсети OpenVPN сервера

route add -net 10.8.0.0/24 gw ovpn-server

Дополнение - автозапуск В файле /etc/default/openvpn в переменной AUTOSTART указываем имя файла (или нескольких, через пробел) конфигурации из каталога /etc/openvpn, без расширения .conf. Если конфигурация хранится в поддиректориях, то в оригинальный файл конфигурации надо добавить опцию:

cd <директория>

Ссылки

http://www.ashep.org/2010/ustanovka-i-nastrojka-openvpn-klienta/

FreeBSD: Назначение статических IP-адресов клиентам OpenVPN

https://openvpn.net/index.php/open-source/documentation/howto.html

http://papandut.com/2011/07/17/installing-and-configuring-openvpn-server-on-centos-using-webmin-part-3/

The easiest way to create Virtual Tunnels over TCP/IP networks with traffic shaping, compression and encryption.

Leave a Reply