2011年5月27日 星期五

[Linux] VNC + SSH Tunnel + iptables @ Ubuntu 10.04 desktop

由於要上課的關係且手邊的筆電只有 EEE PC 等級,課程卻是要開 Eclipse 跑 Android 模擬器,故選用了遠端桌面啦,但 Ubuntu 的遠端桌面不太好用?!不曉得可能是因為我不太懂,每次啟動 VNC 時,除了本機端不能 logout 外,且 VNC 好像也不是加密連線?


簡單的說,當 Ubuntu desktop 要開啟遠端連線時,遠端看到的畫面就目前本機端看到的,所以不能 logout ,因為 logout 的話,遠端也是看到一樣的畫面 XD 我記得 Ubuntu 裡頭有 "遠端桌面" 跟 "遠端登入",我猜我可能有些誤解,印象中以前有用過遠端登入使用 X-Window 的說。


至於在 Ubuntu 上使用遠端桌面且希望加密的解法,就是使用 SSH Tunnel ,讓所有連線內容都走 SSH 加密連線。而 iptables 是 Ubuntu 的防火牆設定,把 VNC 的預設 5900 port 限制一下,僅限本地端連線,這樣算是基本的安全設定吧。


環境敘述:


一台 Ubuntu 10.04 desktop 工作機、一台 Windows XP 小筆電


Ubuntu:


vnc_remote_desktop



  • 開啟 SSH 服務提供遠端登入

    • $ sudo apt-get install openssh-server



  • 開啟 VNC 服務,並限定需要密碼才能登入

    • [System] -> [Preferences] -> [Remote Desktop]



  • 設定 iptable ,限制只能本地端 localhost 登入 5900 port (VNC port),對外網卡是 eth0

    • $ sudo iptables -A INPUT -i eth0 -p tcp --dport 5900 -j DROP




Windows XP:


ssh_tunnel



  • 使用 PuTTY 建立 SSH Tunnels,讓本地端 localhost 5900 對應到 Ubuntu 機器的 5900 


    • PuTTY -> Connection -> SSH -> Tunnels -> Source Port (5900) 、Destination(ubuntu_ip:5900) ,按 Add 新增,之後就可以點 Open 開啟連線



  • 使用 RealVNC - VNC® remote control softwareVNC Viewer Free 軟體進行遠端登入,免費的,下載軟體時可以不填資料

    • 連線位置 localhost 即可,過程會需要輸入 Ubuntu 設定的遠端桌面的密碼




使用的感覺是堪用,如果在 VNC Viewer 進行登出、鎖定螢幕等動作,會導致無法連回 Ubuntu 機器。最大的缺點是... Ubuntu 本機端無法 lock screen 會有資安問題!


2011年5月26日 星期四

[Unix] awk: Too many open files @ FreeBSD

之前用 awk 練習,[Unix] 簡易分析 Squid 產生的 log @ FreeBSD,結果最近跑的時候開始碰到這個問題:Too many open files,一時之間還以為是自己程式的 bug,最後發現是 awk 裡有用到 pipe 等相關開檔動作,做完要記得 close 就行了。


簡易範例:


awk  ' { data[$1]++ } END { for( d in data ) { cmd = "wc -l /tmp/file";  cmd | getline result ;  close( cmd );   print result;   }   }'


由於是跑迴圈,資料多筆時就會碰到 Too many open files 的問題,只要把每個 pipe 或 file 相關的動作都有 close 掉就能解決囉。


2011年5月23日 星期一

[Linux] Building Pidgin 2.7.11 & MSN MPOP Problem @ Ubuntu 10.04

即時通(IM)軟體,已經成為 RD 人員對內或對外的溝通管道,在 Ubuntu 環境上,有幾種可以選擇,我選擇使用 Pidgin (鴿子圖)軟體,Open source 的,目前 Ubuntu 10.04 Desktop 64bit 環境中,可以用軟體管理安裝 Pidgin 2.6.6 版本。此 Pidgin 支援眾多 IM 服務,如 MSN、GTalk、QQ、ICQ 等,另外在 Mac OSX 的 Adium (鴨子圖)軟體也採用 Pidgin 核心


