亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 在netfilter的5個鉤子點(diǎn)處構(gòu)造包,并發(fā)送的問題 [打印本頁]

作者: 買單老    時間: 2015-10-07 01:43
標(biāo)題: 在netfilter的5個鉤子點(diǎn)處構(gòu)造包,并發(fā)送的問題
需求是這樣的,netfilter有5個鉤子點(diǎn),要求在任意一個鉤子點(diǎn)處構(gòu)造數(shù)據(jù)包發(fā)送,并在任意一個鉤子點(diǎn)處接受,這可以實(shí)現(xiàn)嗎?
作者: Godbach    時間: 2015-10-08 15:21
回復(fù) 1# 買單老

構(gòu)造包并發(fā)送應(yīng)該沒問題。

但是你說的任意鉤子點(diǎn)接受,怎么理解?

還有,你這么做,到底是什么需求呢。

   
作者: 買單老    時間: 2015-10-09 01:12
非常感謝你能回復(fù)我的帖子,由于白天在公司不能登錄外網(wǎng),只能回家后回復(fù)了。
需求就是:比如網(wǎng)頁下發(fā)兩個檢測點(diǎn),一個是input(可以選擇5個鉤子點(diǎn)中的人一個),一個是output(可以選擇5個鉤子點(diǎn)中的人一個),
下發(fā)這些數(shù)據(jù)到后臺后,后臺再下發(fā)給內(nèi)核ko模塊(肯定是自己的某個功能模塊),這個模塊就會在input點(diǎn)和output點(diǎn)做事情。
input鉤子點(diǎn)就會做在這個點(diǎn)自動構(gòu)造包并發(fā)送,output點(diǎn)就會將收到的數(shù)據(jù)使用netlink上傳到后臺(用戶程序)。這整套方案,你看能否實(shí)現(xiàn),合理不?回復(fù) 2# Godbach


   
作者: Godbach    時間: 2015-10-09 12:26
回復(fù) 3# 買單老

感覺你描述的仍然是實(shí)現(xiàn)方法,最原始的需求是要實(shí)現(xiàn)什么功能。在內(nèi)核態(tài)里構(gòu)造數(shù)據(jù)包,并發(fā)出去的這種方式,在結(jié)合實(shí)際需求之后,往往應(yīng)該有更合適的解決方案。

   
作者: 買單老    時間: 2015-10-09 22:17
需求就是如我上次回復(fù)你說的那樣,方便的話,能告訴我企鵝通訊號嗎,我想仔細(xì)地請教你
回復(fù) 4# Godbach


   
作者: Godbach    時間: 2015-10-10 19:17
回復(fù) 5# 買單老

需求就是:比如網(wǎng)頁下發(fā)兩個檢測點(diǎn),一個是input(可以選擇5個鉤子點(diǎn)中的人一個),一個是output(可以選擇5個鉤子點(diǎn)中的人一個),
下發(fā)這些數(shù)據(jù)到后臺后,后臺再下發(fā)給內(nèi)核ko模塊(肯定是自己的某個功能模塊),這個模塊就會在input點(diǎn)和output點(diǎn)做事情。
input鉤子點(diǎn)就會做在這個點(diǎn)自動構(gòu)造包并發(fā)送,output點(diǎn)就會將收到的數(shù)據(jù)使用netlink上傳到后臺(用戶程序)。這整套方案,你看能否實(shí)現(xiàn),合理不?


我的意思,你這個描述不是最原始的需求,而可能是你把最原始需求轉(zhuǎn)化成了解決方案之后,變成了你的實(shí)現(xiàn)需求了?

其實(shí),更愿意聽你介紹你最原始的需求,為什么會這么玩兒 netiflilter 的 Hook。
   
作者: Godbach    時間: 2015-10-10 19:18
回復(fù) 5# 買單老

建議就在論壇討論問題吧,這樣能夠參與討論問題的人多一些,會對你解決問題提供更多思路。


   
作者: 買單老    時間: 2015-10-12 22:07
昨天的回復(fù)居然沒有成功,難怪我一天都看不到我自己的回復(fù)。

為什么這么玩netfilter的HOOK,還不是客戶的要求嗎,唉。
客戶就是要求在任意一個鉤子點(diǎn)處發(fā)送報文,在任意一個鉤子點(diǎn)處接收報文。
目前我的接收報文已經(jīng)大體有思路了,將抓取的報文通過netlink上傳給用戶空間程序。
然而針對發(fā)送報文,一點(diǎn)頭緒都沒有,有如下問題:
1.針對在每一個點(diǎn)發(fā)包,那么每一個點(diǎn)的包應(yīng)該是什么格式的?
2.構(gòu)造好每一個點(diǎn)的包后,使用什么方式發(fā)送呢(使用什么函數(shù))?

麻煩講解一下啊,謝謝啦

回復(fù) 6# Godbach


   
作者: Godbach    時間: 2015-10-15 16:17
回復(fù) 8# 買單老

你指的是,你需要想讓報文傳遞到用戶空間,然后用戶空間做檢查,并發(fā)指令,告訴這個報文,需要通過那個 hook 點(diǎn)發(fā)出去?


   
作者: 買單老    時間: 2015-10-15 23:52
恩,差不多是這個意思,謝謝你的持續(xù)支持啊。
我在另外一個帖子里《 新版本內(nèi)核構(gòu)造包發(fā)送問題》已經(jīng)實(shí)現(xiàn)了通過dev_queue_xmit發(fā)UDP包,
不過,發(fā)TCP包,對端收不到,我在想是不是沒有建立3次握手的原因呢?

