淺析基于Linux的跨NAT上網(wǎng)監控原理
上網(wǎng)行為管理軟件已經(jīng)很多了,然而很多種都無(wú)法實(shí)現跨NAT設備的監控,這是因為無(wú)法定位到真實(shí)的源IP地址,在NAT設備前面的設備看來(lái),所有的流量都是NAT設備發(fā)起的,NAT設備的存在為其后面的主機提供了一層屏障。那么有沒(méi)有什么辦法可以精確定位真實(shí)源IP地址呢?辦法是有的,只是需要NAT設備的配合。1.使用conntrack-tools監控事件 在Linux上,NAT一般是由ip_conntrack機制實(shí)現的,Linux本身肯定可以精確定位到真實(shí)的轉換前的地址,需要做的僅僅是將這些信息傳遞給上網(wǎng)行為管理系統即可,這些信息可以在/proc/net/ip_conntrack中看到,然而我們關(guān)注的不是這些信息本身,而是針對這些信息的一系列的事件,比如某IP在某時(shí)間發(fā)起了一個(gè)到某目標地址的連接,某時(shí)間段后拆除了該連接等等。
本文引用地址:http://dyxdggzs.com/article/154760.htmconntrack-tools工具是Netfilter社區提供的一款功能強大的ip_conntrack信息操作工具,可以方便實(shí)時(shí)的管理ip_conntrack信息,比如刪除某條記錄,提取事件等等。Linux的機制在內核實(shí)現,所謂的conntrack-tools只是一個(gè)用戶(hù)態(tài)的信息操作工具,如果想監控ip_conntrack事件,則只需要執行conntrack -E即可 關(guān)于更多的conntrack-tools信息,請參考:http://conntrack-tools.netfilter.org/manual.html 2.總體原理 以下是一條conntrack -E的輸出: [NEW] tcp 6 120 SYN_SENT src=128.129.0.3 dst=9.24.15.123 sport=4592 dport=8080 [UNREPLIED] src=9.24.15.123 dst=9.24.15.222 sport=8080 dport=4592 該條信息的意義不言自明,從字面意義上肯定是做了NAT,將源地址128.129.0.3轉換為了9.24.14.222,如果說(shuō)能將這類(lèi)信息傳遞給監控網(wǎng)關(guān),那么就可以做到針對真實(shí)源地址的監控,在監控網(wǎng)關(guān)上需要做的就是數據的整理。我們知道在監控網(wǎng)關(guān)上肯定有下列信息: 9.24.15.222:4592這個(gè)地址訪(fǎng)問(wèn)了9.24.15.123:8080 該數據和上述的conntrack -E輸出的數據做一個(gè)匯總就能得到: 128.129.0.3:4592這個(gè)地址訪(fǎng)問(wèn)了9.24.15.123:8080 3.ip_conntrack信息導出 如果NAT設備不配合或者根本就不是Linux系統,那么就需要其它的方案來(lái)拿到NAT設備上的連接信息。因此為了使這一切可用,有兩種辦法,一種是提供一個(gè)針對熟知NAT設備系統的連接信息導出接口以及規定一種文件格式或者協(xié)議格式,自行開(kāi)發(fā)信息導出機制,當然對于Linux的NAT設備,就是上面說(shuō)的那樣;另一種方法就是直接強制使用基于Linux的NAT,不過(guò)這種方法有點(diǎn)流氓,你必須要做到的就是你的Linux NAT設備既便宜又好用... 注解: conntrack-tools工具功能強大,一般用于無(wú)縫雙機熱備環(huán)境,Linux主機可以實(shí)時(shí)的將一臺機器的conntrack信息同步到相應的備機上,一旦主機宕機IP地址漂到備機,流量就會(huì )無(wú)縫的經(jīng)過(guò)備機,而不需要在流量經(jīng)過(guò)備機時(shí)重新生成conntrack信息(因為在重新生成的情況下,對于已經(jīng)建立連接的TCP流量會(huì )有問(wèn)題的)
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論