至於為啥要安裝最新版?去年底有一陣子使用 MSN 時,會有 CA 憑證問題,當時使用新版可以解決,最近則是看到 Adium 1.5hg 版可以支援多重地點上線(例如 WinXP 與 Ubuntu 同時使用同一個帳號上線),在加上他的核心是 Pidgin,所以就想來編看看新版,目前使用 Pidgin 2.6.6 版時,不支援多重地點上線。


安裝環境:


Ubuntu 10.04.2 Desktop 64-bit @ 2011-05-23 & VirtualBox


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot


相關環境:


$ sudo apt-get install intltool libgtk2.0-dev libxss-dev libgtkspell-dev libxml2-dev libgstreamer0.10-dev libgstfarsight0.10-dev libgstreamermm-0.10-dev libidn11-dev libmeanwhile-dev libavahi-core-dev libavahi-client-dev libavahi-glib-dev libdbus-glib-1-dev libnm-glib-dev libperl-dev libgnutls-dev tcl8.4-dev tk-dev


編譯(Pidgin 原始碼 http://pidgin.im/download/source/):


$ wget "http://downloads.sourceforge.net/project/pidgin/Pidgin/2.7.11/pidgin-2.7.11.tar.bz2?r=http%3A%2F%2Fpidgin.im%2Fdownload%2Fsource%2F&ts=1306119851&use_mirror=nchc" -O pidgin-2.7.11.tar.bz2
$ tar -xvf pidgin-2.7.11.tar.bz2
$ cd pidgin-2.7.11
$ ./configure
$ sudo make install clean


重開機(登入?)以後,就可以在 Internet 那邊看到 Pidgin 軟體。 


其他編譯時會碰到訊息(已安裝相關環境則不會碰到):


configure: error:  (libxss-dev)
XScreenSaver extension development headers not found.
Use --disable-screensaver if you do not need XScreenSaver extension support,
this is required for detecting idle time by mouse and keyboard usage.

configure: error: (libgtkspell-dev libxml2-dev)
GtkSpell development headers not found.
Use --disable-gtkspell if you do not need it.

configure: error: (libgstreamer0.10-dev)
GStreamer development headers not found.
Use --disable-gstreamer if you do not need GStreamer (sound) support.

configure: error: (libgstreamermm-0.10-dev libgstfarsight0.10-dev)
Dependencies for voice/video were not met.
Install the necessary gstreamer and farsight packages first.
Or use --disable-vv if you do not need voice/video support.

configure: error: (libidn11-dev)
GNU Libidn development header not found.
Use --disable-idn if you do not need it.

configure: error: (libmeanwhile-dev)
Meanwhile development headers not found.
Use --disable-meanwhile if you do not need meanwhile (Sametime) support.

configure: error:  (libavahi-core-dev libavahi-client-dev libavahi-glib-dev)
avahi development headers not found.
Use --disable-avahi if you do not need avahi (Bonjour) support.

configure: error:  (libdbus-glib-1-dev)
D-Bus development headers not found.
Use --disable-dbus if you do not need D-Bus support.

configure: error:  (libnm-glib-dev)
NetworkManager development header not found.
Use --disable-nm if you do not need D-Bus support.

configure: error:  (libperl-dev)
Perl development headers not found.
Use --disable-perl if you do not need Perl scripting support.

configure: error:  (libgnutls-dev)
Neither GnuTLS or NSS SSL development headers not found.
Use --disable-nss --disable-gnutls if you do not need SSL support.
MSN, Yahoo!, Novell Groupwise and Google Talk will not work without SSL. OpenSSL is NOT usable!

configure: error:  (tcl8.4-dev)
Tcl development headers not found.
Use --disable-tcl if you do not need Tcl scripting support.

configure: error:  (tk-dev)
TK development headers not found.
Use --disable-tk if you do not need Tk scripting support.


關於 Multiple Points of Presence (MPOP):


去年 11 月底,有碰到一陣子 MSN CA 憑證問題,當時有看到一些文章在講 Pidgin 2.7.6 除了解決此問題外,也支援 MSNP16 及 MPOP 功能,而甚麼是 MPOP 功能呢?就是支援同一帳號多處上線的功能。


相關文件:


Microsoft_Notification_Protocol#MSNP16


Ticket #8247 (closed enhancement: fixed) - Support MSNP16 multiple logins


Pidgin News @ November 01, 2010 - MSNP16 and SLP-rewrite merged


隨後我也翻了一下 Pidgin-2.7.11 的程式碼,發現的確有對應的程式,但不知為啥我在使用 Pidgin-2.7.11 時,在設定帳號那邊,卻找不到相對應設定 MPOP 的選項?後來發現,如果是使用 /usr/local/bin/pidgin 就不會看到,但用 src 裡 pidgin/pidgin 執行,就可以看到設定選項多了 Allow connecting from multiple locations 啦!


mpop


如果把 mpop 關掉,則是在 ~/.purple/account.xml 裡 <settings> 中會多一欄(預設並不會設定此直,可能預設就是啟用 MPOP 模式):


<setting name='mpop' type='bool'>0</setting>


那如果看不到此 UI 的話,強制去更新 account.xml 加上 <setting name='mpop' type='bool'>1</setting> 好像可強制啟用 MPOP 吧?但測試的結果,無論打開選項或關掉都沒有影響。感覺此功能好像是被隱藏起來,不然就是有使用條件的限制。


另外一提,Ubuntu 10.04 內建環境的 Pidgin-2.6.6 哩,是使用 libpurple 2.6.6 ,但我安裝新版的 Pidgin-2.7.11 哩,在"說明"中還是用 libpurple 2.6.6 而已。簡單的說,我覺得內建環境的 Pidgin-2.6.6 應該就可以使用 MPOP 才對 :P 因為函式庫是同版本。我想我應該有遺漏甚麼,有空再來查查。


2011年5月20日 星期五

美麗的誤會

排氣檢查的禮物


又到了一年一度的排氣檢查,我那台老車啊,想說去年從宿舍騎沒 3 分鐘就去測試,結果當然是失敗 XD 這次我記取教訓,乾脆騎到市區順便領火車票,在途中看到一間有檢測的店就給他測了一下,結果...還是沒過 XD


這是測試的是 A 老闆,A 老闆看到測沒通過時,很好意地跟我說,請我去我信任的車行維修,這句話給人感覺很讚,不像去年第一次測的 C 老闆,一臉奸笑著說要收多少錢 XD 隨後我就去找 B 老闆維修,而 B 老闆是大家掛保證的好老闆,去年也是找他維修的,只可惜 B 老闆沒再做檢測。讓他幫我調整了一會後,由於今年的排氣測試維修還要簽名,所以 B 老闆覺得如果沒測過還要再維修,要不斷地從 A 到 B 跑來跑去,對我有點不方便,在加上看到檢測的是 A 老闆,馬上就跟我說 A 老闆人很老實,請我放心地給他維修就好,這樣要測試也比較方便。


所以,我就多認識一位好機車老闆(怪怪的稱呼XD)。在維修的過程,我擔心口袋不夠深,所以會多詢問幾次價錢,並且維修過程,其徒弟還會詢問某個舊東西要不要換,結果 A 老闆回說還可以用,就繼續用,整個維修過程讓我感到很安心 :) 最後的測試當然就是 Pass 啦!只是 A 老闆還是跟我提醒,二行車對環境本來就比較有汙染,現在檢測成功,比較像吃安非他命罷了,建議還是考慮換一下車,對環境比較好,好感再次 ++ 


