IP白名單校驗之包含網(wǎng)絡地址和廣播地址

IP白名單校驗之包含網(wǎng)絡地址和廣播地址

her0kings1ey

很久沒有打字總結了,趁著今天腦抽了(大霧=='|)伐憾,剛好總結下最近遇到的一個問題篙螟,其實問題本身完全沒有復雜性芹扭,記錄下來主要是總結出一種解決問題的思路吧。那么脓匿,我們開始吧舌菜。

問題背景

在最近的開發(fā)工作中,有一個地方使用了IP白名單的校驗亦镶,即在白名單范圍內(nèi)的ip才能夠對某些資源進行訪問或操作日月。

但是作為一個公司或者團隊來說,訪問ip不可能只有一個缤骨,如果一個個ip來進行記錄和配置的話爱咬,往往過于麻煩,業(yè)界一般都是采用ip段的方式進行配置绊起,即提供一個ip子網(wǎng)段精拟,如:192.168.1.0/24 來表示一個網(wǎng)段的ip。

在ip白名單配置中只需要配置一個網(wǎng)段虱歪,認為該網(wǎng)段下面的ip都是合法的ip蜂绎。

那么問題來了,有些ip白名單的實現(xiàn)里面笋鄙,認為該網(wǎng)段的網(wǎng)絡地址和廣播地址不屬于該網(wǎng)段的可用地址师枣。比如commons-net下面的SubNetUtils實現(xiàn),默認的isInRange方法就不包含網(wǎng)絡地址和廣播地址萧落。

但是呢践美,在某種情況下洗贰,是可能使用網(wǎng)絡地址和廣播地址作為ip地址的(畢竟這兩個地址還是屬于那個網(wǎng)段的),那么陨倡,怎么辦呢敛滋?

解決思路

講真,這是個特別容易解決的問題兴革,主要看你愿不愿意解決犁柜。

在解決問題前顶掉,先提供一個原有的通過SubNetUtils的ip白名單校驗實現(xiàn):

通過new 一個SubNetUtils就轧,構造參數(shù)是子網(wǎng)段字符串刽锤,如:192.168.1.0/24

然后getSubInfo().isInRange(xxx)的方式來獲取ip是否屬于該網(wǎng)段蹋盆。

簡單的實現(xiàn)代碼如下

public static void main(String [] args){

? ? ? ? SubnetUtils utils = new SubnetUtils("192.168.1.0/24");

? ? ? ? System.out.println(utils.getInfo().isInRange("192.168.1.0"));

}

剛剛說到了宿礁,這個默認是不包含網(wǎng)絡地址和廣播地址的墩衙,所以會打印false闸氮。

怎么解決呢泌霍?

一種直接的方式货抄,把網(wǎng)絡地址和廣播地址單獨作為一個ip添加到配置文件中。這樣的方式雖然能解決問題朱转,但顯然沒有道理蟹地,不符合我們工程師解決問題的方式。

于是藤为,只要稍微動動腦筋怪与,我們會猜測,這種普遍的需求缅疟,作為一個設計良好的底層包分别,應該會提供相應的實現(xiàn)。

于是我們查看相應的代碼存淫。

我們發(fā)現(xiàn)有一個屬性:

/** Whether the broadcast/network address are included in host count */

private boolean inclusiveHostCount = false;

我們嘗試設置這個屬性為true耘斩,ok,問題bingo桅咆!

很多問題只要嘗試看下源碼實現(xiàn)括授,其實就立馬解決了。從使用這個類實現(xiàn)到解決這個問題岩饼,五分鐘都不用荚虚。

那么延伸一下,如果沒有這個屬性籍茧,我們可以怎么樣呢版述?

一種思路:

通過子網(wǎng)段算出網(wǎng)絡地址和廣播地址,在代碼里isInRange后面手段比較一下即可寞冯。

計算的方法也很簡單院水,網(wǎng)絡地址就是網(wǎng)段腊徙,廣播地址則是網(wǎng)絡地址加上 232-x -1, x是掩碼位數(shù),也就是192.168.1.0/24的位數(shù)檬某。

總結

基礎知識和耐心真的很重要撬腾,今天在cat交流群上看到一個伸手黨不用禮貌用語地問來問去,都想呵斥他了恢恼。搞技術還是不能太浮躁民傻,自勉自勉。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末场斑,一起剝皮案震驚了整個濱河市漓踢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漏隐,老刑警劉巖喧半,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異青责,居然都是意外死亡挺据,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門脖隶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扁耐,“玉大人,你說我怎么就攤上這事产阱⊥癯疲” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵构蹬,是天一觀的道長王暗。 經(jīng)常有香客問我,道長庄敛,這世上最難降的妖魔是什么俗壹? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮铐姚,結果婚禮上策肝,老公的妹妹穿的比我還像新娘。我一直安慰自己隐绵,他們只是感情好之众,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著依许,像睡著了一般棺禾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峭跳,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天膘婶,我揣著相機與錄音缺前,去河邊找鬼。 笑死悬襟,一個胖子當著我的面吹牛衅码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脊岳,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼逝段,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了割捅?” 一聲冷哼從身側響起奶躯,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亿驾,沒想到半個月后嘹黔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡莫瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年儡蔓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乏悄。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡浙值,死狀恐怖恳不,靈堂內(nèi)的尸體忽然破棺而出檩小,到底是詐尸還是另有隱情,我是刑警寧澤烟勋,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布规求,位于F島的核電站,受9級特大地震影響卵惦,放射性物質發(fā)生泄漏阻肿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一沮尿、第九天 我趴在偏房一處隱蔽的房頂上張望丛塌。 院中可真熱鬧,春花似錦畜疾、人聲如沸赴邻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姥敛。三九已至,卻和暖如春瞎暑,著一層夾襖步出監(jiān)牢的瞬間彤敛,已是汗流浹背与帆。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墨榄,地道東北人玄糟。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像袄秩,于是被迫代替她去往敵國和親茶凳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 名詞延伸 通俗的說箱沦,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你雇庙。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,602評論 2 57
  • 國際規(guī)定:把所有的IP地址劃分為A,B,C,D,E谓形。 A類地址:范圍從0~127,0是保留的并且表示所有IP地址疆前,...
    日風和閱讀 21,245評論 1 8
  • IP地址书释,子網(wǎng)掩碼,默認網(wǎng)關赊窥,DNS服務器是什么意思? (一) 問題解析 問: IP地址,子網(wǎng)掩碼,默認網(wǎng)關,...
    吳業(yè)鵬閱讀 17,274評論 1 14
  • 噢爆惧,是我。我們最近的一次通話是今天早上7點锨能,最近坐在一起吃飯拉家常是勞動節(jié)那天扯再。晚餐用排骨煮了一鍋冬瓜薏米百合湯,...
    松娣Sandy閱讀 267評論 2 1
  • 今日體驗: 昨天是一個很特別的日子址遇,是我們績效導航第二個100天的開始熄阻,回憶我們第一個績效導航的100天中我們經(jīng)歷...
    劉詩嫻閱讀 132評論 0 0