Настройка OpenVPN сервера и клиента на Gentoo Linux

Наткнулся на превосходную статью по настройке OpenVPN в Gentoo Linux, следуя по шагам настроил всё без «граблей»:
http://sysadm.ucoz.ua/forum/11-77-1

Содержимое статьи:
Возникла необходимость разобраться и настроить VPN подключение на основе OpenVPN. Ясное дело Google + man и курить до обеда в четверг, осваивать буду на своей любиомй GNU/Linux Gentoo.
Для начала поищем:

server / # emerge -s openvpn
Searching...
[ Results for search key : openvpn ]
[ Applications found : 4 ]
* app-crypt/openvpn-blacklist [ Masked ]
Latest version available: 0.4
Latest version installed: [ Not Installed ]
Size of files: 1,765 kB
Homepage: http://packages.debian.org/sid/openvpn-blacklist
Description: Detection of weak openvpn keys produced by certain debian versions between 2006 and 2008
License: GPL-2
* net-misc/networkmanager-openvpn [ Masked ]
Latest version available: 0.7.1
Latest version installed: [ Not Installed ]
Size of files: 372 kB
Homepage: http://www.gnome.org/projects/NetworkManager/
Description: NetworkManager OpenVPN plugin.
License: GPL-2
* net-misc/openvpn
Latest version available: 2.0.9
Latest version installed: [ Not Installed ]
Size of files: 653 kB
Homepage: http://openvpn.net/
Description: OpenVPN is a robust and highly flexible tunneling application compatible with many OSes.
License: GPL-2
* sec-policy/selinux-openvpn [ Masked ]
Latest version available: 20080525
Latest version installed: [ Not Installed ]
Size of files: 328 kB
Homepage: http://www.gentoo.org/proj/en/hardened/selinux/
Description: SELinux policy for OpenVPN
License: GPL-2
server / #

Нашлось 4 пакета из которых 3 замаскированы, меня интересует этот:
* net-misc/openvpn
Latest version available: 2.0.9
Latest version installed: [ Not Installed ]
Size of files: 653 kB
Homepage: http://openvpn.net/
Description: OpenVPN is a robust and highly flexible tunneling application compatible with many OSes.
License: GPL-2

Первое — это посмотрим с какими флагами предлагается установить данный сабж:
server / # emerge -pv openvpn
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] net-misc/openvpn-2.0.9 USE="examples iproute2 pam ssl -minimal -passwordsave (-selinux) -static -threads" 0 kB
Total: 1 package (1 new), Size of downloads: 0 kB
server / #

Для себя я отметил только 4 флага и по привычке скинул их в /etc/portage/package.use
server / # echo "net-misc/openvpn examples iproute2 pam ssl" >> /etc/portage/package.use
server / #

Приступим к установке самого сабжа командой:

server / # emerge openvpn

в самом конце установки, будет краткое описание что необходимо сделать, привожу цитатой:

* WARNING: The openvpn init script has changed
* The openvpn init script expects to find the configuration file
* openvpn.conf in /etc/openvpn along with any extra files it may need.
* To create more VPNs, simply create a new .conf file for it and
* then create a symlink to the openvpn init script from a link called
* openvpn.newconfname - like so
* cd /etc/openvpn
* nano foo.conf
* cd /etc/init.d
* ln -s openvpn openvpn.foo
* You can then treat openvpn.foo as any other service, so you can
* stop one vpn and start another if you need to.
* plugins have been installed into /usr/lib/openvpn
* It is recommended that you create your tun/tap interfaces using
* the net.tun0/net.tap0 scripts provided by baselayout instead of
* using the 'server' directive in openvpn configuration files.
* This will insure that the interface really is up after openvpn
* starts.
* Note that you cannot use net.tun0/net.tap0 and the server option,
* otherwise openvpn will not start.

Но мне, это пока не нужно — не буду на этом заострять внимание. Следующим шагом — идем в папку /etc/openvpn

