2014年1月27日 星期一

How to implement DNS Tunneling

因為學校作業的緣故,接觸了 DNS Tunneling ,也稍微研究了一下。下圖是 DNS Tunneling的原理圖,主要是當 Client 無權使用 Wi-Fi 時,一種可執行的解決方法。

DNS Tunneling 原理圖

我們都知道,Wi-Fi 的驗證方法有很多種:
  • WEP
  • WPA
  • WPA2
  • MAC ACL
  • Web Redirection
然,今天聚焦在Web Redirection上,顧名思義Web Redirection是已經連上網路(Internet)了,只是無權去訪問其他的主機,只能夠對驗證主機做請求(request),而 DNS Tunneling 提供了一個繞道而行的方法。以下將介紹:
  1. DNS Nameserver setting
  2. VPS iodine server setting
  3. Clinet iodine setting

DNS Nameserver setting

這個部分我採用FreeDNS,如原理圖所說,繞道而行的方法就是,去對Nameserver做請求,然後Nameserver會回傳快取(cache),但如果Nameserver中沒有該快取(cache),做為 iodine server 的 VPS 就會向網路(Internet)進行請求,在回傳給你。
DNS Nameserver setting

設定方法很簡單,如上圖所示,
Domain_name A server_ip
tunneling-usage_domain_name  NS domain_name
這樣就能完成 DNS Nameserver 的設定,但通常要等服務商對應完成,需要一些時間。

VPS iodine server setting

第二個就是要用來繞道的VPS,就想成用這台主機的網路去瀏覽網頁。我的 VPS 是採用 Ubuntu OS,所以只要 apt-get 就能安裝 iodine 了。

安裝完後,編輯 /etc/deault/iodine:
START_IODINED="true"
IODINED_ARGS="10.0.0.1 tunneling-usage_domain_name"
IODINED_PASSWORD="password here"
VPS iodine server setting

這種配置是讓 VPS 一開機就自動啟用 iodine ,類似 windows 的「啟動」,所以編輯完後需要 reboot ,另外記得 VPS 要開啟 ssh 的功能!

Server端設定好後,可以到他們內建的檢查網站作檢查,well done 表示成功喔!

Client iodine setting

這個步驟相當簡單,我的作業系統是用window,需要下載 iodine 、 OpenVPN 以及 PuTTY,都下載/安裝完後即可開始。

首先到 iodine 的目錄下,打下指令:
iodine -f -P password server_ip tunneling-usage_domain_name
完成後應該會如下圖所示:
Client iodine setting

最後, iodine 這邊都設定完成了,現在要來 ssh tunneling ,方能完成整個步驟。開啟剛剛下載的 PuTTY,到左側 Connection/SSH/Tunnels 新增
source port : 9999
Dynamic
Auto
的通道,如下圖:
Client iodine setting 2

新增完後到回到 Session,Host Name 那裡打上 10.0.0.1,連上 ssh,並且登入你的VPS。瀏覽器部分我是使用 Firefox。
SOCKS 主機 : 127.0.0.1
Port: 999
SOCKS v5
如此一來就大功告成啦!
雖然可以使用,但速度會相對慢許多,因為他要進行很多的 request 以及很多的 response。

沒有留言:

張貼留言