OpenVPN 排除池中的 IP

OpenVPN 排除池中的 IP

我有一個在 Linux Ubuntu 機器上運行的 OpenVPN 伺服器。多個客戶端連接到該伺服器(500+),這就是我設定伺服器橋接選項的原因,如下所示:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254

這非常有效。客戶端獲得一個動態IP位址,當客戶端數量超過255時,它從200塊變成201塊。

我有一個連接到這些客戶端的內部應用程序,但該應用程式在 IP 位址 10.0.200.255 和 10.0.201.0 上崩潰。

這些 IP 位址在我提供的範圍內,但我無法使用它們。

有沒有辦法將它們排除在我的池子之外?

或者我需要改變我的設定嗎?

答案1

使用單一設定檔使用 OpenVPN 的內建 DHCP 伺服器無法直接使用多個 IP 範圍或排除某些 IP。

我提出3種可能的解決方案:

  • 解決方法,但不保證有效
  • DHCP 代理模式,簡單,乾淨,還有很多其他選擇
  • 多個實例,更複雜,可能具有性能優勢

但是,我建議修復問題的根本原因,即有缺陷的內部應用程式。

解決方法

在伺服器設定檔中新增:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0

0指令末尾的ifconfig-pool-persistipp.txt視為唯讀設定檔。

建立一個文件/etc/openvpn/ipp.txt

reserved-not-used-cn-1,10.0.200.255
reserved-not-used-cn-2,10.0.201.0
reserved-not-used-cn-3,10.0.201.255
...

將所有保留的 IP 位址新增至此文件中,格式為<Common-Name>,<IP-address>.對於欄位中的值,<Common-Name>請選擇永遠不會在任何用戶端憑證中使用的值。

正如 OpenVPN 手冊頁面中所述,這並不能保證始終有效:

請注意,OpenVPN 僅將此文件中的條目視為基於公用名稱和 IP 位址之間過去關聯的建議。它們不保證給定的公用名始終會收到給定的 IP 位址。如果您想要保證分配,請使用--ifconfig-push

DHCP 代理模式

由於您正在使用輕敲設置,這可能是最好的解決方案。它允許使用功能齊全的DHCP伺服器在伺服器端子網或伺服器本身上,取決於配置。若要設定乙太網路橋接,必須先使用作業系統的橋接功能將 TAP 介面與另一個介面橋接。

開放VPN伺服器配置:

server-bridge

該指令擴展如下:

mode server
tls-server
push "route-gateway dhcp"

DHCPD伺服器配置:

subnet 10.0.100.1 netmask 255.255.0.0 {
  range 10.0.200.1 10.0.200.254;
  range 10.0.201.1 10.0.201.254;
  range 10.0.202.1 10.0.202.254;
  range 10.0.203.1 10.0.203.254;
  ...
}

多個實例

另一種方法是/24使用多個設定檔為每個子網路建立一個單獨的 openvpn 實例。但這需要為每個實例使用不同的連接埠。

實例1設定檔:

port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254

實例2設定檔:

port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254

這需要:

  • 具有對應連接埠號碼的 IP 範圍特定客戶端配置,
  • iptables或例如對連接埠上的傳入連接使用負載平衡1194並將它們均勻地分佈在實例之間

正如所解釋的,該解決方案可能具有性能優勢這裡

相關內容