server / # cd /etc/openvpn/
server openvpn #

в папке пока пусто, ну тогда пошагово всё с самого начала.
Перейдем в папку /usr/share/openvpn/ и посмотрим что там есть:

server openvpn # cd /usr/share/openvpn/
server openvpn # ls
easy-rsa

Есть папка — смотрим что там внутри:

server openvpn # cd easy-rsa/
server easy-rsa # ls
build-ca build-inter build-key-pass
build-key-server build-req-pass inherit-inter
openssl-0.9.6.cnf pkitool revoke-full
vars build-dh build-key
build-key-pkcs12 build-req clean-all
list-crl o penssl.cnf README
sign-req whichopensslcnf
server easy-rsa #

Посмотрим — что есть в файле vars (закоментированные строки я убрал):

server easy-rsa # cat vars
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
server easy-rsa #

Редактируем под себя и получится что-то подобное:

export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="/etc/openvpn/vserver/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="UA"
export KEY_PROVINCE="DN"
export KEY_CITY="Donetsk"
export KEY_ORG="VincentVanGog.Net-LTD"
export KEY_EMAIL="kernel@vincentvangog.net"

Теперь необходимо загрузить переменные из файла vars выполняем команду:

server easy-rsa # source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/vserver/keys
server easy-rsa #

Из всех файлов, нам нужна утилита pkitool — чтобы сгенерировать ключи для защиты передаваемых данных. Приступаем к генерации ключей:

1. Генерируем ключ для TLS аутентификации так называемый ta.key

server easy-rsa # openvpn --genkey --secret /etc/openvpn/vserver/keys/ta.key
server easy-rsa #

2. Генерируем ключ Диффи-Хеллмана находясь в папке /usr/share/openvpn/easy-rsa/ выполняем команду:
server easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
(Генерируется ключ)
server easy-rsa #

3. Генерируем для сервера Авторизационный ключ командой:

server easy-rsa # ./pkitool --initca
Using CA Common Name: VincentVanGog.Net-LTD CA
Generating a 1024 bit RSA private key
..........++++++
....................++++++
writing new private key to 'ca.key'
-----
server easy-rsa #

4. Для сервера hydra генерируем сертификат X.509 (нужно будет покурить маны по этому вопросу):

server easy-rsa # ./pkitool --server hydra
Generating a 1024 bit RSA private key
..................++++++
........++++++
writing new private key to 'hydra.key'
-----
Using configuration from /usr/share/openvpn/easy-rsa/openssl.cnf
/etc/openvpn/vserver/keys//index.txt: No such file or directory
unable to open '/etc/openvpn/vserver/keys//index.txt'
1165:error:02001002:system library:fopen:No such file or directory:bss_file.c:356:fopen('/etc/openvpn/vserver/keys//index.txt','r')
1165:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:

Вот и первые грабли, смотрим что не так а не так вот это: /etc/openvpn/vserver/keys//index.txt: No such file or directory нет индексного файла ключей в папке /etc/openvpn/vserver/keys/ исправляем:

server easy-rsa # touch /etc/openvpn/vserver/keys/index.txt
server easy-rsa #

Пробуем еще раз сгенерировать ключ:

server easy-rsa # ./pkitool --server hydra
Generating a 1024 bit RSA private key
.++++++
....++++++
writing new private key to 'hydra.key'
-----
Using configuration from /usr/share/openvpn/easy-rsa/openssl.cnf
/etc/openvpn/vserver/keys//serial: No such file or directory
error while loading serial number
1223:error:02001002:system library:fopen:No such file or directory:bss_file.c:356:fopen('/etc/openvpn/vserver/keys//serial','r')
1223:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:

Второй грабль — и что на этот раз /etc/openvpn/vserver/keys//serial: No such file or directory error while loading serial number

Снова исправляем:

server easy-rsa # touch /etc/openvpn/vserver/keys/serial
server easy-rsa #

