
我已經透過 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 腳本。