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

Может ли 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"

решение1

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

если вы пройдете "--up команда" в процесс openvpn.

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

решение2

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

В /etc/openvpn/client.conf пишем:

dev priv0
dev-тип крана

вместо:

dev-тап0

Далее создайте файл конфигурации /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 не может передавать данные через туннель. Это можно исправить, добавив скрипт pre-down, например "ifdown priv0", в конфигурацию openvpn. У меня был запущен selinux, и я не потрудился разработать новые правила, чтобы разрешить процессу openvpn вызывать скрипт ifdown.

Связанный контент