Но еще было сообщение error while loading serial number, значит в файле serial необходимо установить значение серийного номера для ключа ну попробуем YYYYMMDD:

server easy-rsa # echo '20090727' > /etc/openvpn/vserver/keys/serial
server easy-rsa #

Пробуем снова сгенерировать ключ:

server easy-rsa # ./pkitool --server hydra
Generating a 1024 bit RSA private key
.....................++++++
......++++++
writing new private key to 'hydra.key'
-----
Using configuration from /usr/share/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'UA'
stateOrProvinceName :PRINTABLE:'DN'
localityName :PRINTABLE:'Donetsk'
organizationName :PRINTABLE:'VincentVanGog.Net-LTD'
commonName :PRINTABLE:'hydra'
emailAddress :IA5STRING:'kernel@vincentvangog.net'
Certificate is to be certified until Jul 25 18:34:29 2019 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
server easy-rsa #

Все вышло отлично, продолжаем дальше.
5. Сгенерируем сертификат X.509 для клиента который будет подключаться к нашему серверу, командой:

server easy-rsa # ./pkitool vincentvangog
Generating a 1024 bit RSA private key
.......++++++
........................++++++
writing new private key to 'vincentvangog.key'
-----
Using configuration from /usr/share/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'UA'
stateOrProvinceName :PRINTABLE:'DN'
localityName :PRINTABLE:'Donetsk'
organizationName :PRINTABLE:'VincentVanGog.Net-LTD'
commonName :PRINTABLE:'vincentvangog'
emailAddress :IA5STRING:'kernel@vincentvangog.net'
Certificate is to be certified until Jul 25 18:36:55 2019 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
server easy-rsa #

Снова всё вышло отлично, далее необходимо несколько дополнительных действий, а именно:
Проверим что у нас находится в папке /etc/openvpn/vserver/keys

server easy-rsa # ls /etc/openvpn/vserver/keys/
20090727.pem ca.crt dh1024.pem hydra.csr
index.txt index.txt.attr.old serial
ta.key vincentvangog.csr 20090728.pem
ca.k ey hydra.c rt hydra.key
index.txt.attr index.txt.old serial.old
vincentvangog.crt vincentvangog.key
server easy-rsa #

Все ключи и файлы у нас имеются. Поскольку и сервер и клиент будут стоять для проверки подключения на
одной машине создаем папку client:

server vserver # mkdir /etc/openvpn/vserver/client
server vserver #

в папку client копируем следующие файлы из папки /etc/openvpn/vserver/keys/

server vserver # cp /etc/openvpn/vserver/keys/ca.crt /etc/openvpn/vserver/client/
server vserver # cp /etc/openvpn/vserver/keys/dh1024.pem /etc/openvpn/vserver/client/
server vserver # cp /etc/openvpn/vserver/keys/ta.key /etc/openvpn/vserver/client/

а также сертификаты самого клиента:

server vserver # cp /etc/openvpn/vserver/keys/vincentvangog.crt /etc/openvpn/vserver/client/
server vserver # cp /etc/openvpn/vserver/keys/vincentvangog.csr /etc/openvpn/vserver/client/
server vserver # cp /etc/openvpn/vserver/keys/vincentvangog.key /etc/openvpn/vserver/client/

В папке client должны быть следующие файлы:

ca.crt
dh1024.pem
ta.key
vincentvangog.crt
vincentvangog.csr
vincentvangog.key

Вместо сертификатов vincentvangog имена тех сертификатов которые сгенерированы.
Переходим в папку /etc/openvpn и создаем там файл конфигурации сервера — server.conf (или свое название):

server vserver # cd ..
server openvpn #

выполняем команды:

server openvpn # touch server.conf
server openvpn # ls
server.conf vserver
server openvpn #

открываем его любым редактором и наполняем содержимым:

