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 登入頁面時的網址。在我的例子中,長得像是這樣:
我們得將所有需要的檔案放在系統裡。
1. 取得 .jar 以及其他檔案
登入 SSLVPN 後,你會看到 Network Connect -> Start
,請點擊 Start。
點選頁面右上角的「允許」讓 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.