Juniper SSL VPN 常被用在各種地方,包括台灣各國立大學也都有由 TWAREN 所提供的服務。
因為它對於 64bit Linux 的支援問題,要在 Ubuntu (Linux) 64bit 上使用並不容易。
如果你不希望只為了用它而得多裝一套肥大的 32bit Java,這篇就是你要的教學文。

If you want English HOWTO, check English version HERE or HERE.

概要

# 安裝函式庫
$ sudo apt-get install libc6:i386 zlib1g:i386 libgtk2-perl libwww-perl

# 取得檔案
$ wget https://raw.github.com/madscientist/msjnc/master/msjnc
$ wget http://mad-scientist.net/junipernc
$ chmod +x msjnc junipernc

# 瀏覽器開 SSLVPN 網站並下載 jar 檔

# 解出檔案
$ ./msjnc

# 啟動 VPN
$ junipernc --nojava

SSL VPN 是什麼

VPN

VPN(虛擬私有網路)是個讓人們能存取 NAT 防火牆內,位在 LAN (區域網路) 裡的主機和服務的方法。例如:從家裡或是出差時連線到公司的電腦。 有許多不同種類的 VPN,例如 PPTP、OpenVPN、Cicso OpenConnect 等等。

SSL VPN

SSL VPN 是其中一種 VPN,原本被設計來讓使用者只要有瀏覽器就能夠使用。
有些人將它視作是使用者最容易使用的方法,但前提是所有使用者都用 M$ Windows,或是廠商提供了足夠的跨平台支援
可惜的是 Juniper SSLVPN 的方案 (NetworkConnect client)並沒有對 64 位元 Linux 的良好支援,所以我們得自己動手做點小修改。


工具

我們需要這些東西:

  • junipernc
  • msjnc
  • 瀏覽器(Firefox 或 Chromium)
  • Java(你系統裡原本的 64bit Java 以及隨附的瀏覽器外掛)
  • 一點點基本的 32 位元函式庫
  • 幾個基本的 Perl 函式庫,這是為了支援圖形化的對話框。 (有了這個才能避免使用 32 位元 Java 提供的圖形界面)

在這個例子中,我們會使用 junipernc 來協助我們安裝,以及幫我們自動執行一些複雜的指令。msjnc 只是用來取得我們需要的檔案。

瀏覽器只是用來下載 Juniper 的 SSLVPN 客戶端軟體 NetworkConnect

Java 只是用來處理一些安裝流程。若你還沒有安裝 Java,可以看看 這篇 有關 Oracle Java 的安裝教學文。

$ sudo apt-get install libc6:i386 zlib1g:i386
$ sudo apt-get install libgtk2-perl libwww-perl
$ wget https://raw.github.com/madscientist/msjnc/master/msjnc
$ wget http://mad-scientist.net/junipernc
$ chmod +x msjnc junipernc

或是你也可以從 這裡 下載 junipernc 及 這裡 下載 msjnc 。


流程

準備所需資訊

我們需要一些資訊來讓工具幫我們登入:

  • Network Connect URL or Server
  • username
  • Realm

Network Connect URL or Server 是你瀏覽器開啟 SSLVPN 登入頁面時的網址。在我的例子中,長得像是這樣:

TWAREN's Juniper SSLVPN Login page

我們得將所有需要的檔案放在系統裡。

1. 取得 .jar 以及其他檔案

登入 SSLVPN 後,你會看到 Network Connect -> Start,請點擊 Start

Juniper SSLVPN 登入後畫面

點選頁面右上角的「允許」讓 Java 執行。一路點允許、繼續。最後它會安裝失敗並有關於 32 位元相關的錯誤。

*莫驚慌!莫害怕!*這是意料中的事,因為我們正在用 64 位元系統,而那個 Java 應用程式需要 32 位元的環境。

安裝失敗畫面

檢查一下你家目錄中的這個目錄,你會看到 ncLinuxApp.jar 就安靜地躺在那裡,像個睡著的孩子:

bluet@clean:~$ ls -al .juniper_networks
總計 2032
drwxrwxr-x  2 bluet bluet    4096  3月 29 01:01 .
drwxr-xr-x 20 bluet bluet    4096  3月 29 01:00 ..
-rw-rw-r--  1 bluet bluet 2065489  6月 25  2014 ncLinuxApp.jar
-rw-rw-r--  1 bluet bluet      19  3月 29 01:01 whitelist.txt

