Openvpn
為 openVPN 動態推送路由
我知道從 server.conf 我可以做到這一點:
push "route 192.168.20.0 255.255.255.0"
但是,有沒有辦法動態推送路由?我有一個 API 呼叫,它返回 vpn 客戶端需要的所有路由,所以在某些路由更改的情況下,客戶端將重新啟動 vpn 連接,它將擁有新的路由。這可能嗎?如何?我想從伺服器端管理這個。
自定義配置的關鍵是使用客戶端連接選項
vpn-endpoint.conf 的提取
script-security 2 client-connect /etc/openvpn/up-client
一個非常基本的腳本
#!/bin/sh CONFIG_FILE=$1 ( env ; echo CONFIG_FILE ${CONFIG_FILE} ) >> /var/log/openvpn-up-client.log case "$username" in (me) echo 'push "route 192.168.168.168 255.255.255.255"' >>${CONFIG_FILE} ;; (*) echo 'push "route 192.168.169.169 255.255.255.255"' >>${CONFIG_FILE} ;; esac
man openvpn提取
–客戶端連接cmd
在客戶端連接上執行命令 cmd。
cmd 包含腳本(或可執行程序)的路徑,可選地後跟參數。
路徑和參數可以是單引號或雙引號和/或使用反斜杠轉義,並且應該用一個或多個空格分隔。
該命令將剛剛經過身份驗證的客戶端的公用名和 IP 地址作為環境變數傳遞(請參閱下面的環境變數部分)。該命令還將新創建的臨時文件的路徑名作為最後一個參數(在 cmd 中指定的任何參數之後)傳遞,該命令用於將動態生成的配置文件指令傳遞回 OpenVPN。
如果腳本要在客戶端連接時生成要在伺服器上應用的動態配置文件,則應將其寫入最後一個參數命名的文件中。
有關可以在動態生成的配置文件中合法使用的選項,請參閱下面的 –client-config-dir 選項。
請注意,腳本的返回值很重要。如果腳本返回非零錯誤狀態,將導致客戶端斷開連接。