netmask的2進位數值一定要連續嗎?



贊助商連結


LIAR
2011-03-10, 11:54 AM
我之前幫同學設遊戲用的VPN,外加跳板功能。不過他們在實驗室的無線網路還要再連一個學校的VPN才能使用學校資源,我等於是在原有的VPN上再加一層VPN。

而我發現學校的VPN把0.0.0.0/0的ROUTING給鎖住了,所以不能改0.0.0.0/0到我的VPN server(10.66.77.1),所以跳板不能用。最後我化整為零,用command line加入下面的ROUTING:

route add 16.0.0.0 mask 16.0.0.0 10.66.77.1
route add 32.0.0.0 mask 32.0.0.0 10.66.77.1
route add 64.0.0.0 mask 64.0.0.0 10.66.77.1
route add 128.0.0.0 mask 128.0.0.0 10.66.77.1
這樣就成功的跳出去了。
(題外話:只有最後的128能簡寫為128.0.0.0/1,其他不行簡寫吧?:jump2:)

不過我手癢想玩一下,現在我用CMYIP這個網站為例,其IP為174.132.254.58,前面174的2進位數是10101110,如果我只加上32.0.0.0 mask 32.0.0.0這段ROUTING,瀏覽器是連不上去的,非得加上128.0.0.0/1才會成功。

但把10101110(174)和00100000(32)做AND運算,確實是destination的32.0.0.0,我只知道如果有兩個routing比對一樣的話,優先權會以MASK重疊的較多者為優先。但我的routing table沒有其他和174這個IP有吻合的mask(0.0.0.0/0是連不出去的),我想請問為什麼非得加上128.0.0.0/1才行呢?

贊助商連結


doomcat
2011-03-10, 02:08 PM
這樣打行嗎?因該還要加入gateway等等的資訊吧!!!

LIAR
2011-03-10, 03:01 PM
這樣打行嗎?因該還要加入gateway等等的資訊吧!!!
恩......我剛補上gateway,我以為這不是重點:|||:


其實可以不管vpn,就算一般情況下也可以這樣測試:
(假設我的gateway是192.168.0.254)
1.
ROUTE DELETE 0.0.0.0 MASK 0.0.0.0 192.168.0.254
這樣幾乎所有網站都上不去(ex:174.132.254.58=CMYIP.COM)
2.
ROUTE ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.254
前面舉的例子(174.132.254.58)可以上了
3.
ROUTE DELETE 128.0.0.0 MASK 128.0.0.0 192.168.0.254
ROUTE ADD 32.0.0.0 MASK 32.0.0.0 192.168.0.254
這次把128的改成32,但(174.132.254.58)卻上不了了。
4.
ROUTE DELETE 32.0.0.0 MASK 32.0.0.0 192.168.0.254
ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.254
恢復原本的設定。

我目前看過的netmask都是中規中矩地從開頭一路1111到尾巴(2進位),但我以為只要目的IP和mask做過運算符合destination後,就可以通行。
結果實際上我只加32.0.0.0的話,就是會失敗,所以才想請教說這個routeing還有其他規則嗎?

doomcat
2011-03-10, 04:57 PM
3.
ROUTE DELETE 128.0.0.0 MASK 128.0.0.0 192.168.0.254
ROUTE ADD 32.0.0.0 MASK 32.0.0.0 192.168.0.254
這次把128的改成32,但(174.132.254.58)卻上不了了。


算看懂了~~mask因該是不能設32才對,32是00100000這樣因該是行不通的
mask因該都是00000000、10000000、11000000這樣下去,我還沒看過00100000這樣的設法

如果真的要設可以設174.0.0.0/8 後面那個8就表示有幾個連續1組成所以8=255.0.0.0

rushoun
2011-03-10, 10:14 PM
就我的認知,不知是否有錯?遮罩(mask)的用意,應該是用來侷限符合某些網段之間的IP,彼此之間才可以相通的一種設定。
所以遮罩,應該只要是0~255範圍內的數字,都應該能使用才對,不應該某些數字不能使用吧。

doomcat
2011-03-11, 12:06 PM
就我的認知,不知是否有錯?遮罩(mask)的用意,應該是用來侷限符合某些網段之間的IP,彼此之間才可以相通的一種設定。
所以遮罩,應該只要是0~255範圍內的數字,都應該能使用才對,不應該某些數字不能使用吧。

IP的計算是以二進位為基礎,MASK的計算是由右到左連續的1,這是規則至於為什麼是這樣子,可能得回頭去看規格書才知到!!不過大概可以猜想的出來就是規則簡單不須要太多的判斷式,但很有可能會有IP浪費的問題(發展至今有很多解決方式)

subnet mask主要是用來切割子網路,靠mask可以切出net id & host id最後就可得知網路位置(IP與mask做and後host id全為0的位置)與廣播位置(IP與mask做and後host id全為1的位置),這兩個位置都是不能使用的!!可參考這篇http://wiki.iiietc.ncu.edu.tw/mediawiki/index.php?title=Subnet_mask,切割子網路是要分開IP層的廣播位置&得知網路位置(也就您說的分區),不同subnet的主機IP是不能直接對傳,是須要透過routing(也就是轉送),一般標榜L3 Switch就是能做到routing!!

次要就是做routing table轉送的依據,當然做routing table的mask也是要守規矩才可以的!!:fd:

rushoun
2011-03-11, 02:13 PM
我是看這裡:http://www.study-area.org/network/networkfr.htm
舉例好像一樣。