教學: 用 Ubuntu Linux (64bit) 環境使用 Juniper SSL VPN (免裝 32bit Java) (zh_TW)
Juniper SSL VPN 常被用在各種地方,包括台灣各國立大學也都有由 TWAREN 所提供的服務。
因為它對於 64bit Linux 的支援問題,要在 Ubuntu (Linux) 64bit 上使用並不容易。
如果你不希望只為了用它而得多裝一套肥大的 32bit Java,這篇就是你要的教學文。
更新:因為 NPAPI 的支援問題, ncLinuxApp.jar 須手動下載。 - 2018/8/15
If you want English HOWTO, check English version 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 以及其他檔案
內容更新:
這一步因現在 Firefox 限制了對 NPAPI 的支援,而不會自動執行 Java 外掛、下載 ncLinuxApp.jar 檔案了
需要改在 SSL VPN 網頁登入後,自行在網址列輸入 https://伺服器位址/dana-cached/nc/ncLinuxApp.jar 下載檔案,放入 ~/.juniper_networks 內,才能再用 ./msjnc 執行
- 2018/8/14 Jiazheng
登入 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
因為一個 NetworkConnect bug,Ubuntu 16.10 或更新的版本(Linux Kernel 4.5 及之後的版本)請先執行這個指令,解法取自 Kernel 討論串。
echo 0 | sudo tee /proc/sys/net/ipv6/conf/default/router_solicitations
執行 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,然後又寫中文版到早上...
希望這篇教學能為你節省時間,節能省碳,救了隻小貓、少砍一顆樹,促進世界和平大同。
享受吧!阿宅!
- Email this page
- 96297 reads
Add new comment