Linux

OpenVPN:不同的使用者假設可以訪問不同的網路

  • December 12, 2016

我有可以訪問網路的 OpenVPN 伺服器:

  • 1.1.1.0/24
  • 2.2.2.0/24

我還有 2 個 OpenVPN 使用者:

  • userA:只能訪問網路1.1.1.0/24
  • userB:只能訪問網路2.2.2.0/24

我怎麼能做到這一點?


我試圖自己做到這一點。在同一台機器上,我創建了 1 個 CA、1 個伺服器和 2 個客戶端證書。以及 2 個用於 2 個守護程序的 OpenVPN 配置文件

在哪裡:

  • 第一個配置文件將路由 1.1.1.0/24 推送到他的客戶端。對於它的守護程序,它使用埠 1193
  • 第二個配置文件將路由 2.2.2.0/24 推送到他的客戶端。對於它的守護程序,它使用埠 1194

然後:

  • 在 userA.ovpn 我設置remote server.ip.address 1193
  • 在 userB.ovpn 我設置remote server.ip.address 1194

在那種情況下,它“完美”地工作。當我從不同的使用者連接(使用不同的 ovpn 配置文件)時,我的路由表中會出現不同的網路。但是,如果我在 user*.ovpn 配置文件中手動更改埠號 (1194 <> 1193),那麼我可以訪問我不認為可以訪問的網路。這就像黑客攻擊……

我認為如果在單個 OpenVPN 伺服器實例上進行每個客戶端配置,您需要什麼。

為此,您向伺服器傳遞client-config-dir設置為 OpenVPN 守護程序使用的任何帳戶可讀的目錄名稱的選項;例如,您可以添加

client-config-dir /etc/openvpn/ccd

到您的 OpenVPN 的配置文件。

CN然後,您為需要為其進行自定義配置的每個使用者添加一個配置文件。注意幾點:

  • 不是每個使用者都需要這樣的額外配置;這些文件會覆蓋伺服器的預設值。
  • 這些文件的名稱與CNs 不完全匹配:它們使用某些算法進行了修改——例如將-s替換為_s 等。有關完整詳細資訊,請參閱手冊頁。

現在,在這些文件中,您幾乎可以使用為該特定客戶端應用的任何設置。你可以隨意使用ifconfig-pushiroute,push`。

我們成功地使用此方案通過單個 OpenVPN 實例連接了多個遠端 LAN,但與您的情況相比,它只是多一點工作(也就是說,我們需要 OpenVPN 來做更多的內部路由)。

引用自:https://serverfault.com/questions/820085