我覺得與人相處就是要互動,修車的過程我嘗試詢問對方可能擅長的回答內容,例如培養一位師傅要花幾年等等,讓老闆講得很順嘴,漸漸地就會像聊天了 :D 老闆還跟我說,像我剛剛第一次測時,旁邊也有一台進來,那台就是住在附近,騎來的車不夠熱的,他說這種他一定不測,要對方先騎去市區跑跑啦!這會讓我想起去年我車騎不夠久時(小於3分鐘吧),當時的 C 老闆還是執意幫我測,那種感覺是有落差的。


至於學徒方面,老闆說大概要花 3~5 年,我說不是有啥專科學校嗎,他說那邊教的是理論,到車廠上班就是學經驗,還說有些人看起來跳槽很多間,好似吸收很多經驗,但不見得是真本領。我想,言下之意就是找個好老闆,好好地跟一陣子,認真學習就對了。這讓我想到資訊業都沒有這種傳承的,如果老闆又不常 coding 的,大概只會丟幾篇 paper 或是要你看看哪些 framework 就拿來用,感覺真的有差啊 :P 在資訊業好像傳承的部分很少,大概都各憑本事吧。


除此之外,今天要去火車站時,等紅燈時還碰到一位咩問路 XD 可惜我回答得不出來,只說應該是在前面,雖然結果是猜對的,但還是挺遜的!我該多跑市區多記幾條路才是!


