2012年3月6日 星期二

初識 iSCSI

Synology DS212j 有支援 iSCSI,來了解一下這是什麼。

iSCSI (Internet SCSI) 是將 SCSI 硬碟的指令在 IP 網路上跑,類似網路芳鄰的一種網路儲存空間的通訊協定,不同的是網路芳鄰看到的儲存空間是一個可放檔案的目錄,而 iSCSI 看到的是更底層的硬碟,無論是實體的或虛擬的硬碟,可以對它格式化,決定使用的檔案系統,就像本機硬碟一樣。我想如果 BIOS 有支援的話,應該可以用當開機碟。一個 iSCSI 硬碟群稱為 iSCSI Target,會有一個 IQN 名稱給使用端 iSCSI Initiator 識別連接用。

這篇的比較結果,iSCSI 速度比網路芳鄰慢,且我的分享以檔案為主,而不是硬碟分享,所以暫且就不考慮使用 iSCSI。

整理一下 Synology 的儲存架構,由下而上分別為:
  • 實體硬碟是最基本儲存硬體。
  • 硬碟群組 (Disk Group) 由數個硬碟組成。(我的沒有這一層)
  • 儲存空間 (Volume) 可能是一個實體硬碟,或一個硬碟群組的全部或部份。
  • iSCSI LUN 代表一顆 iSCSI 硬碟,可放在某個儲存空間裡 (Synology 支援機動空間配置),或是一個硬碟群組的全部或部份。
  • iSCSI Target 代表一個硬碟群,可有一個或數個 iSCSI LUN,並有一個 IQN 名稱給 iSCSI Initiator 連接其下所有硬碟用。
一個 iSCSI 硬碟可讓多個 iSCSI Initiator 連結使用,但一般檔案系統會有檔案完整性問題,要特定檔案系統,如「VMware 虛擬主機檔案系統 (VMFS)」或「Oracle Cluster 檔案系統 (OCFS)」才適合。

在 Linux 的 iSCSI Initiator 是 open-iscsi,可參考「在Ubuntu中使用iSCSI Initiator連接至iSCSI Target」或「在Ubuntu 使用 iSCSI Initiator」。

2012年3月2日 星期五

Synology DS212j 初次使用

此時最重要的參考是快速安裝指南
  1. 內部至少裝上一顆硬碟。
  2. 接上網路、電源,開機。
  3. 在電腦安裝 Synology Assistant 並執行,會自動搜尋 Synology 設備。要 DS212j 開機完成,此時藍色電源燈恆亮,才能搜尋到。
  4. 透過 Synology Assistant 安裝 DSM (版本 3.2_1955) 到 DS212j,等候完成。
  5. 完成後 DS212j 會重開機,此時  SynologyAssistant 還在等候,最後會寫入設定。然後可開啟網頁 GUI 登入,可看到它正在新增「儲存空間 1」,包括檢查硬碟中及建立檔案系統,這會相當久,去做其它事吧。
  6.  「儲存空間 1」正常後,到「控制台」→「共用資料夾」新增共用資料夾後,就可以透過網路芳鄰存取。
DS212j 算是 Synology NAS 產品裡最省電的,存取中 17.6W (我放一顆 640GB 硬碟 Seagate ST3640323AS,實測是 11W),硬碟休眠中 5.5W (實測 4W)。最省電當然是把它關掉,長按電源鍵就會啟動關機程序,最後關閉電源,是很友善的設計。

DS212j 沒有 WOL,應該是處理器 88F6281 不支援。但有定時開關機功能,以每週為排程週期,時間一到會自動關機,也會自動開機喔,神奇吧。如果可以設定一次性的關開機那就更好了,例如已經事先知道停電時間,設定好就可以在停電前關機,復電後自動開機,回復所有服務。

[2012/03/09 補充] 新增一顆 1TG 硬碟 WD10EARX
[2012/03/07 補充] 2012/03/06 Synology 釋出 DSM 4.0-2197
[2012/03/07 補充] DS212j 前身 DS211j 使用韌體 3.2beta 跟 QNap TS-212 詳盡的比較:QNap TS-212 NAS vs Synology DS-211j

2012年1月20日 星期五

Ubuntu 家目錄漢文目錄名稱改為英文

2013/12/3 補充:LANG=C xdg-user-dirs-gtk-update 勾選「Don't ask me this again」,然後按「Update Names」也可以

參考太武山人:改更 Ubuntu 中文目錄名稱,但作一些簡化,並借用 4$ 的圖來說明
1.進 Terminal 先把語系設成英文
export LANG=en_US
2. 執行更新名稱程式
xdg-user-dirs-gtk-update
出現如下圖,勾選 Don't ask me this again,然後按 Update Names (不是 Keep Old Names 喔)

2012年1月12日 星期四

架個人網頁伺服器 -- 使用 ligthttpd

