0%

如何在windows下固定client端的ip

引言

在預設狀態client端被分配到的IP是由server端依據連線狀況來分配的,但有時候我們希望能夠固定某些,甚至是全部client端的IP。在此之前,要先了解由於server端不同的設定,可能會導致不同結果,所以我們要先來看server端的ovpn。

P.S. 以上狀況都是假設server端運行在windows上

檢查子網路模式

在OpenVPN server端的*.ovpn中,尋找一段指令 topology
如果你是依照先前教學做設定的話,應該會是 topology subnet
但有些比較舊的版本可能會是 topology net30
之所以用舊的設定可能是為了追求相容性,有些舊版的OpenVPN、windows不支援subnet

P.S. Linux上的話還可能topology p2p,不過這就不再我們討論範圍內。

製作client目錄

不管是何種topology 模式,我們需要先幫要固定ip的client製作設定檔

首先,在server端的ovpn內加入如下設定

1
client-config-dir D:/OpenVPN/ccd

後面 D:/OpenVPN/ccd 可以替換成你喜歡的路徑,找的到就好。
接著進入該目錄,新增 client名稱的檔案
比如你的client在設定憑證的時候用的名稱是client01 ,就直接用記事本建立一個client01檔案,不需要副檔名,日後有任何針對該使用者的設定都加在這邊。

topology subnet模式

接下來這邊不同模式就會有所不同,這裡示範的是subnet
假設server端的ip是 server 192.168.10.0 255.255.255.0
client01端想要設定在 192.168.10.10
在剛剛建立的 client01 裡面新增一行:

1
ifconfig-push 192.168.10.10 255.255.255.0

記得後面一定要是 255.255.255.0 ,這是subnet模式下的限制
完成設定之後,重啟 server端的OpenVPN即可完成

topology net30

這個模式有點特別,由於一個client會佔用到4組ip來傳輸資料,因此某些IP即使想用也無法,能後使用的IP放在文章結尾。
能用的IP會有連續2個數字為一組,2個都能使用,但1組IP只能同時有一個使用者使用。
假設我們使用 [37,38] 這組,我希望我client的IP是 192.168.10.37
那我在 client01的設定如下:

1
ifconfig-push 192.168.10.37 192.168.10.38

把要用的IP放第一位,同理如果想使用 192.168.10.38

1
ifconfig-push 192.168.10.38 192.168.10.37

倒置即可
設定完成後重啟 OpenVPN 測試

P.S.1 注意:如果我有client使用了192.168.10.37,那192.168.10.38就不能被使用,其他組的狀況毅然
P.S.2 細心的人應該注意到,每組之間會跳2個號碼,那2個號碼其實是會被VPN使用的(似乎是網路架構就是如此設計),也就是說用了[1,2]、整個1~4尾數的IP都會被使用掉。但是,就算你尾數不用1或2,直接設定3或4,不會有錯誤訊息,但IP就變成照server自己分配,而非你當初的設定,這點其實蠻奇怪的。

net30可用的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]