Anyway,有時也不用執著已知的解法,換個方向走走,也是挺不錯的,上圖就是測試成功後,老闆送我的禮物 XD 他說,要測試成功他才有錢可以領,也算是要謝謝我這個客人吧!(只是感覺很像去 xxx 後,付完錢,被對方包紅包 XD)


2011年5月18日 星期三

[Windows] 搭配 VirtualBox 共享目錄,使用 Dropbox 服務 @ Windows 7

今年開始用 Dropbox ,但由於資安安全性部分,我不太想直接在自己的電腦上直接安裝 Dropbox ,所以我想把 Dropbox 安裝在虛擬環境上(Guest OS),但資料又可以輕易的使用(Host OS),簡單來說讓資安問題停留在虛擬機器上,但實體機器又可以存取 Dropbox 之同步資料。


我使用的作業系統是 Windows 7 x64 ,原先在 Virtualbox 安裝一個 Windows XP 跑 Dropbox,透過 Virtualbox 共享資料夾(NFS),結果發現 Dropbox 不允許使用網路硬碟。這下可好了,想做的事都不能搞 XD 不使用網路硬碟算是有一些實作上的考量,例如 lock 的問題等。結果最近我安裝了 Ubuntu 來使用,想說再試一次網路硬碟的方式看看,沒想到在招在 Ubuntu 10.04 Desktop 64-bit 上適用耶!所以就來筆記一下。


Host:


OS:Windows 7 x64 + VirtualBox 4.0.4 r70112 (並非最新版,新版使用上有點問題,所以改換前一版)


使用目錄 D:\SharedDropbox


Guest:


OS:Ubuntu 10.04 Desktop 64-bit


dropbox


流程就很順地安裝完上述兩套環境,接著在 Guest OS 上安裝 Virtualbox Guest Additions ,並共享 Host 端 D:\SharedDropbox 目錄,勾選 "自動掛載" 和 "永久性",使用的名稱還是 SharedDropbox。接著在 Ubuntu 環境上(Guest OS)進行自動掛載的設定:


$ sudo mkdir /SharedDropbox
$ sudo vim /etc/fstab


# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=#####-####-####-####-###### /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=########-####-####-####-######## none            swap    sw              0       0
# Dropbox
SharedDropbox   /SharedDropbox  vboxsf  defaults        0       0


重點是上述最後兩行。


$ sudo reboot


上述重開機完就算完成,以後Ubuntu 開機時就會自動掛載該目錄。如果只想要測試,就先用 sudo mount -t vboxsf ShadredDropbox /SharedDropbox 看看,例如在該目錄建立一個檔案,是否能在 Windows (Host OS)上看到。


最後就能用叫 Ubuntu 幫你抓好資料擺好,然後用 Windows 存取那些檔案啦,有點脫褲字放屁啦 XD