亚洲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ā)出,由Beth1接收,兩個(gè)主機(jī)正常通信。
       個(gè)人的實(shí)現(xiàn)方法,在net_post_routinghook點(diǎn)截獲skb,更改源mac地址和目的mac地址,并更改skb->dev使原本由主機(jī)Aeth0發(fā)出的tcp包由eth1發(fā)出,并到達(dá)到達(dá)主機(jī)Beth1,并上傳協(xié)議棧,不影響通信。
        目前使用sendipeth0發(fā)送數(shù)據(jù)包,可以在eth1的發(fā)送端和接收端都抓到包,而使用Telnet連接主機(jī)Beth0的對(duì)應(yīng)網(wǎng)段,在兩端都抓不到包。
       請(qǐng)問是我的思路哪里出現(xiàn)了問題嗎?同樣的方法我修改ICMP包,使用主機(jī)A來ping主機(jī)B的eth0的網(wǎng)段,在eth1上能抓到包,且eth0正常收到回應(yīng)包,為什么TCP會(huì)無法建立連接
源碼如下:
  1. skb->mac_header=2;//這里手動(dòng)改了這個(gè)值,skb—>指向ip頭時(shí),被置為0xffff(65535)

  2. skb_push(skb,14);//skb->data指針上移

  3. //ethd=eth_hdr(skb);

  4. ethd=(struct ethhdr *)skb_mac_header(skb);

  5. printk("the tcp skb-data is----%p-----",skb->data);

  6. printk("the tcp eth is--------%p-----",ethd);//此處ethd與skb->data指針不一致。

  7. //set mac

  8. memcpy(ethd->h_dest,ens39_mac_d,6);//修改mac地址

  9. memcpy(ethd->h_source,ens39_mac_s,6);

  10. ethd->h_proto=__constant_htons (ETH_P_IP);

  11. printk("the dest mac is-------%pM------",ethd->h_dest);

  12. printk("the source mac is-----%pM-------",ethd->h_source);

  13. dev=dev_get_by_name(&init_net,E1);

  14. skb->dev=dev;//更改網(wǎng)卡發(fā)出

  15. dev_queue_xmit(skb);

  16. return NF_STOLEN;        
復(fù)制代碼







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