架設 lighttpd 放個人網頁 ( 網址:http:///~<帳號>),步驟如下:

sudo apt-get install lighttpd
sudo lighty-enable-mod userdir
sudo /etc/init.d/lighttpd force-reload
mkdir ~/public_html
vi ~/public_html/index.html

延伸閱讀
  • 台北行: 台灣黑客鬆:「lighttpd 雖然對 server 來說是 light,但是在 embedded 系統上仍屬於大噸位的程式」

2011年12月28日 星期三

flv/mp4 影片轉成 mp3 音檔

想在 mp3 隨身聽聽歌,只有找到 flvmp4 的影片,去查看其音效的編碼 (滑鼠右鍵->屬性->音效/視像) 大多是 MPEG-4 AAC audio。我用 ffmpeg 抽出聲音部份,再用 mplayer 轉成 wav 檔,再用 lame 轉成 mp3,指令如下:

ffmpeg -i xxx.flv -acodec copy xxx.aac
mplayer -vc null -vo null -ao pcm:fast -ao pcm xxx.aac -ao pcm:file=xxx.wav
lame xxx.wav

應該有較簡單的方法,例如 ffmpeg 抽出聲音時,直接轉成 mp3 儲存,但需要 ffmpeg 編譯時支援 mp3 編碼。

參考:
  1. Howto:convert aac/mp4 to wav/mp3/ogg on Linux (會彈出廣告)

2011年12月16日 星期五

第三者 Ethernet 抓封包

(修改自 Wireshark 的圖片)
要研究 router 跟某台機器之間封包,一種可能是直接在這台機器安裝 Wireshark 等抓封包分析軟體來使用,但如果那台機器不是一般電腦,可能就無法安裝軟體。這時候需要另一台電腦安裝 Wireshark、接上獨立的或內建於 router 的 Ethernet switch,但這樣封包是不會跑過來的,因為現在的 Ethernet switch (或號稱 Ethernet Hub) 都採用 bridging 處理,由目標 MAC 位址決定只會送到特定的 Ethernet switch 埠。

如此一來,就可能需要其它特別的硬體配合,例如找以前舊式的 Ethernet Hub、找支援 monitoring 或 mirroring 的高階 Ethernet switch、有兩個 Ethernet 介面的電腦、使用 Passive Ethernet TAP、使用 Passive Ethernet Hub 等。

也有純粹軟體的解法,一種方式是利用 ARP Poisoning (或稱 ARP spoofing),放 ARP 毒藥給雙方,分別告訴雙方的對方是自己的 MAC 位址,掩蓋正常的 ARP,這樣雙方之間的封包就會送到自己的 MAC 位址,自己再分別轉送來維持他們通訊暢通,自己也順便「觀察」。程式 ettercap 有支援,這是我認為最方便的方式。

使用步驟如下:
  1. 安裝 ettercap,我安裝個板本是 NG-0.73
    • sudo apt-get install ettercap-gtk
  2. 執行 ettercap
    1. 「Sniff」→「Unifed Sniffing」,選自己的網卡。 (不知為何,此步驟會將 /proc/sys/net/ipv4/ip_forward 設為 0)
    2. 「Hosts」→「Scan for hosts」。會對子網上每個 IP 發 ARP 詢問。
    3. 「Hosts」→「Hosts lists」,將雙方分別「Add to Target 1」及「Add to Target 2」。 
    4. 「Mitm」→「Arp Poisoning。此時開始假冒雙方,會先 ping 雙方,再多次 ARP 雙方,雙方間的封包就會跑過來了
  3. 啟用 IP 轉發功能,維持被觀察機器的通訊暢通。(似乎不能直接 sudo 執行,所以先變成 root 再執行)
    • sudo -i
    • echo 1 > /proc/sys/net/ipv4/ip_forward
    • exit
  4. 此時 Wireshark 可以抓到雙方間的封包,封包會看到兩份,一份是進來的,一份是轉發出去的,兩者的來源 MAC 位址跟目標 MAC 位址是不同的。
  5. 停止 Arp Poisoning
    • 在 ettercap,「Mitm」→「Stop mitm attack(s)」。
註:步驟 2. 3. 4. 可以隨意組合,例如 IP 轉發可以在後來想要啟用時才啟用,但注意 ettercap 的「Sniff」→「Unifed Sniffing」會將 /proc/sys/net/ipv4/ip_forward 設為 0。
註:ettercap 也有 Windows 版,在 http://sourceforge.net/projects/ettercap/files/unofficial%20binaries/windows/ 下載。
註:Mitm 是 man-in-the-middle。
註:由此可知,你的封包是很容易被觀察的,即使硬體都沒動到。但用 ARP Poisoning 也不是都能成功,機器的 ARP 表改用靜態的、router 紀錄並檢查每個 IP 位址的 MAC 位址等可以防止封包被導向。監聽是否有異常的 ARP 回應也可以發現。
註:還有別的軟體方式,例如 MAC Flooding,用封包把 Ethernet switch 的 MAC Table 灌爆,而將所有封包都 broadcast 處理。dsniff 等軟體有支援這種功能。

參考:
  1. Wireshark: Ethernet capture setup (說明許多抓封包方式)
  2. Ettercap MITM攻擊詳細教學 (裡面所言並不是所有步驟都需要)
2011/12/20:修正 ettercap 的「Sniff」→「Unifed Sniffing」會造成 /proc/sys/net/ipv4/ip_forward 設為 0

延伸閱讀

2011年12月14日 星期三

非 root 執行 wireshark 抓封包

wireshark 安裝完,需要用 root 身份才能執行抓網路介面的封包,現在要改成不必用 root 身份:
  1. sudo dpkg-reconfigure wireshark-common
    •  Should non-superusers be able to capture packets? 選「是」,會產生 wireshark 群組
  2. sudo vi /etc/group
    • 在 wireshark 群組加上自己
  3. 重新登入
這樣就可以用自己身份執行 wireshark 抓網路封包。

參考:
  1. /usr/share/doc/wireshark-common/README.Debian

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...