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

對的,這是可能的。

如果你透過「--向上指令” 到 openvpn 進程。

UP開關定義為 " 成功開啟 TUN/TAP 設備後執行的 Shell 命令(用戶 UID 更改前)。up 腳本可用於指定路由命令,這些命令將發送到 VPN 連接另一端存在的私有子網路的 IP 流量路由到隧道。”

答案2

您可以使用您的發行版中的標準網路管理腳本。我在 CentOS 6.6 中解決了這個問題,技巧是使用與 tap0 不同的介面名稱。問題是腳本假設在啟動期間啟動了 tap* 接口,這會阻止熱插拔腳本配置 openvpn 接口。所以,

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

dev priv0
dev 類型 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 用戶端無法透過隧道傳遞任何資料。這可以透過在 openvpn 配置中新增預先關閉腳本(例如「ifdown priv0」)來解決。我運行了 selinux,並且沒有費心製定新規則來允許 openvpn 進程呼叫 ifdown 腳本。

相關內容