OpenVPN每個客戶端為什么占用四個IP?
背景
對于內(nèi)部系統(tǒng)的訪問,我們也是采用了常見openVPN網(wǎng)絡(luò)隧道方案實現(xiàn)業(yè)務(wù)遠(yuǎn)程訪問。最近北京疫情有點嚴(yán)重,響應(yīng)政府號召居家遠(yuǎn)程上班,openVPN的使用者也隨著內(nèi)部系統(tǒng)增多變得越來越多。
最近收到公司有人反饋,openVPN剛開始使用還好好的,現(xiàn)在連接狀態(tài)也是正常的,怎么就打不開系統(tǒng)了呢?
聽反饋說,openVPN客戶端連接軟件也重啟了,電腦也重啟了,還是打不開,聽著很是詭異,于是遠(yuǎn)程看了一下openVPN客戶端的連接日志如下:
看到這些的時候,也是相對納悶的,我自己用的還好好的啊,于是重新進(jìn)行了一次連接,發(fā)現(xiàn)連接正常,系統(tǒng)也能打開。還以為此時解決了,但是又收到一個相同反饋此問題的,于是就不淡定了,去服務(wù)端看了一下日志:
Tue May 10 16:11:41 2022 us=847325 4C:5E:0C:2C:F3:5A/11.1.1.105:57637 MULTI: no free --ifconfig-pool addresses are available
Tue May 10 16:11:41 2022 us=847380 4C:5E:0C:2C:F3:5A/11.1.1.105:57637 MULTI: no dynamic or static remote --ifconfig address is available for 4C:5E:0C:2C:F3:5A/11.1.1.105:57637
Tue May 10 16:11:41 2022 us=847451 4C:5E:0C:2C:F3:5A/11.1.1.105:57637 Connection reset, restarting [0]
Tue May 10 16:11:41 2022 us=847503 4C:5E:0C:2C:F3:5A/11.1.1.105:57637 SIGUSR1[soft,connection-reset] received, client-instance restarting
Tue May 10 16:11:41 2022 RADIUS-PLUGIN: BACKGROUND ACCT: Stop acct: username: 4C:5E:0C:2C:F3:5A, calling station: 11.1.1.105, commonname: 4C:5E:0C:2C:F3:5A.
Tue May 10 16:11:41 2022 RADIUS-PLUGIN: BACKGROUND ACCT: No accounting data was found for 4C:5E:0C:2C:F3:5A,11.1.1.105:57637.
Tue May 10 16:11:41 2022 RADIUS-PLUGIN: BACKGROUND-ACCT: Got accouting data from file, CN: 4C:5E:0C:2C:F3:5A in: 0 out: 0.
Tue May 10 16:11:41 2022 RADIUS-PLUGIN: BACKGROUND-ACCT: Stop packet was sent. CN: 4C:5E:0C:2C:F3:5A.
出現(xiàn)不少類似信息,查了一下說是沒有可用的IP地址可以,但是我記的前幾天出現(xiàn)問題通過增加了max-clients的數(shù)量解決了啊,怎么還不行呢?
# openvpn server.conf
max-clients 300
前幾天出現(xiàn)問題時,客戶端的截圖:
查了一下發(fā)現(xiàn)這個max-clients只是增加了客戶端的并發(fā)連接,并不能解決問題。經(jīng)過查詢,發(fā)現(xiàn)openVPN每個客戶端會占用4個IP位(openvpn-status.log)
按照這樣分配,單個網(wǎng)段連接用戶只能有62個,再多就不能正常連接,
原因
那為什么是這樣呢?經(jīng)過一番查詢,在官網(wǎng)的FAQ區(qū)找到了解釋:
解決方案
那也就是說可以通過增加網(wǎng)段的方式來解決此類IP地址池不夠用的問題,那就可以根據(jù)自己客戶端使用的數(shù)量,計算出合適的掩碼位即可:
這樣應(yīng)該就足夠了,但是在修改服務(wù)端掩碼的時候,特別需要??注意的就是iptables的變更!具體解決方案:
- 計算出合適的掩碼/23,修改openVPN服務(wù)端配置文件處的server指令
server 10.8.0.0 255.255.254.0
- 備份當(dāng)前環(huán)境的iptables規(guī)則
iptables-save > /data/backup/iptables-save.2022.05.10
- 添加修改掩碼后的POSTROUTING
iptables -v -L POSTROUTING -t nat --line-numbers # 獲取到記錄ID
iptables -t nat -D POSTROUTING 3 #刪除記錄
- 刪除之前掩碼的記錄
iptables -v -L POSTROUTING -t nat --line-numbers # 獲取到記錄ID
iptables -t nat -D POSTROUTING 3 #刪除記錄
- 重啟openVPN服務(wù)端即可
/etc/openvpn/restart.sh
- 最后記得修改那些自修復(fù)腳本內(nèi)容,例如systemd腳本或者開啟自啟文件中有配置服務(wù)啟動腳本的,注意修改!