Openvpn 故障轉移設置 - 使用靜態 IP 路由到客戶端
我有一個帶有 openvpn 伺服器和許多連接到它的客戶端的設置。所有這些客戶端都有固定的 IP 地址,來自他們的證書名稱。
在 openvpn 伺服器後面,我有一個管理伺服器,它需要連接到客戶端(以監視/執行一些遠端命令)。
|-C1 |-C2 A -- VPN server -| |-C3 |-C4
伺服器 A 可以通過 VPN 連接到 C1-4,使用固定的 ips。
我想要做的是將設置擴展到多個 VPN 伺服器(以處理伺服器中斷並分散負載),同時仍然有一種簡單的方法讓 A 找到任何特定的遠端客戶端。
|-C1 |-C2 --- VPN server 1 -| | A | --- VPN server 2 -| |-C3 |-C4
我知道如何配置客戶端以隨機選擇其中一台 openvpn 伺服器,但我不知道如何管理 IP 分配。
我應該為伺服器保留一個子網嗎?在那種情況下,A如何知道一個ip在哪個伺服器後面?每個 openvpn 伺服器應該有一個子網嗎?在這種情況下,A 怎麼知道要聯繫哪個 IP 地址?
我對動態路由系統進行了一些研究,但我必須為每個客戶端 ip 管理一個路由,這似乎非常錯誤……另一種選擇是使用映射更新 DNS(或類似 DNS)服務 { client-name => current ip address},但這看起來很複雜,我不確定我們所有的軟體堆棧都可以適應它。
通常如何處理這種故障轉移設置?
使用映射 {client-name => current ip address} 更新的 DNS(或類似 DNS)服務
--client-connect
使用 OpenVPN 伺服器上的腳本,在 OpenVPN 伺服器上處理這個相對容易。客戶端連接腳本被傳遞新連接的 IP 地址。然後,您可以使用它呼叫 nsupdate來調整您的 DNS 記錄。這是我記錄連接客戶端的外部地址的舊腳本。
Environmental Variables
這不是您想要的,但是如果您查看手冊頁的部分,我相信您可以找到正確的變數。#!/bin/sh # expects variables like from openvpn #common_name=server1.example.org #trusted_ip=192.168.47.1 dnssrv="192.168.0.1" zone="vpn.example.org" ttl="7200" record=`echo ${common_name} | sed -e 's/example.org/vpn.example.org/'` echo "client-connect.sh ${common_name} ${trusted_ip} ${record}" | logger ( echo "server ${dnssrv}" echo "zone ${zone}" echo "update delete ${record} A" echo "update add ${record} ${ttl} A ${trusted_ip}" echo "send" ) | /usr/bin/nsupdate