另外,領(lǐng)導(dǎo)除了要求使用dev_queue_xmit發(fā)包外,還要用netif_receive_skb發(fā)包(發(fā)這個包到內(nèi)核,讓pre routing這個鉤子點(diǎn)注冊的
回調(diào)函數(shù)接收到),具體的問題請觀看我的另外帖子《新版本內(nèi)核構(gòu)造包發(fā)送問題
回復(fù) 9# Godbach


   
作者: Godbach    時間: 2015-10-16 02:03
回復(fù) 10# 買單老

不過,發(fā)TCP包,對端收不到,我在想是不是沒有建立3次握手的原因呢?


三次握手是 TCP 協(xié)議棧需要的邏輯,在到達(dá) TCP 之前,也就是剛到 IP 層的時候,只要一個符合要求的 TCP 報文,是能夠看到,也能抓包看到的。

你的這種情況,要看一下 TCP 和 IP 校驗(yàn)和是否計算正確了。我懷疑是你夠早的報文,沒有發(fā)出來。

至于你說用 netif_recieve_skb 發(fā)包,比較讓人費(fèi)解。你知道這個函數(shù)是干什么的嗎?
   
作者: 買單老    時間: 2015-10-16 23:39
這個函數(shù)就是內(nèi)核收到包之后調(diào)用的啊,我就是想讓這個函數(shù)來接收我自己構(gòu)造的包,讓包流進(jìn)協(xié)議棧回復(fù) 11# Godbach


   
作者: Godbach    時間: 2015-10-18 22:59
回復(fù) 12# 買單老

明白了。那我提到的一些可能的問題,你 check 沒有。


   
作者: 買單老    時間: 2015-10-19 21:00
現(xiàn)在我這已經(jīng)基本上實(shí)現(xiàn)調(diào)用dev_queue_xmit發(fā)送UDP數(shù)據(jù)和調(diào)用netif_receive_skb接收UDP數(shù)據(jù)了,
現(xiàn)在主要的問題還是我在另外的帖子提到的函數(shù)  undefined問題,如果真的要重新編譯內(nèi)核,我的天啊,
我現(xiàn)在相信墨菲定律了,一件事,你越怕,它越會發(fā)生

回復(fù) 13# Godbach


   
作者: Godbach    時間: 2015-10-20 13:45
回復(fù) 14# 買單老
要么就 hack 深入一把。找到這個函數(shù)的符號表。


   
作者: Godbach    時間: 2015-10-20 13:45
回復(fù) 14# 買單老
要么就 hack 深入一把。找到這個函數(shù)的符號表。


   
作者: 買單老    時間: 2015-10-20 20:37
現(xiàn)在已經(jīng)重新編譯內(nèi)核了,可以使用了。不過接下來又遇到問題了。
調(diào)用ip_local_deliver進(jìn)行在LOCAL_IN之前發(fā)包需要調(diào)用ip_route_input_noref進(jìn)行路由選擇,這樣構(gòu)造的包就觸發(fā)LOCAL_IN點(diǎn)的鉤子函數(shù)了。

疑問有如下:
1.如果我想讓包進(jìn)入FORWARD點(diǎn),那么這個包構(gòu)造呢?


對于LOCAL_OUT和POST_ROUTING點(diǎn),我發(fā)現(xiàn)它們相關(guān)的導(dǎo)出函數(shù)中還需要一個struct sk* 參數(shù),這如何構(gòu)造?


回復(fù) 16# Godbach


   
作者: nswcfd    時間: 2015-10-21 12:34
好奇怪的需求,領(lǐng)導(dǎo)/客戶想用這個功能干什么?

比如領(lǐng)導(dǎo)/客戶想要"把prerouting‘劫持’到output",背后的意圖是1)還是2)?
1)僅僅讓報文從output發(fā)出去(無任何狀態(tài));
2)讓報文看起來像一個本地發(fā)送的?(比如跟某個app的socket管理起來,跟某個dst entry關(guān)聯(lián)起來,等等),要不要解決應(yīng)答報文的接收問題?<====== 這更像是要實(shí)現(xiàn)某種報文重定向(或者代理)的功能
作者: 買單老    時間: 2015-10-21 23:08
客戶領(lǐng)導(dǎo)拍板,怎么說呢,具體的需求我也搞不懂回復(fù) 18# nswcfd


   
作者: logcor    時間: 2015-12-21 17:48
買單老 發(fā)表于 2015-10-20 20:37
現(xiàn)在已經(jīng)重新編譯內(nèi)核了,可以使用了。不過接下來又遇到問題了。
調(diào)用ip_local_deliver進(jìn)行在LOCAL_IN之前 ...


想要轉(zhuǎn)向FORWORD的HOOK點(diǎn),應(yīng)該要在PRE_ROUTE點(diǎn)把目標(biāo)IP改成非本機(jī)吧,這樣route檢查時才會走FORWORD分支。這是我個人猜測啊,最近在研究協(xié)議棧代碼。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2