轉自:https://www.cnblogs.com/nkqlhqc/p/7805837.html
PS:接下來可能要提到一些有關域名解析原理和網絡隧道方面的知識,限於篇幅,我就簡單說兩句,想要深入了解的朋友可以參考以下內容:
DNS原理及其解析過程【精彩剖析】: http://369369.blog.51cto.com/319630/812889/
隧道技術:https://baike.baidu.com/item/%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF/10774268
既然UDP53端口的數據包可以通過網關,那么我們可以在本地運行一個程序將其它端口的數據包偽裝組成UDP53端口的數據包,然后發送到本地域名服務器,那么網關就不會進行攔截了,數據包就順利的通過了網關,可是發送出去的數據報如何返回呢?這就需要我們做進一步的設置。
NO.1:
在本地計算機上安裝dns2tcp這個軟件,<它的作用是對數據包進行偽裝與還原>
附Windows版下載地址:https://pan.baidu.com/s/1nvDWk9j 提取碼:pgxk
NO.2:
申請一個VPS,國內VPS服務商眾多,什么阿里雲啦,騰訊雲啦,百度雲啦。在這里我給大家推薦由世紀互聯運營的微軟Azure雲服務器,1元體驗一個月,申請與部署方式很簡單,而且服務器配置與帶寬很高,可惜的是就能使用一個月,其實學服務器開發的大學朋友們也可以申請一個練練手,畢竟這是一次難得的實踐機會嘛!
附微軟Azure雲服務器申請地址:https://www.azure.cn/pricing/1rmb-trial-full/
有關申請與部署服務器的細節,我就不再贅述了,按照流程走就行。有不懂的地方可以參看微軟給的文檔和視頻教程。
下面這個操作尤為重要,部署成功服務器后,務必參照微軟的文檔為服務器添加入站與出站規則,也就是哪些類型的數據包可以進出你的服務器,那些類型的數據包會被防火牆攔截,這個步驟決定着偽裝的數據包是否能夠進入到我們的VBS
將TCP80,TCP443,UDP53端口的數據設置為允許入站與出站,如下圖所示:
申請成功后,微軟會給你一個公網IP,這個公網IP一定要牢記,接下來需要用到,現在假定你得到的公網IP為140.205.32.13
NO.3:
申請一個域名,推薦到阿里雲申請,因為便宜,我申請的.top國際頂級域名第一年才1塊錢。
附申請地址:https://wanwang.aliyun.com/domain/yumingheji
申請過程請嚴格按照人家的流程,不過要提醒一點的是務必要用真實信息,否則人家會封掉你的域名。
現在假定你申請到了一個域名,假如你申請到的域名為aliyun.top,你需要進入阿里雲的域名控制台,為其添加兩條記錄。
第一條為NS記錄,記錄名稱隨便,記錄值也隨便,但是記錄值要牢記,以后用的到。
假設你添加的NS記錄名稱為dnsalibaba.top,記錄值為dnsaliyun.top。
再為申請到的域名添加一個A記錄,A記錄的記錄名稱是NS記錄的記錄值,A記錄的記錄值是你所申請到的VPS的公網IP,如下圖:
當本地域名服務器無法解析我們偽裝的數據包后,便將數據包發送給NS記錄指定的服務器dnsaliyun.top,而dnsaliyun.top的IP地址已經在A記錄中給出了,所以剛才原理沒看懂的朋友朋友們現在應該知道為什么本地域名服務器會將數據包發送到我們的VPS中了吧
等一會彈出一個輸入用戶名的窗口,輸入你部署服務器時設置的用戶名,輸入完成后點擊記住用戶名,點擊確定。在彈出的新窗口中輸入你部署服務器時設置的密碼,輸入完成后點擊確定,不出意外,你將會連接到你的VBS,如下圖:
接下來在Xshell中輸入sudo apt-get install dns2tcp,敲回車,這條命令用來安裝dns2tcp這個軟件,很快就會安裝完畢
PS:沒用過Linux的用戶可能看不懂這些Linux命令,但是不懂沒關系,跟着我做就行了。
接下來配置dns2tcp
再次敲入命令:sudo vim /etc/dns2tcpd.conf ,用vim編輯器將其中的內容替換為一下內容(vim編輯器的使用教程網上有):
#這里寫你的雲服務器的內網IP,一般為10.0.0.4
#這里寫你設置的NS記錄值
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2 #啟動dns2tcp
當出現上圖顯示的內容時,說明dns2tcp啟動成功了,此時按下Ctrl + a+d鍵,讓dns2tcp進程后台執行,再關閉與服務器的連接就行了
windows客戶端配置:
打開CMD,鍵入並執行如下命令 : dns2tcpc -r ssh -z dnsaliyun.top 140.205.32.13 -l 8888 -d 2
當出現上圖顯示的內容時,代表會話已經建立了,此時最小化這個窗口【記住千萬不要關閉它!!!】
***注:
-r 后接服務名稱<ssh/socks/http中的任意一個>
-z 后接你設置的NS記錄,和你的VPS公網ip
-l 后接本地端口,隨便一個常用端口就行
-d 開啟 Debug
現在假設你完全按照我給出的流程走的
離成功只有一步之遙了,下面用Xshell轉換Socks4/5通用代理:
在xshell中仿照上面新建會話:IP地址為127.0.0.1,端口為8888 ;然后點擊隧道,類型選擇socks4/5,端口填1080,輸入完成后點擊確定,若不出意外,此時CMD中會出現大量信息,這些信息代表通過dns2tcp的數據包,這就表明你的電腦已經在和服務器傳輸數據了。而xshell中又會提示你登錄到你的服務器,仿照上文輸入用戶名和密碼(最好選擇記住用戶名和密碼,這樣下次就不用那么麻煩了),點擊確定並成功登錄到你的服務器后,最小化xshell【記住,此時千萬不要關閉xshell!!!】
打開Internet選項,依次選擇"連接"->"局域網設置"->"為LAN使用代理服務器"->"高級"
在socks/套接字輸入框中,要使用的代理服務器地址填127.0.0.1,端口填1080,然后點擊確定。
到此,大功告成,打開你的瀏覽器試試吧!!!
附錄:
screen命令的使用:
screen命令用來創建后台進程,進程運行時,便於我們能繼續做其它工作
創建screen會話 screen -S dns2tcpd
啟動dns2tcp sudo dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
暫時離開快捷鍵 Ctrl + a + d
恢復screen會話 screen -r dns2tcpd
列出當前的會話列表 screen -ls
強行終止dns2tcp進程 screen -S dns2tcpd -X quit
常見DNS記錄的含義:
A記錄 : 用來指定主機名或域名對應的IP地址記錄,通俗來說A記錄就是服務器的IP,域名綁定A記錄就是告訴DNS,當你輸入域名的時候給你引導向設置在DNS的A記錄所對應的服務器。
NS記錄 : 域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析,簡單的說,NS記錄是指定由哪個DNS服務器解析你的域名。
MX記錄 : 郵件交換記錄,它指向一個郵件服務器,用於電子郵件系統發郵件時根據收信人的地址后綴來定位郵件服務器。
CNAME記錄 : 別名記錄,允許您將多個名字映射到同一台計算機。通常用於同時提供WWW和MAIL服務的計算機。