# Указываем режим сервера
mode server
# Опция указывающая на TLS-аутентифкацию
tls-server
# Сервер прослушивает запросы на соединение по tcp-протоколу
proto tcp-server
# Указываем серверу что используется устройство tap (по русски тапок)
dev tap
# Указываем порт прослушиваемый сервером 7050
port 7050
# Указываем что сервер работает в режиме сервиса (демона)
daemon
# Описание секции ключей сертификатов
# Указываем файл TLS аутентификации
tls-auth /etc/openvpn/vserver/keys/ta.key 0
# Указываем файл ключ CA
ca /etc/openvpn/vserver/keys/ca.crt
# Указываем файл сертификата сервера hydra
cert /etc/openvpn/vserver/keys/hydra.crt
# Указываем файл ключа сертификата сервера hydra
key /etc/openvpn/vserver/keys/hydra.key
# Указываем файл ключа Диффи-Хеллмана
dh /etc/openvpn/vserver/keys/dh1024.pem
# Указываем IP-адрес сервера и маску виртуальной сети
ifconfig 10.10.10.1 255.255.255.0
# Указываем диапазон адресов vpn пула
ifconfig-pool 10.10.10.2 10.10.10.20
# Указываем добавление клиенту необходимых маршрутов в локальные подсети, например:
push "route 192.168.0.0 255.255.255.0"
# Указываем шлюз для вышеописанной сети
push "route-gateway 10.10.10.1"
# Для того что бы клиенты видели друг друга
client-to-client
# Указываем разрешение дублирования сертифкатов без этой опции каждому клиенту нужно
# генерировать отдельный сертификат.
duplicate-cn
# Указываем включение режима отладки
verb 3
# Указываем алгоритм шифрования.
cipher DES-EDE3-CBC
# Указываем серверу не перечитывать ключ при сбросе соединения
persist-key
# Указываем местоположение лог файла
log-append /var/log/openvpn.log
# Erfpfybt не дает перечитывать ключ с файловой системы при рестарте соединения
persist-tun
# Erfpsdftv rонтроль за состоянием соединений. В случае если по туннелю не передаются данные,
# через некоторое время посылается ping, для того чтобы соединение не разрывалось.
keepalive 10 60
# Указываем на включение сжатия
comp-lzo

Создаем файл конфигурации клиента:

server openvpn # touch client.conf
server openvpn #

и наполняем следующим содержимым:

# Указываем работу в режиме клиента с TLS-аутентифкацией
tls-client
# Указываем протокол tcp
proto tcp-client
# Указываем удаленный сервер
remote 10.10.10.1
# Указываем устройство
dev tap
# Указываем порт сервера
port 7050
# Указываем принимать команды push от сервера то есть разрешаем переконфигурировать клиента
pull
# Указываем переход в папку client
cd /etc/openvpn/vserver/client
#Указываем файл для авторизации клиента
tls-auth /etc/openvpn/vserver/client/ta.key 1
# Указываем файл Диффи-Хеллмана
dh /etc/openvpn/vserver/client/dh1024.pem
# Указываем файл CA
ca /etc/openvpn/vserver/client/ca.crt
# Указываем файл с сертификатом клиента
cert /etc/openvpn/vserver/client/vincentvangog.crt
# Указываем файл с ключем клиента
key /etc/openvpn/vserver/client/vincentvangog.key
# Указываем алгоритм шифрования
cipher DES-EDE3-CBC
# Указываем использование сжатия
comp-lzo
# Указываем интервал пинга клиентом сервера
ping 10
# Указываем логирование ВПН соединения
status /var/log/openvpn-status.log
# Указываем лог файл подключения клиента
log /var/log/openvpn-client.log
# Указываем уровень логгирования
verb 9
# Указываем интервал записи в лог файл (сек)
mute 10

На данном этапе с настройками закончили — теперь проверяем работу. Переходим в папку:

server openvpn # cd /etc/init.d
server init.d #

Создаем ссылку для нашего ВПН сервера:

