Отправляет email-рассылки с помощью сервиса Sendsay

FreeBSD: полезные заметки

  Все выпуски  

FreeBSD: полезные заметки. Настройка OpenVPN-клиента


Всем доброго времени суток!

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

1. Устанавливаем OpenVPN:

# cd /usr/ports/security/openvpn/ && make install clean

2. Необходим рабочий каталог и будущие логи:

# mkdir /var/log/openvpn/
# touch /var/log/openvpn/openvpn-status.log
# touch /var/log/openvpn/openvpn.log

3. client.ovpn - это файл, сгенерированный на сервере с openvpn, кроме него в папке /usr/local/etc/openvpn должны присутствовать файлы:
client.crt
client.ovpn
ca.crt
client.key
ta.key


Настраиваем конфиг /usr/local/etc/openvpn/client.ovpn

dev tun
proto tcp
remote 64.212.65.132
port 1194
client
resolv-retry infinite
ca /usr/local/etc/openvpn/ca.crt
cert /usr/local/etc/openvpn/client.crt
key /usr/local/etc/openvpn/client.key
tls-client
tls-auth ta.key 1
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun
verb 4
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
push "route-gateway 172.16.1.5"
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log

4. Для загрузки сервиса при старте файл /etc/rc.conf вставляем следующие строки:

openvpn_enable="YES"
openvpn_dir="/usr/local/etc/openvpn"
openvpn_configfile="/usr/local/etc/openvpn/client.ovpn"
openvpn_if="tun"

В дальнейшем запуск производим так (остановку с помощью ключевого слова stop, рестарт - restart):

# /usr/local/etc/rc.d/openvpn start

5. Проверяем - по ifconfig у нас появляется интерфейс tun0, значит, openvpn запущен и работает.

# ifconfig
tun0: flags=8051 metric 0 mtu 1500
options=80000<linkstate>
inet6 fe80::6627:37ff:fe98:abf3%tun0 prefixlen 64 scopeid 0x6
inet 172.16.1.6 --> 172.16.1.5 netmask 0xffffffff
nd6 options=21
Opened by PID 2279

# ps axw | grep openvpn
87030 ?? Ss 0:00.03 /usr/local/sbin/openvpn —cd /usr/local/etc/openvpn —daemon openvpn —config /usr/local/etc/openvpn/client.ovpn —writepid /var/run/openvpn.pid
87075 2 S+ 0:00.00 grep openvpn

6. Пингуем какой-нибудь ресурс.
Кстати говоря, у меня в связи довольно нестабильным подключением периодически начала появляться ошибка "No buffer space available" при пинге. Никакое изменение параметров tun-mtu etc. не помогло (помогала перезагрузка openvpn), и даже использование в конфиг-файле openvpn параметра ping-restart 10. Помогла запись в /etc/crontab */5 * * * * root /usr/local/etc/rc.d/openvpn restart. Зато работает.

7. У меня возникла потребность в настройке OpenVPN на Android и Windows 7. Насчёт последнего пришлось повозиться, однако решить проблему удалось через "Планировщик заданий", запуская при входе в систему:
"C:\Program Files (x86)\OpenVPN\bin\openvpn-gui-1.0.3.exe"с аргументами в строчке ниже
--connect client.ovpn --silent_connection 1Рабочую папку я тоже указывал, кроме того, пришлось скопировать все ключи и конфиг-файл в директорию C:\Program Files (x86)\OpenVPN\bin\ (зависит от путей установки программы).

8. Как сделать, чтобы через это соединение подключалось много компьютеров? На сервере делаем:

# bash
# cd /usr/local/share/doc/openvpn/easy-rsa/2.0
# source ./vars
# ./build-req newclient
# ./sign-req newclient

Где newclient - новый клиент.
В каталоге keys появляется новый сертификат и ключ.

В избранное