亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
【求助】skb修改后發(fā)送
[打印本頁]
作者:
stoic978
時(shí)間:
2020-09-11 22:26
標(biāo)題:
【求助】skb修改后發(fā)送
本帖最后由 stoic978 于 2020-09-13 20:21 編輯
目的:兩臺(tái)虛擬機(jī)分別有兩個(gè)網(wǎng)口,對(duì)應(yīng)兩個(gè)網(wǎng)段,想把一個(gè)網(wǎng)段本來由eth0發(fā)送的數(shù)據(jù)包修改,改為由另一網(wǎng)卡eth1接收發(fā)送,
兩臺(tái)虛擬機(jī)分別為
A
、
B
,每個(gè)虛擬機(jī)有兩個(gè)網(wǎng)卡,對(duì)應(yīng)兩個(gè)網(wǎng)段,想要在虛擬機(jī)上實(shí)現(xiàn)任何的
tcp
報(bào)文都走網(wǎng)卡
eth1
發(fā)出,由
B
的
eth1
接收,兩個(gè)主機(jī)正常通信。
個(gè)人的實(shí)現(xiàn)方法,在
net_post_routing
的
hook
點(diǎn)截獲
skb
,更改源
mac
地址和目的
mac
地址,并更改
skb->dev
使原本由主機(jī)
A
的
eth0
發(fā)出的
tcp
包由
eth1
發(fā)出,并到達(dá)到達(dá)主機(jī)
B
的
eth1
,并上傳協(xié)議棧,不影響通信。
目前使用
sendip
由
eth0
發(fā)送數(shù)據(jù)包,可以在
eth1
的發(fā)送端和接收端都抓到包,
而使用
Telnet
連接主機(jī)
B
的
eth0
的對(duì)應(yīng)網(wǎng)段,在兩端都抓不到包。
請(qǐng)問是我的思路哪里出現(xiàn)了問題嗎?同樣的方法我修改ICMP包,使用主機(jī)A來ping主機(jī)B的eth0的網(wǎng)段,在eth1上能抓到包,且eth0正常收到回應(yīng)包,為什么TCP會(huì)無法建立連接
源碼如下:
skb->mac_header=2;//這里手動(dòng)改了這個(gè)值,skb—>指向ip頭時(shí),被置為0xffff(65535)
skb_push(skb,14);//skb->data指針上移
//ethd=eth_hdr(skb);
ethd=(struct ethhdr *)skb_mac_header(skb);
printk("the tcp skb-data is----%p-----",skb->data);
printk("the tcp eth is--------%p-----",ethd);//此處ethd與skb->data指針不一致。
//set mac
memcpy(ethd->h_dest,ens39_mac_d,6);//修改mac地址
memcpy(ethd->h_source,ens39_mac_s,6);
ethd->h_proto=__constant_htons (ETH_P_IP);
printk("the dest mac is-------%pM------",ethd->h_dest);
printk("the source mac is-----%pM-------",ethd->h_source);
dev=dev_get_by_name(&init_net,E1);
skb->dev=dev;//更改網(wǎng)卡發(fā)出
dev_queue_xmit(skb);
return NF_STOLEN;
復(fù)制代碼
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2