2007/12/30

sshfs

sshfs (SSH Filesystem) 這個使用方式更妙。可以透過 ssh 的方式掛載特定的目錄。比如說研究室有個伺服器專門放些分享檔案。原本是用 Samba 的方式,當然只要有開 ssh 就可以使用 sshfs,比起 Samba 更方便。安裝 sshfs 後,執行以下指令:

sshfs -omodules=iconv,from_code=CP950 yurenju@140.130.120.111:/samba/ samba/


馬上就可以掛載原本 samba 的目錄,並且透過 CP950 的編碼轉換成 UTF-8。而我們研究室的 檔案伺服器原本只開放給內網使用,不過只要配和 SSH VPN 加上 sshfs,不論到哪個地方,都可以輕易的存取檔案伺服器的資源啦!

SSH VPN

這幾天都在研究 SSH (Secure Shell) 神奇的妙用。其中一個就是 ssh 在 4.3 以後已經內建支援 VPN (Virtual Private Network),只要配合多數 Linux 都支援的 iptables 就可以使用了。我幹嘛用 SSH VPN 勒?如果有筆記型電腦的人一定常在外面無線上網,但是沒有加密的無線網路可是很危險的阿,想像一下每個有無線網路的咖啡館都有個佈告欄,上面公告著每個人使用無線網路的帳號密碼,包括網站、BBS、電子郵件的。而使用 SSH VPN 可以將自己的訊息先用 SSH 加密後,再透過遠端的伺服器傳送,雖然這樣會拖慢速度,不過使用起來還是安心點囉。

注意,以下都必須使用 root 權限。

以下面這個例子來說,我在研究室有台 SSH Server S (假設 IP 是 140.130.120.110),而我的筆記型電腦 Laptop C (IP 不固定)。首先要有 tun 這個 Tunnel 驅動程式。請在 S, C 中都下這個指令:
modprobe tun
接下來所有的動作都在筆記型電腦 C 上執行。如果要開機的時候自動載入驅動程式,請將 tun 加入 /etc/modules 裏面。接下來要使用 SSH VPN 要有以下資訊是在每個咖啡館都不一樣的:
  1. 你所處無線網路的網路與網路遮罩 (Network/netmask) - $NETWORK
  2. 你所處無線網路的閘道器 (Gateway) - $GW
現在我們要用 ssh 開啟兩端 tun0 介面的 VPN 網路:
ssh -w 0:0 -f 140.130.120.110 "ifconfig tun0 10.0.2.1 netmask 255.255.255.252 pointopoint 10.0.2.2 ;echo 1 > /proc/sys/net/ipv4/ip_forward ;/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ;route add -net $NETWORK gw 10.0.2.2 dev tun0"
下面介紹一下參數

-w 0:0
開啟 tunnel,第一個是本機 C 的 tun 編號,第二個是伺服器 S 的 tun 編號。如果改成 1:2 就代表 C 用的 VPN 介面是 tun1,S 用的 VPN 介面是 tun2。

-f "command"
登入 ssh 以後在遠端主機 S 要執行的命令。

ifconfig tun0 10.0.2.1 netmask 255.255.255.252 pointopoint 10.0.2.2
設定伺服器 S tun0 介面的 IP 位址、網路遮罩以及點對點另一端 C 的 IP 位址

echo 1 > /proc/sys/net/ipv4/ip_forward
開啟 IP 轉送的功能

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
設定 NAT。注意這只是簡單的設定,為了安全起見請 K 一下網路上的 iptables 資料,很充足。

route add -net $NETWORK gw 10.0.2.2 dev tun0
加入路由資訊,只要傳送給 C 所處網路的資訊都由 tun0 介面的 10.0.2.2 去傳送

上面那個指令就可以把伺服器 S 設定完成,接下來要設定筆記型電腦 C。請執行以下指令:
ifconfig tun0 10.0.2.2 netmask 255.255.255.252 pointopoint 10.0.2.1
(設定 C 的 tun0 介面)

route add -net 140.130.120.0/24 gw 10.0.2.1 dev tun0
(加入路由資訊)

route add 140.130.120.110 gw $GW
(這蠻重要的,傳送給 140.130.120.110 的封包經由 $GW 傳送)

route add default gw 10.0.2.1 tun0
(將預設 gateway 改成 tun0 的 10.0.2.1)

route del default gw $GW
(刪除原本的 gateway)
這樣就可以傳送了。你可以上 My IP 來確定一下自己的 IP。

2007/12/29

ssh vpn 之一發不可收拾

今天在咖啡館心血來潮,想把 ssh vpn tunnel 搞定,無奈不得要領常常搞到 ssh 斷線。後來回到研究室後,終於是把 SSH VPN 搞定了。心滿意足的感到自己在無線網路中終於不受監控,想說來寫的簡單的 VPN GUI 好了。沒事幹嘛把 SSH VPN 搞得這麼複雜…。

那怎麼拿 interface list 勒?回想一下 GNOME 有哪些地方拿到網路列表…想起了無線網路偵測的 nm-applet。後來想說應該看 network-admin,接著發現這是 gnome-system-tools 的工具,再追下去,原來是 call liboobs 這個函式庫。

追到這裡,一天就過了…,浪費了一天都沒幹到正經事,!*&#^*&@!^%$…。

2007/12/23

KaLUG Eee PC 簡報

這次人真的來超多的,沒想到換到風尚咖啡館包廂還是爆滿了。這次認識的人頗多,而且又見識到曼特寧老師帶來的新玩具 AW-300,還蠻值回票價的。

這次簡報在

2007/12/16

lifelog

很有趣的概念,先記錄起來 :-)

火車時刻表與 lifelog

Google Profile

這幾天 Google Reader 新增閱讀好友分享內容後,有另外一個小服務也浮現出來:Google Profile。看起來他是可以用在任何 Google 的服務上,用來呈獻自己的一些基本資料用的。看起來沒什麼,不過要用在跨越很多服務的時候還是有點小小的用處啦。

不過要注意的一點就是上面的內容全部都是公開的就是了,可別忘了。