摘要:由于出于簡單可維護的目的,這個容器的基礎鏡像里面沒有帶上任何和網絡抓包相關的功能。這就為網絡抓包提供了基礎。抓包實踐我們現在用一個提供簡單服務的鏡像來進行測試。
背景
假設存在一個容器,提供的服務是 HTTP 或者 RPC 的服務。由于出于簡單可維護的目的,這個容器的基礎鏡像里面沒有帶上任何和網絡抓包相關的功能。那么如何能搞對這樣的容器進行抓包,以分析業務上面可能存在的問題呢?
共享網絡Docker 的容器之間可以通過共享網絡空間的方式,來讓多個容器實現網絡互通。這個意思直接一點就是如果你到每個容器內部去訪問 localhost 監聽的服務,無論這個服務在哪個容器里面,都能夠訪問成功。這就為網絡抓包提供了基礎。
專用鏡像我們可以使用一個專用的 tcpdump 的鏡像來進行抓包。鏡像名稱為 corfr/tcpdump:latest ,可以使用 docker pull 直接下載。
$ docker pull corfr/tcpdump:latest抓包實踐
我們現在用一個提供簡單 HTTP 服務的鏡像來進行測試。
下載測試鏡像
$ docker pull jemygraw/echo-go:1.0
啟動測試容器
$ docker run -p 8080:8080 jemygraw/echo-go:1.0 /home/app/echo-go -port 8080
查看測試容器ID
$ docker ps 5de30e950459 jemygraw/echo-go:1.0 "/home/app/echo-go -…" 10 minutes ago Up 10 minutes 0.0.0.0:8080->8080/tcp dreamy_benz
啟動抓包鏡像,注意使用 --network 參數來共享測試容器的網絡。
$ docker run --network container:5de30e950459 corfr/tcpdump:latest -i any -U -w -
由于 corfr/tcpdump:latest 鏡像構建的時候使用了 ENTRYPOINT 指定了入口命令為 /usr/sbin/tcpdump ,所以這里我們指定命令的選項參數即可。
這個時候我們可以嘗試訪問 http://localhost:8080/ 就能夠在抓包容器的輸出中看到抓包結果了。
真實案例Kubernetes 的插件命令 sniff 就是使用了上面的技術來實現特權模式下通過旁觀的抓包容器共享目標容器的網絡來實現抓包的。該項目地址在:https://github.com/eldadru/ksniff ,有興趣可以研究。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32993.html
摘要:哈,這是在寫的第一篇博客文章,祝好技術安全前端互聯網二次開發今天瘋了般地弄了數據鏈路層分析應用層網站流量導向分析有關的東東先來說說這個數據鏈接層的分析,限于篇幅和類型,明天再寫第二篇。拼接若干次還是返回,那還是抓包分析吧。 哈,這是在segmentFault寫的第一篇博客文章,祝好! tags: 技術, wordpress, DIY, SEO, 安全, 前端, 互聯網, 二次開發 今...
摘要:哈,這是在寫的第一篇博客文章,祝好技術安全前端互聯網二次開發今天瘋了般地弄了數據鏈路層分析應用層網站流量導向分析有關的東東先來說說這個數據鏈接層的分析,限于篇幅和類型,明天再寫第二篇。拼接若干次還是返回,那還是抓包分析吧。 哈,這是在segmentFault寫的第一篇博客文章,祝好! tags: 技術, wordpress, DIY, SEO, 安全, 前端, 互聯網, 二次開發 今...
閱讀 3939·2021-11-16 11:44
閱讀 3121·2021-11-12 10:36
閱讀 3378·2021-10-08 10:04
閱讀 1261·2021-09-03 10:29
閱讀 399·2019-08-30 13:50
閱讀 2609·2019-08-29 17:14
閱讀 1740·2019-08-29 15:32
閱讀 1086·2019-08-29 11:27