server init.d # ln -s openvpn openvpn.server
server init.d #

пробуем запустить сервер:

server openvpn # /etc/init.d/openvpn.server start
* Starting openvpn.server ... [ ok ]
server openvpn #

Сервер запустился — теперь проверим прослушиваемый порт:

server openvpn # netstat -nlp | grep :7050
tcp 0 0 0.0.0.0:7050 0.0.0.0:* LISTEN 21620/openvpn
server openvpn #

Соответственно сервер слушает запросы на 7050 порту как мы и указали в конфигурационном файле. Посмотрим что в логах:

server openvpn # server log # cat openvpn.log
Tue Jul 28 20:54:09 2009 OpenVPN 2.0.9 i686-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jul 27 2009
Tue Jul 28 20:54:09 2009 Diffie-Hellman initialized with 1024 bit key
Tue Jul 28 20:54:09 2009 Control Channel Authentication: using '/etc/openvpn/vserver/keys/ta.key' as a OpenVPN static key file
Tue Jul 28 20:54:09 2009 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 20:54:09 2009 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 20:54:09 2009 TLS-Auth MTU parms [ L:1576 D:168 EF:68 EB:0 ET:0 EL:0 ]
Tue Jul 28 20:54:09 2009 TUN/TAP device tap0 opened
Tue Jul 28 20:54:09 2009 /sbin/ip link set dev tap0 up mtu 1500
Tue Jul 28 20:54:09 2009 /sbin/ip addr add dev tap0 10.10.10.1/24 broadcast 10.10.10.255
Tue Jul 28 20:54:09 2009 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Tue Jul 28 20:54:09 2009 Listening for incoming TCP connection on [undef]:7050
Tue Jul 28 20:54:09 2009 TCPv4_SERVER link local (bound): [undef]:7050
Tue Jul 28 20:54:09 2009 TCPv4_SERVER link remote: [undef]
Tue Jul 28 20:54:09 2009 MULTI: multi_init called, r=256 v=256
Tue Jul 28 20:54:09 2009 IFCONFIG POOL: base=10.10.10.2 size=19
Tue Jul 28 20:54:09 2009 MULTI: TCP INIT maxclients=1024 maxevents=1028
Tue Jul 28 20:54:09 2009 Initialization Sequence Completed
server log #

Посмотрим вывод команды ifconfig по поводу tap

