
我正在設定一個帶有許多小設備(運行 OpenWRT)的 VPN 網路。在我的用例中,設備都是由數字標識的,我希望它們的 IP 位址與其 ID 相符(例如:設備號 6 將在 XXX6 中擁有一個 IP)。
我知道client-config-dir
,ifconfig-push
但我無法使用它們,因為我的所有裝置都使用相同的憑證(duplicate-cn
已啟用)。這是一項要求,因為為每個設備產生一個憑證會受到太多限制(此外,如果我們在系統中新增設備,我們不想更改 VPN 伺服器的配置)
是否可以在客戶端設定檔中設定ip位址?我在文件中沒有找到有關該特定主題的任何內容...並且我嘗試的所有操作都沒有成功。
基本上,我的想法如下:
- 客戶端連接到 VPN 伺服器並請求特定位址(“給我 ip:172.16.0.22”)
- 如果位址已被佔用,則握手失敗。如果是免費的,則會向客戶提供他之前詢問的地址
答案1
您應該能夠使用ifconfig-pool-persist
配置選項來執行此操作。您可以預先設定該檔案並設定seconds = 0
為告訴 OpenVPN 僅讀取該檔案。
我們使用它來確保同一用戶在透過 VPN 連線時分配相同的 IP 以進行稽核。
來自手冊頁:
--ifconfig-pool-persist file [秒] 以秒為間隔(預設 = 600)以及在程式啟動和關閉時將 ifconfig-pool 資料保留/取消保留到檔案。此選項的目標是在用戶端(由其公用名稱表示)與從 ifconfig-pool 指派給它們的虛擬 IP 位址之間提供長期關聯。維持長期關聯對客戶有好處,因為它允許他們有效地使用 --persist-tun 選項。
文件是一個以逗號分隔的 ASCII 文件,格式為 ,。
如果秒 = 0,則檔案將被視為唯讀。如果您想將文件視為配置文件,這非常有用。
請注意,OpenVPN 僅將此文件中的條目視為基於公用名稱和 IP 位址之間過去關聯的建議。它們不保證給定的公用名始終會收到給定的 IP 位址。如果您想要確保分配,請使用 --ifconfig-push
答案2
假設我們正在設定公司 VPN,並且我們希望為 3 種不同類別的使用者建立單獨的存取策略:
System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only
我們將採取的基本方法是 (a) 將每個使用者類別隔離到自己的虛擬 IP 位址範圍內,以及 (b) 透過設定關閉客戶端虛擬 IP 位址的防火牆規則來控制對電腦的存取。
在我們的範例中,假設我們有不同數量的員工,但只有一名系統管理員和兩名承包商。我們的IP分配方式是將所有員工放入IP位址池中,然後為系統管理員和承包商指派固定的IP位址。
請注意,此範例的先決條件之一是您在 OpenVPN 伺服器電腦上執行軟體防火牆,這使您能夠定義特定的防火牆規則。對於我們的範例,我們假設防火牆是 Linux iptables。
首先,我們根據使用者類別建立一個虛擬IP位址對映:
Class Virtual IP Range Allowed LAN Access Common Names
Employees 10.8.0.0/24 Samba/email server at 10.66.4.4 [variable]
Sys Admins 10.8.1.0/24 Entire 10.66.4.0/24 subnet sysadmin1
Contractors 10.8.2.0/24 Contractor server at 10.66.4.12 contractor1, contractor2
接下來,讓我們將此映射轉換為 OpenVPN 伺服器設定。首先,請確保您已按照上述步驟操作,使 10.66.4.0/24 子網路可供所有客戶端使用(雖然我們將設定路由以允許客戶端存取整個 10.66.4.0/24 子網,然後我們將強加存取限制使用防火牆規則來實作上述策略表)。
首先,為我們的 tun 介面定義一個靜態單元號,以便我們稍後能夠在防火牆規則中引用它:
dev tun0
在伺服器設定檔中,定義員工IP位址池:
server 10.8.0.0 255.255.255.0
新增系統管理員和承包商 IP 範圍的路由:
route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0
因為我們將為特定係統管理員和承包商分配固定 IP 位址,所以我們將使用客戶端設定目錄ccd
:
client-config-dir ccd
現在,將特殊設定檔放置在ccd
子目錄中,以定義每個非員工 VPN 用戶端的固定 IP 位址,如下所示。
ccd/sysadmin1
文件:
ifconfig-push 10.8.1.1 10.8.1.2
ccd/contractor1
文件:
ifconfig-push 10.8.2.1 10.8.2.2
ccd/contractor2
文件:
ifconfig-push 10.8.2.5 10.8.2.6
每對 ifconfig-push 位址代表虛擬用戶端和伺服器 IP 端點。它們必須取自連續的 /30 子網,以便與 Windows 用戶端和 TAP-Windows 驅動程式相容。具體來說,每個端點對的 IP 位址中的最後一個八位元組必須從此群組中取得:
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]
這樣就完成了 OpenVPN 設定。最後一步是新增防火牆規則以最終確定存取策略。
來源:https://openvpn.net/index.php/open-source/documentation/howto.html#policy
答案3
我在配置方面遇到了一些問題,例如@jas_raj。現在我正在做下一步:
1)在/etc/openvpn中建立一個新資料夾。例如 ”目錄」
2)server.conf新增行“客戶端設定目錄 dir/」
3) 在「dir」內,您需要建立一個新文件,其名稱與您在憑證中寫入的名稱相同,然後輸入:
ifconfig-push IP 掩碼
例如: ifconfig-push 10.0.0.10 255.0.0.0