OpenVPN 可以调用 DHCP 客户端吗?

OpenVPN 可以调用 DHCP 客户端吗?

我已经通过 openvpn 建立了有效的 VPN 连接,但我想使用 DHCP 服务器而不是 openvpn 的推送功能。目前一切正常,但我必须手动启动 dhcp 客户端,例如,dhclient tap0我从 DHCP 获取 IP 和其他重要信息,是否有任何指令可以在建立连接时启动 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 设备后运行的 Shell 命令(用户 UID 更改前)。up 脚本可用于指定路由命令,该命令将发往 VPN 连接另一端的私有子网的 IP 流量路由到隧道中。”

答案2

您可以使用发行版中的标准网络管理脚本。我在 CentOS 6.6 中解决了这个问题,诀窍是使用与 tap0 不同的接口名称。问题是脚本假设 tap* 接口在启动期间启动,这会阻止热插拔脚本配置 openvpn 接口。因此,

在 /etc/openvpn/client.conf 中写入:

dev priv0
dev-type tap

代替:

开发 tap0

接下来创建配置文件 /etc/sysconfig/network-scripts/ifcfg-priv0

DEVICE=priv0
BOOTPROTO=dhcp
ONBOOT=否
PERSISTENT_DHCLIENT=1
HOTPLUG=是

大功告成!openvpn 服务创建 priv0 接口后,/etc/sysconfig/network-scripts/net.hotplug 脚本将调用“ifup priv0”。但问题是,当 openvpn 服务关闭时,dhcp 租约不会释放。这是因为当 net.hotplug 脚本收到通知时,接口已被删除,因此 dhcp 客户端无法通过隧道传递任何数据。可以通过将预关闭脚本(如“ifdown priv0”)添加到 openvpn 配置中来解决此问题。我已经运行了 selinux,我没有费心制定新规则来允许 openvpn 进程调用 ifdown 脚本。

相关内容