2012年10月12日 星期五

透過「Vigor 2200E-plus」也能「Wake on WAN」

前文“使用 WoL,將「遠端電腦」開機”提及 WoL 的相關設定,並利用 wol 這個程式,將另一台電腦喚醒的方法。但若是要跨 Internet 將「遠端電腦」喚醒,必須符合幾個條件
  • 「遠端電腦」有「實體 IP」,也就是「喚醒封包」可以直接送達。
  • 若「遠端電腦」在「IP 分享器」之內側,必須「IP 分享器」具有 WoL 功能。
  • 途中的 Internet 上,沒有網路設備會『過濾』掉「喚醒封包」。
不幸地,當我想由「遠端電腦」喚醒家中位在 DrayTek Vigor 2200E-plus 之內的電腦時,上述條件的第一、二項並不符合,又不想再花錢買新的「IP 分享器」。幾經嘗試、實驗,終於補上它『失落的環節』,找出『安全的』辦法了,在此分享一下:

一、開放「允許從網路管理」的權限

用瀏覽器登入 Vigor 2200E-plus 的管理介面。從「主選單」→「系統管理」→「管理設定」→「管理存取控制」將「允許從網路管理」這項功能啟用。本文所述的方法才可使用,這有些風險,可以藉由修改「存取清單」中的「IP 網址」及「管理通訊埠設定」的「使用者定義通訊埠」的「Telnet 通訊埠」,以增加安全性。
上圖中,『111.222.33.44』及『100』是因安全考量而做的修改。

二、使用「Vigor 2200E+」之「Wake on WAN」步驟

這個方法的設定步驟,主要有兩個:「NAT 通訊埠重導向」和「設定 ARP 快取表」。第一個步驟可以事先設定,但是第二個步驟要在每次使用 WoW (Wake on WAN) 前做設定。
    雖然,每次使用前都要設定是有些麻煩,但是反而得到『安全』的好處。個人的經驗,這個需求的次數,應該不會太多;所以,這個小小不便還是可以接受。

A.設定「NAT 通訊埠重導向」

要將從外部送來的「喚醒封包」轉送到「IP 分享器」內部的電腦,要設定「NAT 通訊埠重導向」。Linux 中的 wol 這個程式送出的「喚醒封包」使用 UDP:40000 埠,
上例中,內部電腦的 IP 網址為『192.168.10.99』,按【OK】後,「Vigor 2200E-plus」就會將從外部收到「喚醒封包」轉送到這個內部的 IP 網址。如果想用 telnet 的文字介面下命令,請先參考 “建立與 Vigor 2200E-plus 的「文字介面」連線”,在登入後下這個命令
  . . . . . .
> srv nat portmap add 1 Wake_on_WAN 17 40000 192.168.10.99 40000
>
實際上,這個 IP 網址並沒有對應到任何「內部電腦」,只是為了下一步驟所用。
注意:通常將「遠端電腦」開機後,是要連線過去做些事。如要以 SSH 連線過去,就要將對應的 TCP 埠,也一併設定。

B.設定「ARP 快取表」

上一步驟只設定了將外部接收到的「喚醒封包」轉送到內部 IP 網址的對應,但是 Vigor 2200E-plus 的並不提供 Wake on WAN 的功能。因此,其轉送機制的實際過程為:
  1. 查詢 Vigor 2200E-plus 本身的「ARP 快取表」:因為此快取表更新頻繁,經一段時間未有相同「IP-MAC 對應」的封包傳送,便會刪除該「IP-MAC 對應」,所以查詢失敗。
  2. 送出轉送之『內部 IP 網址』所對應之「網卡位址,MAC」的「查詢封包」:因電腦尚未開機時,不會回應正確之「網卡位址」。依 RFC 所載,此時路由器會回應,即「IP 分享器」。所以,轉送之「喚醒封包」中的「網卡位址」為「IP 分享器」。
  3. Vigor 2200E-plus 將「喚醒封包」的「MAC 位址」以「IP 分享器」的取代後送入內網:因為此「喚醒封包」有指定「MAC 位址」,不同「MAC 位址」的電腦會忽略該「喚醒封包」。導致「遠端喚醒」功能不能正確運作。
註:Vigor 2200E-plus 在這個過程中的角色,就是「IP 分享器」。
解決辦法:在 Vigor 2200E-plus 的「ARP 快取表」中,加入特定的「IP 網址」與「網卡位址」的對應。則,轉送之「喚醒封包」經查詢本身的「ARP 快取表」後,會立即送出「IP 分享器」,不會經過查詢程序。
還記得上一步驟中,所設定「NAT 通訊埠重導向」的內部 IP 網址嗎?這個『192.168.10.99』內部網址,目的並不是為了『轉送』而是『廣播』用。因為,WoL 的「喚醒封包」主要是在網路的第二層作用,在這層中 IP 網址是無作用的。而在第二層的「廣播封包」是靠保留給廣播用的「MAC 位址」,即 FF-FF-FF-FF-FF-FF。
    以 telnet 建立與 Vigor 2200E-plus 的「文字介面」連線,在登入後下這個命令
  . . . . . .
> ip arp status
ip arp status
[ARP Table]
 Index IP Address         MAC Address
   1   192.168.10.10      00-09-73-51-BF-28

> ip arp add 192.168.10.99 ff-ff-ff-ff-ff-ff LAN

> ip arp status
ip arp status
[ARP Table]
 Index IP Address         MAC Address
   1   192.168.10.10      00-09-73-51-BF-28
   2   192.168.10.99      FF-FF-FF-FF-FF-FF
>
上例中,『ip arp status』是查詢「ARP 快取表」的內容。而『ip arp add ...』才是加入「IP 網址」與「網卡位址」對應的命令。

注意:「ARP 快取表」的內容有時效性,過一段時間(約一分鐘)未送出「喚醒封包」將會被更新(或刪除)。就要再下一次『ip arp add ...』命令。

C.送出 WoL 「喚醒封包」

參考前文“使用 WoL,將「遠端電腦」開機”,但「IP 網址」改為「Vigor 2200E-plus」的外部「IP 網址」。

已測試版本:

  • Vigor 2200E-plus
  • Fedora: 14, 17

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)