OpenVPN с сертификатами X.509

tux В догонку к предыдущей статье , в этой будем настраивать OpenVPN на работу с сертификатами.

Для создания сертификатов для OpenVPN, разработчики уже позаботились, все команды есть в /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0
создадим папку
# mkdir /etc/openvpn/keys
для начала правим файл vars
export KEY_DIR=»/etc/openvpn/keys»
export KEY_COUNTRY=»двухбуквенный код страны»
export KEY_PROVINCE=»провинция»
export KEY_CITY=»город»
export KEY_ORG=»организация» #  вот это самая важная строка
export KEY_EMAIL=»почта»

далее:
#  source ./vars
#  ./clean-all
#  ./build-dh     # может занять приличное время
#  ./pkitool —initca
#  ./pkitool —server myserver
далее создаем сертификат для клиента
#  ./pkitool client1
далее копируем файлы client1.crt client1.key ca.crt на клиентскую машину в /etc/openvpn/keys

сертификаты созданы, переходим к настройке OpenVPN

создадим файл /etc/openvpn/server.conf такого содержания:

mode server
dev tun
tls-server
proto udp
port 3335
comp-lzo
persist-tun
persist-key
client-to-client    # разрешаем клиентам видеть друг друга
# указываем узловые точки виртуальной сети
ifconfig 10.1.0.1 10.1.0.2
ifconfig-pool 10.1.0.4 10.1.0.251
route 10.1.0.0 255.255.255.0
#
dh /etc/openvpn/keys/dh1024.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/myserver.crt
key /etc/openvpn/keys/myserver.key
log-append /var/log/openvpn.log
verb 3
# отправляем клиентам необходимые маршруты
push «route 192.168.0.0 255.255.255.0»
push «route 10.1.0.0 255.255.255.0»
#
keepalive 10 60
ping-timer-rem
user  nobody
daemon

перезапускаем сервис /etc/init.d/openvpn restart

переходим к настройке клиента
создадим файл /etc/openvpn/to_server.conf сделующего содержания:

client
dev tun
tls-client
remote адрес_или_имя_сервера
proto udp
port 3335
comp-lzo
persist-tun
persist-key
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client1.crt
key /etc/openvpn/keys/client1.key
log-append /var/log/openvpn.log
verb 3
user  nobody
daemon

перезапускаем сервис на клиенте /etc/init.d/openvpn restart

смотрим ifconfig и видем:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.1.0.6  P-t-P:10.1.0.5  Mask:255.255.255.255
          ВВЕРХ POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          коллизии:0 txqueuelen:100
          RX bytes:756 (756.0 B)  TX bytes:756 (756.0 B)

смотрим ip ro и видем новые маршруты:

10.1.0.5 dev tun0  proto kernel  scope link  src 10.1.0.6
192.168.0.0/24 via 10.1.0.5 dev tun0 #маршрут на сеть за сервером
10.1.0.0/24 via 10.1.0.5 dev tun0 #маршрут на сеть клиентов

вот и всё, подключенные клиенты могут видеть друг друга, а также могут видеть сеть за сервером.
Удачной работы!
© shadow_alone