2009/03/23

穿透 NAT - 遠端桌面連線軟體 TeamViewer

前面介紹使用 PacketiX VPN 服務讓兩台電腦連成一個區網藉以穿透 NAT 來遠端桌面連線,其實這太慢了。殺雞焉用牛刀,我推薦一款本身就具備穿透防火牆及 NAT 的遠端桌面軟體:TeamViewer。此軟體是一家德國公司製作的,本身有商業授權及一般非商用授權,商業授權6個月就要US$249,而非商用授權是免費的!(當然會有些限制,但是不影響使用,後面會提到)

此軟體跟其他 VNC 軟體最大的不同是,他不是單純的點對點連線 (遙控端 - 被控端),為了要達成穿透防火牆和 NAT 環境,它採用了中介伺服器的架構。所以一開始連線時會先連到他的中央伺服器,藉由中央伺服器幫你連到對方。因為 NAT 對外連線多無問題,有問題的多是對內,故連接到中央伺服器,由它代為牽線。

可能會有人疑慮:這樣我的操作不是會被看光?官方的說法是傳輸過程採用類似 RSA 的公開金鑰加密機制,中央伺服器僅代為牽線,兩端都達成協議後即開始以 UDP 傳輸,中央伺服器不予介入,所以很安全。不管你相不相信,這個軟體如果有問題應該會被大肆撻罰,畢竟商業版收費高昂,如果對企業來說都不安全了,個人用戶當然更不敢使用。但是這個軟體已經發展到 4.0 版本了,也沒聽說過安全問題,以此推論安全性方面應該是不必擔心 - 畢竟企業會比你更擔心安全問題。


1. 下載及安裝

官方提供安裝版跟USB免安裝版,我的建議是被控端下載安裝版並安裝,可以得到最大的便利性 (可以使用 Ctrl + Alt + Delete、可開機自動啟動、在登入畫面就可以被遙控)。遙控端直接使用USB免安裝版,連線完畢直接刪除即可,不留任何垃圾。之所以建議被控端安裝是因為安裝之後可以安裝為系統服務,這樣一開機便會常駐,方便連線,而且它可以在登入畫面就接受連線。也可以接受 Ctrl + Alt + Delete 指令跟重新開機 (一般/安全模式) 動作。如果是免安裝版上面的功能都沒辦法做到。

安裝版:下載頁面 (下載 TeamViewer (full version))
免安裝版:下載頁面 (TeamViewer Portable)

安裝時請注意選取授權,不要選到 Commercial 商業授權去了。一旦選到此項只能連線五分鐘之外,還有天數的限制。除非你真的使用於商業用途,不然就乖乖選 Non-Commercial / Free 吧。

免安裝版直接解壓即可,剩下的動作不必我解釋了吧。

2. 連線



啟動 TeamViewer,就可以看到主畫面。左邊是中央伺服器發給你的一組編號跟密碼,其中編號就是用來連線之用,取代IP的用途。此編號應該是綁 MAC Address 的,所以每個電腦應該都是固定的。密碼則是連線時認證用的一組密碼,免得有心人士亂連控制。預設情況這個值是每次隨機都不同的,但是稍後可以在設定內自行指定,回來後就發現變成如圖的「Predefind」(已定義)。

只要雙方都開啟 TeamViewer,被控端告訴遙控端 ID 編號跟連線密碼,遙控端只要輸入這些資訊就能輕鬆連線到對方的電腦,完全不必多加設定,還可直接穿透防火牆 / NAT,真可說是傻人救星!

3. 設定

Extra → Option 有更多細部設定可以調整,其中不乏安全性設定。



General - Your display name: 顯示名稱,對方連線後可以看到
Startup - Password: 預先定義密碼,設定完成後密碼就不會再是隨機的,方便定時遠端連線



Security 頁籤的設定可以讓你限定接受連線的對象,「Configure black- or whitelist」可以設定黑/白名單,阻擋所有人,除了特定ID的連線,這樣安全性就能大大提升。



Advanced 頁籤則能設定更多進階項目:

General - Temporarity save connection passwords... :
僅暫時記憶密碼。如果此項沒有勾選,下次重開程式連線時會發現密碼會記住,這很不安全

Network - LAN connections only:
不連接到中央伺服器,等於一般的VNC,只能靠IP互相連線,再也沒有穿透功能

DirectIn - Enable DirectIn Performance optimization:
打開監聽 Port 以加速。開啟一段時間可以發現會有大量 TCP 連線連入,研判這是一種每個人都能當中央伺服器的一種 P2P 機制,當然你也會連到別人的電腦 (我就有連到 SEEDNET, 亞太電訊, HiNet 過,這不可能是官方中央伺服器吧?)。開不開見仁見智,但我不喜歡別人連我電腦,所以關掉之外還加了防火牆規則通通擋掉,連線依然正常。


VNC 操作沒什麼好解釋的,玩了就會。值得一提的是 TeamViewer 支援「控制權交換」的動作,也就是角色互換,使用遙控的一瞬間變成被控的,這還滿有趣的。就遠端遙控功能來說,我甚至覺得 TeamViewer 比 UltraVNC 還要快速好用,當然後者是自由軟體且設定眾多 (加上有專屬加速 Video Driver) 仍是 TeamViewer 比不上的。如果還要加上 TeamViewer 的穿牆能力跟超傻瓜操作的話,TeamViewer 一定穩贏的嘛!

前面有提到免費版存在一個限制,那就是類似廣告的視窗 (Sponsored session):



這個視窗在使用一段時間後會出現,可能是遙控端出現、可能是被控端出現,或兩邊都同時出現。反正就是要你知道非商業授權不要用於商業行為這樣,順便打個廣告。基本上不影響使用,也不會像舊版一樣偵測到你是商業使用強迫斷你線的情況,仍可繼續使用。看在 TeamViewer 方便又免費的代價,偶爾出現幾次倒是無妨啦。

穿透 NAT - 使用 PacketiX VPN 服務

畢業專題總算有個大概的方向了。之前有稍微提過我們打算作跟 RFID 或 Sensor Network 有關的系統,但是卻一直沒有頭緒,整個組就這樣當在那邊快一個月。好在有一位組員提出了他的構想,而指導教授也認為這個點子滿有趣的,這樣子總算有個底了。

也在最近完成了研究室的交接,我接收了一台 Pentium 4 2.8GHz 的老電腦,顯卡還是內建的,不過我 A 了一台 24 吋螢幕 (ViewSonic Q241wb),大雖大,可是一來顯卡只支援最大 1600x1200 解析度,二來這螢幕有很多亮點...Hmm...系上大概是看便宜才買的吧。接收後第一件事馬上先砍掉重練,不用說上一個人的系統一定被搞的亂七八糟。重灌過程也滿順利的,馬上就灌好了 Windows XP Professional SP3。因為我以後要常常學校家裡兩邊跑,所以想來搞個遠端連線,無奈經過測試,實驗室對外只有兩個 IP,而內部有六台電腦插上 Switch Hub 來達成共用,每一台電腦都沒有分配到 Public IP,簡單說是屬於 NAT 的網路環境。沒有Public IP就沒有辦法連到指定的電腦了,Port forwarding 我也沒有權限碰到機器去做調整,只好尋求解決方案。經過一番搜尋,我找到了最佳解:ASP 型 PacketiX VPN 服務

PacketiX VPN,前身是幾年前很有名的 SoftEther 軟體,在免費版停止公開後推出了 2.0 版本並改名叫做 PacketiX。VPN 即是虛擬個人網路,可以藉由虛擬網卡和虛擬 Hub 把兩台異地電腦給連結在一起,組合成一個新的區域網路。架設 PacketiX VPN 的軟體是要收費的,但是 PacketiX 同時也提供了免費的 PacketiX.NET ASP (Application Service Provider,應用服務提供者) 型 VPN 服務供申請,讓你可以直接使用公開伺服器來產生虛擬 Hub,不必花費購買軟體自行架設。你只需要下載免費的 Client 端來產生虛擬網卡來接上這個虛擬 Hub,就能建構出一個虛擬LAN,聽起來很簡單吧。


(官網提供的介紹圖,跟你實際上建一個區域網路一樣,差別在於 VPN 全部都是虛擬的東西)



1. 申請帳號建立虛擬 Hub

連到 http://www.packetix.net/jp/vpn/ 頁面,點選「仮想 HUB の新規作成」就可以依照網頁指示申請一個虛擬 Hub 來管理,日後也可以點選「仮想 HUB 管理ログイン」來進行登入管理。

2. 登入建立連線使用者

建立好虛擬 Hub 後,就如同你新購買了一組 Hub 一樣,接下來的動作便是控管,不能讓隨便的人都能進入你的網路,所以藉由帳號密碼來管理。登入後可以看到各項管理功能。



其中我們先要點選「ユーザーの管理」(使用者管理)來新增可以使用此 VPN 的使用者。



要填的資料從上至下分別是使用者帳號、本名、說明跟所屬群組、使用者有效期限,其中只有第一個是最重要的,其他可以不必填。



密碼設定的話,直接使用「標準パスワード認証」(標準密碼認證)即可,下方連續輸入兩次密碼確認後,便可以點選「OK」建立新使用者。這個步驟依需求重複數遍,直到每個要加入 VPN 的電腦都有一個帳號。