server init.d # ifconfig tap0
tap0 Link encap:Ethernet HWaddr 4a:b2:5b:01:e2:6e
inet addr:10.10.10.1 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::48b2:5bff:fe01:e26e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:468 (468.0 cool TX bytes:468 (468.0 cool
server init.d #

Делаем шаги настройки для клиента:

server log # cd /etc/init.d
server init.d #

Создаем ссылку:

server init.d # ln -s openvpn openvpn.client
server init.d #

Пробуем запустить нашего клиента:

server init.d # /etc/init.d/openvpn.client start
* Caching service dependencies ... [ ok ]
* Starting openvpn.client ... [ ok ]
server init.d #

Клиент запустился, проверим вывод ifconfig по поводу tap снова:

server init.d # ifconfig tap1
tap1 Link encap:Ethernet HWaddr 52:08:20:ea:76:4c
inet addr:10.10.10.2 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::5008:20ff:feea:764c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 cool TX bytes:468 (468.0 cool
server init.d #

Настало время проверить команду ping:

server init.d # ping -c 4 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 10.10.10.2: icmp_seq=2 ttl=64 time=0.007 ms
64 bytes from 10.10.10.2: icmp_seq=3 ttl=64 time=0.008 ms
64 bytes from 10.10.10.2: icmp_seq=4 ttl=64 time=0.008 ms
--- 10.10.10.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.007/0

server init.d # ping -c 4 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 10.10.10.1: icmp_seq=2 ttl=64 time=0.010 ms
64 bytes from 10.10.10.1: icmp_seq=3 ttl=64 time=0.008 ms
64 bytes from 10.10.10.1: icmp_seq=4 ttl=64 time=0.014 ms
— 10.10.10.1 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.008/0.011/0.014/0.003 ms
server init.d #

Заглянем для убедительности в лог файлы:

/var/log/openvpn.log
Tue Jul 28 20:54:09 2009 OpenVPN 2.0.9 i686-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jul 27 2009
Tue Jul 28 20:54:09 2009 Diffie-Hellman initialized with 1024 bit key
Tue Jul 28 20:54:09 2009 Control Channel Authentication: using '/etc/openvpn/vserver/keys/ta.key' as a OpenVPN static key file
Tue Jul 28 20:54:09 2009 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 20:54:09 2009 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 20:54:09 2009 TLS-Auth MTU parms [ L:1576 D:168 EF:68 EB:0 ET:0 EL:0 ]
Tue Jul 28 20:54:09 2009 TUN/TAP device tap0 opened
Tue Jul 28 20:54:09 2009 /sbin/ip link set dev tap0 up mtu 1500
Tue Jul 28 20:54:09 2009 /sbin/ip addr add dev tap0 10.10.10.1/24 broadcast 10.10.10.255
Tue Jul 28 20:54:09 2009 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Tue Jul 28 20:54:09 2009 Listening for incoming TCP connection on [undef]:7050
Tue Jul 28 20:54:09 2009 TCPv4_SERVER link local (bound): [undef]:7050
Tue Jul 28 20:54:09 2009 TCPv4_SERVER link remote: [undef]
Tue Jul 28 20:54:09 2009 MULTI: multi_init called, r=256 v=256
Tue Jul 28 20:54:09 2009 IFCONFIG POOL: base=10.10.10.2 size=19
Tue Jul 28 20:54:09 2009 MULTI: TCP INIT maxclients=1024 maxevents=1028
Tue Jul 28 20:54:09 2009 Initialization Sequence Completed
Tue Jul 28 21:01:27 2009 MULTI: multi_create_instance called
Tue Jul 28 21:01:27 2009 Re-using SSL/TLS context
Tue Jul 28 21:01:27 2009 LZO compression initialized
Tue Jul 28 21:01:27 2009 Control Channel MTU parms [ L:1576 D:168 EF:68 EB:0 ET:0 EL:0 ]
Tue Jul 28 21:01:27 2009 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Tue Jul 28 21:01:27 2009 Local Options hash (VER=V4): '9de5f9b6'
Tue Jul 28 21:01:27 2009 Expected Remote Options hash (VER=V4): '89f33c77'
Tue Jul 28 21:01:27 2009 TCP connection established with 10.10.10.1:32887
Tue Jul 28 21:01:27 2009 TCPv4_SERVER link local: [undef]
Tue Jul 28 21:01:27 2009 TCPv4_SERVER link remote: 10.10.10.1:32887
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 TLS: Initial packet from 10.10.10.1:32887, sid=5053a1c5 9e4b29eb
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 VERIFY OK: depth=1, /C=UA/ST=DN/L=Donetsk/O=VincentVanGog.Net-LTD/CN=VincentVanGog.Net-LTD_CA/emailAddress=kernel@vincentvangog.net
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 VERIFY OK: depth=0, /C=UA/ST=DN/L=Donetsk/O=VincentVanGog.Net-LTD/CN=vincentvangog/emailAddress=kernel@vincentvangog.net
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 Data Channel Encrypt: Cipher 'DES-EDE3-CBC' initialized with 192 bit key
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 Data Channel Decrypt: Cipher 'DES-EDE3-CBC' initialized with 192 bit key
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Tue Jul 28 21:01:27 2009 10.10.10.1:32887 [vincentvangog] Peer Connection Initiated with 10.10.10.1:32887
Tue Jul 28 21:01:28 2009 vincentvangog/10.10.10.1:32887 PUSH: Received control message: 'PUSH_REQUEST'
Tue Jul 28 21:01:28 2009 vincentvangog/10.10.10.1:32887 SENT CONTROL [vincentvangog]: 'PUSH_REPLY,route 192.168.0.0 255.255.255.0,route-gateway 10.10.10.1,ping 10,ping-restart 60,ifconfig 10.10.10.2 255.255.255.0' (status=1)
Tue Jul 28 21:01:29 2009 vincentvangog/10.10.10.1:32887 MULTI: Learn: 52:08:20:ea:76:4c -> vincentvangog/10.10.10.1:32887


/var/log/openvpn-client.log (кусочек)
Tue Jul 28 21:07:52 2009 us=40300 STREAM: WRITE 53 offset=183
Tue Jul 28 21:07:52 2009 us=40314 TCPv4_CLIENT write returned 55
Tue Jul 28 21:07:52 2009 us=40324 STREAM: SET NEXT, buf=[212,0] next=[212,1576] len=-1 maxlen=1576
Tue Jul 28 21:07:52 2009 us=40332 PO_CTL rwflags=0x0001 ev=4 arg=0x0808f98c
Tue Jul 28 21:07:52 2009 us=40341 PO_CTL rwflags=0x0001 ev=6 arg=0x0808f988
Tue Jul 28 21:07:52 2009 us=40351 I/O WAIT TR|Tw|SR|Sw [6/60921]
Tue Jul 28 21:07:58 2009 us=107428 event_wait returned 0
Tue Jul 28 21:07:58 2009 us=107466 I/O WAIT status=0x0020
Tue Jul 28 21:07:58 2009 us=107498 TLS: tls_multi_process: i=0 state=S_NORMAL, mysid=5053a1c5 9e4b29eb, stored-sid=29801eb6 db92431f, stored-ip=10.10.10.1:7050
Tue Jul 28 21:07:58 2009 us=107515 TLS: tls_process: chg=0 ks=S_NORMAL lame=S_UNDEF to_link->len=0 wakeup=604800
Tue Jul 28 21:07:58 2009 us=107550 NOTE: --mute triggered...


/var/log/openvpn-status.log
OpenVPN STATISTICS
Updated,Tue Jul 28 21:08:27 2009
TUN/TAP read bytes,468
TUN/TAP write bytes,0
TCP/UDP read bytes,9955
TCP/UDP write bytes,9063
Auth read bytes,656
pre-compress bytes,0
post-compress bytes,0
pre-decompress bytes,0
post-decompress bytes,0
END

Проверим роутинг:

server log # ip route list
172.16.0.0/24 dev eth1 proto kernel scope link src 172.16.0.1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10
10.10.10.0/24 dev tap0 proto kernel scope link src 10.10.10.1
10.10.10.0/24 dev tap1 proto kernel scope link src 10.10.10.2
127.0.0.0/8 dev lo scope link
default via 192.168.0.1 dev eth0
server log #


server log # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 tap1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
server log #

Дефолтный шлюз стоит на 2003 веник ничего страшного в этом нет так пока задумано :)

Осталось выполнить последнее — добавить (если нужно) в автозапуск файлы openvpn.server и openvpn.client:


server log # rc-update -a openvpn.server default
* openvpn.server added to runlevel default
server log # rc-update -a openvpn.client default
* openvpn.client added to runlevel default
server log #

Ну вот на этом пока пожалуй и всё — далее будем разбираться с мелочами.

1 комментарий on "Настройка OpenVPN сервера и клиента на Gentoo Linux"


  1. Вот хорошая статейка по этой теме, мне она очень помогла, сисадмин настроил впн, а как пользоваться не объяснил. В этой статье все описывается пошагово как создавать сертификаты, как их отзывать, как выдавать им айпи адреса. Вот ссылка «intfaq.ru/page/upravlenie-openvpn-sertifikatami-v-konsoli»

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика