2012年10月17日 星期三

archlinux下使用jnc連接學校VPN

從學校的宿舍搬出來後,為了要從學術資料庫裡載paper下來看,對VPN連線的需求日益孔急,一時之間找不到連線辦法,只好使出最智障的方式:在Vbox裡面開windows然後從windows裡面連VPN…。 但這個方法實在太腦包了,最近經過一番嘗試,總算成功在Archlinux下連接學校VPN,在這裡記錄一下解法的各步驟:

1.程式配置: 安裝jnc,這個簡單從AUR裝就OK惹
https://aur.archlinux.org/packages.php?K=jnc&SeB=x
從學校VPN載到juniper client的檔案,學校已經壓成rpm檔,於是用rpmextract.sh解開它,裡面有幾個程式包括:NC.jar, ncsvc, libncui.so之類的
把解壓縮的檔案放到~/.juniper_networks/network_connect裡面

2.修改jnc: jnc的執行程式是用perl寫的,位置應該會裝在/usr/bin/內,用超級使用者權限做一些修改:
my $ncdir = "$ENV{'HOME'}/.juniper_networks/network_connect";
my $configdir = "$ncdir/config";
這兩個指定VPN執行檔與設定檔的的位置,覺得這兩個地方風水不好的話,可以修改這個地方。
my $gui = 1;
可以設定要不要有gui介面,這部分需要java,我懶得管什麼gui就把它改成0 XD

3.設定檔: 如上,預設的設定檔為~/.juniper_networks/network_connect/config/default.conf
格式如下:
host=foo.bar.com
user=username
password=secret
realm=very long realm with spaces
cafile=/etc/ssl/bar-chain.pem
certfile=
下面則是我的設定檔,為了保護學校的校譽,在這裡把學校名字蓋住:
host=sslvpn.XXX.edu.tw
user=garbage
password="Garbagepass"
realm=XXX Email Account
cafile=/home/yodalee/.juniper_networks/network_connect/XXX.pem
certfile=
在realm的部分,就是登入vpn時除了帳號密碼外的那欄,我是用chromium F12看原始碼找到相對應的地方
<select size="1" name="realm">
注意這裡大小寫要全對才會過。

4.VPN認證檔: 這地方要從VPN提供者的網頁載下它的認證,使用下面的指令:
openssl s_client -connect url:443 > test.pem
然從編輯該pem檔,把-----BEGIN CERTIFICATE-----到 -----END CERTIFICATE-----以外的部分都刪掉,把這個pem檔放在設定檔中,cafile指定的位置

5.特殊權限: 這部分主要是參考資料2中所提到的: 好像是因為jnc呼叫的ncsvc中,會更動/etc/resolve.conf的內容還是怎麼樣,要對ncsvc的權限做特別設定,我也沒有試著不設定然後連結VPN,不知道不設會怎麼樣:
$ sudo chown root:root ~/.juniper_networks/network_connect/ncsvc
$ sudo chmod 6711 ~/.juniper_networks/network_connect/ncsvc
$ chmod 744 ~/.juniper_networks/network_connect/ncdiag 

6.連結vpn: 使用jnc就可以直接連結惹 沒圖沒真相,用vpn連結學校資料庫,可以看得到只有學校網域才享有的download full text:

再用jnc stop就可以切斷vpn連線。

參考資料:
1. https://wiki.archlinux.org/index.php/Juniper_VPN
2. http://www.rz.uni-karlsruhe.de/~iwr91/juniper/

致謝: 本篇文章感謝黃偉寧(AZ Huang)同學的指導
Related Posts Plugin for WordPress, Blogger...