日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arp_annouce=2详解

發布時間:2024/6/30 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arp_annouce=2详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

arp_annouce=0的時候

手冊上說的是到底是是說當我這個包出去的時候詢問arp地址,

當arp_announce=0的時候,是說使用數據包中的地址去進行arp的請求,

當arp_announce=2的時候,是根據端口號決定如何進行arp的請求;

于是我就做了這樣一個試驗: 還是三大件,樹莓派+虛機+宿主機,

虛機:ethA1 192.168.0.110

宿主機 ethA2 192.168.0.1? ethB2 192.168.1.1

樹莓派 ethB 192.168.1.110

增加路由信息

虛機上:route add default gw 192.168.0.1

樹莓派上:route add default gw 192.168.1.1

這個樣子三者的網算是通了,

然后我想測試的是arp_annouce=0的時候,echB2到echB的arp請求都是由由數據包中的地址發起,但是萬萬沒想到呢,于是我從虛擬機中ping樹莓派,然后通過wireshark抓包工具,希望看到arp請求是有192.168.0.110發起,但是發現并不是,竟然是由192.168.1.1發起,這并不符合arp_announce的行為呀,百思不得其解,只能看代碼了,于是我就開始抓在arp源地址設置的代碼,stap腳本在:net/arp/arp_send_dst.stp中,然后我發現了一件事情。。。那就是在進行函數inet_addr_type_dev_table判斷會返回的不是RTN_LOCAL,而是RTN_UNICAST,也就是說我ping的數據包中的源地址啊并不是本機地址,這不在arp_annouce數據包的職責范圍了。這就是ip地址不是用本端口的根因,于是我自己寫了一個sender不斷向樹莓派中發數據包,不同的是,這次的源地值是我主機上的另一套地址了,按理說這次arp請求的地址就會換掉了:sedner的代碼見net/arp/sender.c

現在問題是在socket中設置源地址呢,這個可以通過raw socket來解決。

這次就對了,隨便從網上copy下來了一個sende使用raw socket來完成該功能的程序,然后設置源地址發送,發現是可以的呢。

好了,證明結束,我們就來看一下相關的代碼: arp_solicit,這個函數里面有所有對arp_announce的約束,都約束啥東西呢?

所以總結一下:

對于本地產生的數據包:

arp_announce=0:使用數據包的地址去訪問,這個數據包一定是來源于本地的數據包;(LVS)

arp_announce=1:? 數據包中的地址必須與目的地址位于同一個網段;【可以自行做下試驗】

arp_announce=2:使用接口地址去訪問;

如果如果上述的結果都不滿足,那么就使用端口地址去訪問了

對于本地轉發的數據包:

使用接口地址去訪問;

?

轉載于:https://www.cnblogs.com/honpey/p/9061000.html

總結

以上是生活随笔為你收集整理的arp_annouce=2详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。