Linux

openfortivpn 殺死了我的路線

  • April 22, 2020

我正在嘗試使用 openfortivpn 進行連接。以前我一直在 MS-Windows 上使用 Fortinet VPN 客戶端 - 現在每次嘗試啟動它時都會出現藍屏(我正在下載升級版本,但出於其他原因想在 Linux 上配置它)。

我連接的基礎設施有很多子網,其中一些與我的本地子網衝突。因此,使用預設設置 (–set-routes=1) 它會覆蓋我的本地路由,並且盒子會斷開與本地網路的連接。命令行選項似乎只允許一切或不允許。

我能夠擷取啟動時正在應用的配置並自動配置路由。Cherry 選擇相關條目並嘗試應用它們(在使用 –no-routes 重新啟動 VPN,然後手動記錄 IP 地址後)導致連接正常。

ip route add to 10.0.99.0/255.255.255.0 via 10.220.136.94 dev ppp0

但是每次連接時本地地址都會改變;我不能將其用作腳本中的文字值。

我如何編寫腳本讓它自動發生?

openfortivpn的手冊頁提到了一些控制路由的環境變數——但是輸入

"VPN_ROUTE_GATEWAY" openfortivpn

進入 Google 只是給了我指向 openfortivpn 原始碼的連結(而且我對 C 的了解太生疏了,無法對其進行逆向工程)。

事實證明,可以使用 ip-up 腳本自動執行該技巧,我仍在努力使其工作。

答案是:您可以創建一個“ip-up”文件並使用 –ppp-ipparam 進行路由:

只需將以下文件添加到您的/etc/ppp/ip-up.d/yourendpointname

-你可以隨便叫它 -

#!/bin/sh -e

if [ "$PPP_IPPARAM" = "yourendpointname" ]; then
 /sbin/ip r add 10.0.99.0/24 via $PPP_LOCAL
fi

在這裡,"yourendpointname"應該匹配--ppp-ipparam您要在 openfortivpn 呼叫中使用的參數。

chmod 755 這個文件然後 --ppp-ipparam=yourendpointname在呼叫 openfortivpn 時使用。

以下(以前的)答案有些複雜:

順便說一句,您可以使用以下腳本獲取 VPN 網關並添加一些路由:

# Print routes, get ppp0 route link, get gateway ip into $GW
GW=$(ip r|grep ppp0|grep link|sed -e 's/.* link src \(.*\)$/\1/g')
# Use $GW variable as gateway for your new routes
ip r add 10.0.99.0/24 via ${GW}

這可能會有所幫助。

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