Назад | Перейти на главную страницу

Может ли OpenVPN вызывать DHCP-клиента?

У меня есть рабочее VPN-соединение через openvpn, но я хотел бы также использовать свой DHCP-сервер, а не функцию push openvpn. В настоящее время все работает нормально, но мне нужно вручную запускать клиент DHCP, например. dhclient tap0 и я получаю IP и другие важные данные от своего DHCP, есть ли какая-либо директива, которая запускает DHCP-клиент при установке соединения?

Вот конфиг моего клиента:

remote there.is.server.com
float
dev tap
tls-client
#pull
port 1194
proto tcp-client
persist-tun
dev tap0

#ifconfig 192.168.69.201 255.255.255.0
#route-up "dhclient tap0"
#dhcp-renew

ifconfig 0.0.0.0 255.255.255.0
ifconfig-noexec
ifconfig-nowarn

ca /etc/openvpn/ca.crt
cert /etc/openvpn/encyNtb_openvpn_client.crt
key /etc/openvpn/encyNtb_openvpn_client.key
dh /etc/openvpn/dh-openvpn.dh

ping 10
ping-restart 120

comp-lzo
verb 5

log-append /var/log/openvpn.log

А вот и конфигурация сервера:

mode server
tls-server
dev tap0
local servers.ip.here  
port 1194
proto tcp-server
server-bridge

# Allow comunication between clients
client-to-client

# Allowing duplicate users per one certificate
duplicate-cn

# CA Certificate, VPN Server Certificate, key, DH and Revocation list
ca /etc/ssl/CA/certs/ca.crt
cert /etc/ssl/CA/certs/openvpn_server.crt
key /etc/ssl/CA/private/openvpn_server.key
dh /etc/ssl/CA/dh/dh-openvpn.dh
crl-verify /etc/ssl/CA/crl.pem

# When no response is recieved within 120seconds, client is disconected
keepalive 10 60

persist-tun
persist-key

user openvpn
group openvpn

# Log and Connected clients file
log-append /var/log/openvpn
verb 3
status /var/run/openvpn/vpn.status 10

# Compression
comp-lzo

#Push data to client
push "route-gateway 192.168.69.1"
push "redirect-gateway def1"

Да, это возможно.

если вы пройдете "--up cmd"в процесс openvpn.

переключатель UP определяется как "Команда оболочки для запуска после успешного открытия устройства TUN / TAP (изменение UID до пользователя). Сценарий up полезен для указания команд маршрута, которые направляют IP-трафик, предназначенный для частных подсетей, которые существуют на другом конце VPN-соединения, в туннель ".

Вы можете использовать стандартные сценарии управления сетью из вашего дистрибутива. Я решил эту проблему в CentOS 6.6, и уловка заключалась в том, чтобы использовать другое имя интерфейса, чем tap0. Проблема заключалась в том, что сценарии предполагают, что интерфейсы tap * вызываются во время загрузки, и это не позволяет сценариям горячего подключения настраивать интерфейс openvpn. Так,

В /etc/openvpn/client.conf напишите:

dev priv0
кран типа dev

вместо того:

dev tap0

Затем создайте файл конфигурации / etc / sysconfig / network-scripts / ifcfg-priv0

УСТРОЙСТВО = priv0
BOOTPROTO = dhcp
ONBOOT = нет
PERSISTENT_DHCLIENT = 1
HOTPLUG = да

Готово! Сценарий /etc/sysconfig/network-scripts/net.hotplug вызовет "ifup priv0" после того, как служба openvpn создаст интерфейс priv0. Однако проблема в том, что аренда dhcp не освобождается, когда служба openvpn останавливается. Это потому, что интерфейс уже удален, когда скрипт net.hotplug проинформирован, поэтому клиент dhcp не может передавать какие-либо данные через туннель. Это можно исправить, добавив предварительный сценарий, например "ifdown priv0", в конфигурацию openvpn. У меня был запущен selinux, и я не стал разрабатывать новые правила, чтобы разрешить сценарий ifdown вызова процесса openvpn.