2. 將檔案抽取出來

msjnc 這工具會像用了吸星大法一樣,幫我們把需要的檔案從 ncLinuxApp.jar 裡汲取出來:

$ ./msjnc

執行後它會無聲無息地結束,但若再檢查一下剛才的目錄,你會發現世界變得不一樣。

bluet@Zorya:~$ find ~/.juniper_networks/
/home/bluet/.juniper_networks/
/home/bluet/.juniper_networks/networkconnect.gif
/home/bluet/.juniper_networks/network_connect
/home/bluet/.juniper_networks/network_connect/version.txt
/home/bluet/.juniper_networks/network_connect/libncui.so
/home/bluet/.juniper_networks/network_connect/xlaunchNC.sh
/home/bluet/.juniper_networks/network_connect/ncsvc
/home/bluet/.juniper_networks/network_connect/ncdiag
/home/bluet/.juniper_networks/network_connect/NC.jar
/home/bluet/.juniper_networks/network_connect/META-INF
/home/bluet/.juniper_networks/network_connect/META-INF/IMPORTED.RSA
/home/bluet/.juniper_networks/network_connect/META-INF/IMPORTED.SF
/home/bluet/.juniper_networks/network_connect/META-INF/MANIFEST.MF
/home/bluet/.juniper_networks/network_connect/installNC.sh
/home/bluet/.juniper_networks/network_connect/ncsvc.log
/home/bluet/.juniper_networks/network_connect/getx509certificate.sh
/home/bluet/.juniper_networks/getx509certificate.sh
/home/bluet/.juniper_networks/ncLinuxApp.jar

3. 使用 32 位元 Java 執行 msjnc(請略過這個步驟,如果你不想多裝一個累贅的 32 位元 Java)

我不想安裝多一個累贅癡肥的 Java只為了這個 32 位元的鬼東西。
我用的是 240G SSD。速度快但是西北貴,我真的不想浪費我的硬碟空間在這幾乎用不到的 32 位元 Java

但如果你堅持,或是你覺得你有一狗票硬碟可浪費,還有浪費電、浪費網路頻寬,那就這麼做吧。我制止不了你。

不然,別這麼做

安裝多餘的 32 位元 Java:

$ sudo apt-get install openjdk-7-jdk:i386

msjnc 有它自己的圖形界面,讓使用者能較容易地控制 VPN 連線,但它需要 32 位元 Java。

現在你可以在 Dash 中搜尋 Network Connect 並開始使用閃亮亮的圖形界面了。(歧視表情)

但我不是腦殘,指令列又酷又炫。好 CLI,不用嗎?


啟動 VPN,開始享受

現在我們該設定 VPN 並讓它執行了。

設定 VPN

執行 junipernc不要用 32 位元 Java

$ junipernc --nojava

第一次執行時,你會看到一些跳出的圖形對話框,詢問你有關 VPN 的資訊
我們在第一步驟時就已經準備好這些資訊了,此時不用更待何時,所以現在輸入吧。

一旦完成,系統裡會多出一個新的網路界面

bluet@clean:~$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.99.1.30  P-t-P:10.99.1.30  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:16363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11128 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:20952021 (20.9 MB)  TX bytes:777393 (777.3 KB)

現在你可以 ping 看看你的辦公室電腦或是上 WhatIsMyIP 看看你的 IP,你已經進入 VPN 的裏世界了。你也看看這兩個檔案中所儲存的 VPN 設定: ~/.vpn.default.crt

啟動 VPN

下次想要啟動 VPN 連線時,用一樣的指令即可。

$ junipernc --nojava

輸入密碼後,你就再度進入那神秘美好的世界了。

停止 VPN

當你工作完畢,想要斬斷魂結、斷開鎖鏈時,用這個指令斬斷 VPN 執行程序以斷開 VPN。

$ sudo killall ncsvc

後記

我花了好幾個小時搞定讓它能動,然後花了整晚重複確認步驟、寫英文版 HOWTO,然後又寫中文版到早上⋯⋯希望這篇教學能為你節省時間,節能省碳,救了隻小貓、少砍一顆樹,促進世界和平大同。

享受吧!阿宅!


Import from https://medium.com/geeky-log

Originally published at blog.geeky.name on March 28, 2016.