3. 設定虛擬 DHCP 伺服器

點選左邊的「仮想 DHCP サーバー機能設定」(虛擬 DHCP 伺服器功能設定)進行調整,把 DCHP 打開,這是為了讓每個登入的電腦都能分配到一個虛擬 IP。



基本上勾選「仮想 DHCP サーバー機能を使用する」(使用虛擬 DHCP 伺服器功能),下面的設定保持如圖中的預設值便可,這樣日後登入的電腦便會獲得 192.168.30.10 等的 Private IP,這些在 VPN 的電腦要相互通信便可以直接使用這個 IP 來聯絡,無形中將數台在不同地方的電腦給串起來了。

4. 安裝 PacketiX VPN Client 軟體

這裡有兩個方法,一個是透過 IE ActiveX 控制項自動設定並安裝,一個是手動下載軟體安裝。我推薦手動安裝,但是前者卻可以自動設定,更為傻瓜。請點選管理畫面左邊選項「VPN クライアントソフトウェアのインストールと設定」(VPN Client Software 安裝與設定),就會有兩種方法讓您選擇,並列出手動設定項目跟設定檔案。

第一種方法 (ActiveX):畫面中有個文字輸入框,裡面的網址就是 ActiveX 自動設定的網址,只要使用 IE 瀏覽器連入,若您有系統管理員權限,便能全自動下載安裝設定,根據指示完成即可。

第二種方法 (手動):請到下載頁面: https://www.softether.com/jp/download/ 找尋「PacketiX VPN Client 2.0」,依照你的作業系統版本來下載,通常都是「Windows 32 bit (x86) インストーラ」(Win32 安裝程式) 吧。

下載下來的程式可能需要切換日本語系、刪除 AppLocale 以完成安裝程序,但我在另一台全新安裝完成的電腦上卻什麼事也不必做就安裝完成了。如果安裝過程失敗,請考慮刪 AppLocale 並轉日區再嘗試。轉日區只有安裝時需要,安裝完成後正式使用是不需要轉語系的

安裝完成後請回到「VPN クライアントソフトウェアのインストールと設定」頁面下方,下載設定檔案,這樣便可以點兩下來執行設定程序,方便快速。



只要按下是便可以匯入設定,免除手動設定的繁複。

5. 設定登入 VPN 使用者



打開「PacketiX VPN クライアント接続マネージャ」(我想桌面上、程式集,甚至是右下方工作列都可以找到吧),你可以看到已經加入了我們之前新增的虛擬 Hub 連線資料,對著項目按右鍵,選擇プロパティ(屬性)來設定登入使用者:



右邊的「ユーザー認証」填寫之前登入的使用者帳號跟密碼,每台電腦各使用不同的使用者,這樣才能分別,按下OK儲存設定。

回到程式主畫面,如果你的下方並沒有出現如圖中的仮想 LAN カード(虛擬網卡)而是空無一物,可以在下方框格按右鍵選擇「新規仮想 LAN カードの作成」(產生新虛擬網卡),當然這是需要系統管理者權限的,按螢幕指示完成新增動作。

6. 連到 VPN 的虛擬 Hub

終於到最後的步驟,想互相連接的每一台電腦應該都完成安裝 VPN Client跟設定,只要對著程式上框格的接續設定點兩下,便可以連線到 PacketiX 提供的伺服器去。如果想要開機後就自動連線到 VPN,同樣在接續設定上按滑鼠右鍵,選擇「スタートアップ接続に設定」(設定啟動時連接),日後開機登入後便會自動連接。每一台電腦都依照上面的指示,便可以完成 VPN 的架構。

連線完成後,右下工作列應該會出現一個新的網路連線,提示你已經連上,可以查看分發的 IP 位置。你可以試看看ping 192.168.30.10 或是瀏覽網路上的芳鄰 (\\192.168.30.10),如果防火牆、系統權限等設定正確,應該會有所反應。更快確認的方法是到虛擬Hub管理頁面的「VPN セッション管理」(VPN Session 管理)查看已連接電腦,下方「IP アドレステーブル」(IP Address Table) 更能直接看出每台電腦分配到的 Private IP。




經過 PacketiX VPN 牽線後,我終於得到一個區網 IP 192.168.30.11,這就是我實驗室那台電腦在 VPN 代表的位置,要遠端連線,打 192.168.30.11 能正常連線;要共享檔案,\\192.168.30.11 能正常存取 (還能共用印表機,換句話說執行列印後我實驗室的印表機會動起來,不知道裡面的人會不會嚇死XD) 實驗幾天後,發現服務穩定且速度可接受,加上又是免費的 (Server 版授權金額很高,加上還要自己架,免費的 ASP 不用可惜),就這樣繼續用下去了。