Linux 環境下 連線 Fortinet VPN Server

只要先設定好 /etc/openfortivpn/aifed.conf 檔案,再下兩個命令,不但可以連上 Fortinet VPN Server,還可以作到在 Fortinet VPN Server 下的機器網路,和外部網站網路 進行分流。

先連線: sudo openfortivpn -c /etc/openfortivpn/aifed.conf &

再分流: sudo ip route add 192.168.100.0/24 via 169.254.2.1 dev ppp0


最近幫忙跑個專案,有部主機藏在 Fortinet 架構下,若要連線該主機,要先連上 fortinet 的 VPN Server, 然後才能跳進去該主機。而要連上 fortinet 的 vpn server,則要利用 Fortinet 提供的 VPN 連線軟體,才能連得進去。

對於架構,我沒有意見,專案夥伴也有提供連線工具(For MS Windows) 讓我可以連上 VPN Server,也非常好,對此,我非常感激。

但是,這對我的作業環境(Linux Desktop)確實不太方便,而這僅是我個人問題,所以,就自己動手解決了一下!

  1. 方案一:連線到官方網站,下載官方專屬連線軟體。
  2. 這是最理想狀態,但是,要下載該軟體,還要提供一些資訊,其中「公司」的 email 我就提供不出來。

    所以,方案一,失敗!

  3. 方案二:利用社群大家針對 Fortinet 開發的連線軟體,其實不難,速度也很快。
    1. 先安裝必要套件:
    2. 
          sudo apt install openfortivpn \
               network-manager-fortisslvpn \    ## 我使用 KDE 環境,所以必裝 
               network-manager-fortisslvpn-gnome  ## gnome 環境用,選配
          

      套件安裝好後,可以思考連線方式。

      連線有兩種方式,一是直接文字介面下命令,直接了當,這很符合我的愛好。另一是使用圖形介面,也很符合我懶惰個性。

      假設大前提如下:
      VPN Server ip: 192.168.100.100
      連接埠為 10001
      使用者帳號為 vpn_user01
      密碼為 @@123456@@

    3. 文字介面:
    4. 先執行:
      sudo openfortivpn 192.168.100.100:10001 --username=vpn_user01 --password=@@123456@@

      然後,會因為缺少信任憑證,所以會吐出許多錯誤訊息,此時,就吐出來的錯誤訊息中去尋找類似以下的訊息:
      ERROR: --trusted-cert a31232ac1f00251695e7af8caaea65@$#@$@$%#$^%$^#%^#%$^$%&^#^$%^#^#

      這一串訊息,便是系統針對自己主機所生出來的信任憑證,就是連線所需要的關鍵訊息,記得要保存起來。

      再執行一次,但是把信任憑證訊息加進去:
      sudo openfortivpn 192.168.100.100:10001 --username=vpn_user01 --password=@@123456@@ --trusted-cert a31232ac1f00251695e7af8caaea65@$#@$@$%#$^%$^#%^#%$^$%&^#^$%^#^#

      此時,便會出現連線成功的訊息了。

    5. 圖形介面:系統設定 –> 網路 –> 連線
    6. 新增–> 選擇 FortinetSSLVPN

      基本訊息填完後,還有「進階」要設定

      填上信任憑證訊息

      設定完成後,直接按「連線」,便可以連 Fortinet VPN Server!

    7. 特別注意
    8. 連上 VPN Server 後,手頭上正在作業機器的網路,會全部被導到 VPN Server去,原先已經連上的網站可能會因此斷線,或是速度奇慢無比,因此,若非必要,還是不要連上該 VPN Server。

  4. 進階:改善方案二,利用「文字介面」連線的缺點
  5. 利用「文字介面」直接連上去,簡單,直接,有效,是他的優點。

    但是,缺點有以下:

    1. 每次都要打很多字。
    2. 若有敏感資訊,容易外洩。
    3. 更動不方便。
    4. 密碼若有特殊字元,例如:(, ), 等等字元,便不好直接輸入,需要有跳脫字元來處理。

     

    如何改善缺點?
    /etc/openfortivpn/ 目錄下,寫個文字參數檔,便可解決。

    例如,在 /etc/openfortivpn/ 目錄下,寫個 aifed.conf 為例

    
    ### configuration file for openfortivpn, see man openfortivpn(1) ###
    host = 192.168.100.100
    port = 11111
    username = vpn_user01
    password =  @@123456@@ 
    trusted-cert = a31232ac1f00251695e7af8caaea65@$#@$@$%#$^%$^#%^#%$^$%&^#^$%^#^#
    
    set-dns = 0
    set-routes = 0
    

    要連線時,命令只要下
    sudo openfortivpn -c /etc/openfortivpn/aifed.conf
    就可以了!

    而且,若有不同的 VPN Server,也可以針對個別不同的 VPN Server 進行設定與連線。

  6. 修正:連上 VPN Server 後,讓 VPN Server 下主機 一般網站 網路流量 分流,以改善網速。
    1. 標準作法(建議)
    2. sudo ip route add 192.168.100.0/24 via 169.254.2.1 dev ppp0

      註: 169.254.2.1 是 VPN Server 遠端IP

    3. 迂迴作法
      1. 先固定 VPN 伺服器走實體網卡進出(此處為筆電無線 WiFi 網卡)
      2. sudo ip route add 192.168.100.100 via 192.168.3.1 dev wlp0s20f3

        註:

        1. 192.168.100.100 永遠走實體網卡(此為筆電無線網卡),不走 ppp0
        2. Wifi gateway : 192.168.3.1

         

      3. 再加內網路由
      4. sudo ip route add 192.168.100.0/24 dev ppp0

      以上兩個動作目的:

      1. 192.168.100.100 –> WiFi(強迫走這條路)
      2. 192.168.100.0/24 –> ppp0

 

總結

  1. 設定好 /etc/openfortivpn/aifed.conf 檔案。
  2. 先連線:sudo openfortivpn -c /etc/openfortivpn/aifed.conf
  3. 再分流:sudo ip route add 192.168.100.0/24 via 169.254.2.1 dev ppp0

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*