我是怎么莫名地劫持了自己的 DHCP 的
Docker 技術(shù)鼻祖系列
1. DNS 搶答
我們都知道,傳統(tǒng)的 DNS 走的是 UDP 協(xié)議,在大陸的網(wǎng)絡(luò)環(huán)境下,DNS 請求是可以被搶答的,不信你看:
# 美西的機器
root@pf:~# dig www.bennythink.com +short
104.27.167.30
104.27.166.30
# 大陸的機器
? ~ dig www.bennythink.com +short
67.15.129.210
天知道國內(nèi)這個這是個什么 IP!
DNS 搶答有不少優(yōu)點,比如:
-
對于國內(nèi)用戶而言,DNS 請求不再需要一層層遞歸到原始 NS 服務(wù)器了 -
整個大陸有超多 POP 為對應(yīng)的請求響應(yīng),縮小了延遲 -
減少了 NS 服務(wù)器的壓力和請求次數(shù)
唯一的問題就是:
-
它解析出來的 IP 是不能用的
2. DHCP
對于 DHCP 的簡要原理,在之前的博文(我們的 IP 是怎么來的——從本地路由 DHCP 到 IANA 的 “公網(wǎng)” IP 分配[1])中我們知道,和 DNS 類似,它也是一個走 UDP 的,隨緣返回的一個協(xié)議,但是和 DNS 不同,大部分的 DHCP 請求都是在一些內(nèi)網(wǎng)中,由于路由器廣播域的限制,DHCP 請求一般不會被漏到公網(wǎng)中。
DHCP Error
前段時間在配置一個網(wǎng)絡(luò)的時候,插上自己電腦的網(wǎng)線發(fā)現(xiàn) IP 不再是熟悉的 192.168.1.xxx ,而變成了 10.19.89.xxx,“但是依然可以正常上網(wǎng)”。
這個時候第一反應(yīng)是訪問一下之前的網(wǎng)關(guān) 192.168.1.1,發(fā)現(xiàn)能 ping 通,也可以正常地訪問到對應(yīng)的配置頁面。
這個時候問題就非常奇怪了,除了在寢室內(nèi)有配置過這個段以外,應(yīng)該不會在什么地方配置這么個段吧…
思前想后終于想到了在某個圖形化的界面上配置過這么個 IP 段:
然后突然想到了角落的一臺 NUC,那還是幾天之間為了保證國內(nèi)其他地區(qū)用戶可以通過它連接到國內(nèi)大內(nèi)網(wǎng)中而隨意開的一個 SoftEther VPN Server,最初嘗試失敗之后就被擱置了,沒想到它的 SecureNAT 功能在本地內(nèi)網(wǎng)內(nèi)成為了一個 DHCP 服務(wù)器繼續(xù)發(fā)光發(fā)熱。
DHCP Packet
在大概確認了來源之后,就開始打開 Wireshark 開始抓包了,很快就可以看到又如下的包:
從上面的包中我們可以看到,我的電腦先是對外發(fā)了一個 DHCP Discovery 的廣播包,然后有兩個 DHCP 服務(wù)器給我們客戶端發(fā)了 Offer ,分別是 192.168.1.1 和 10.19.89.1,且后者先給的 Offer,于是我們的客戶端接受了這個 10.19.89.1 的 Offer。
由于沒有配置 IP 地址、網(wǎng)關(guān)、DNS 等,在網(wǎng)絡(luò)上是寸步難行的,因此首先需要從 DHCP 那獲得這些。然而,既然連 IP 地址都沒有,那又是如何通信的?顯然,只能發(fā)到廣播地址(255.255.255.255)上,而自己則暫時使用無效的 IP 地址(0.0.0.0)。(事實上,鏈路層的通信只要有 MAC 地址就行,IP 地址已屬于網(wǎng)絡(luò)層了,但 DHCP 由于某些特殊需要使用的是 UDP 協(xié)議)
因為是發(fā)往廣播,內(nèi)網(wǎng)環(huán)境里的所有用戶都能聽到。如果存在多個 DHCP 服務(wù)器,則分別予以回復;用戶則選擇最先收到的。由于規(guī)則是如此簡單,以至于用戶沒有選擇的余地。
來源:https://www.jianshu.com/p/aed707f183c5
所以之前的問題也就非常明顯了,由于自己的配置失誤,被內(nèi)網(wǎng)另一個 DHCP 服務(wù)器搶答了 DHCP 請求(連網(wǎng)關(guān)都搶過去了),所有的流量都走了那臺 NUC,然后那臺 NUC 再向上轉(zhuǎn)發(fā)了對應(yīng)的流量。
這個時候另一個問題出現(xiàn)了,為什么同在
192.168.1.0/24網(wǎng)段下的 NUC 可以更快地發(fā)出 DHCP Offer 呢?
所以在一個內(nèi)網(wǎng)下,如果想要劫持原有用戶流量我們可以走 ARP 欺騙的路子,如果希望劫持新用戶的流量,還可以考慮一下 DHCP 搶答的方式(當然,成功率隨緣),這個時候回頭來看一下在學校里面非常常用的 EtterCap 的 DHCP Spoof 功能…
感慨萬千…
參考資料
我們的 IP 是怎么來的——從本地路由 DHCP 到 IANA 的 “公網(wǎng)” IP 分配: https://nova.moe/how-the-ips-are-assigned/
原文鏈接:https://nova.moe/multiple-dhcp-answer/


你可能還喜歡
點擊下方圖片即可閱讀

云原生是一種信仰 ?

掃碼關(guān)注公眾號
后臺回復?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!

點擊 "閱讀原文" 獲取更好的閱讀體驗!
??給個「在看」,是對我最大的支持??


