Re: [ CN ] HW3 - firewall

作者: coquelicot (蚯蚓)   2013-01-01 12:48:39
※ 引述《simonxander (顯顯)》之銘言:
: 同學你好:
: 我今天測試了一下,NAT並不會擋掉多出來的 reply
: 也沒有限定 reply 的 data size 必須和 request 一樣
: 所以我想有可能是 checksum 地方有錯,才讓 NAT 把 packet drop 了
: ※ 引述《simonxander (顯顯)》之銘言:
: : 對 理論上應該會有一台vm當作firewall,不過這樣會需要3台vm
: : 為了簡化測試程序,vm2就是在NAT外面的電腦了
: : firewall的功能就由vm1自己來模擬,所以是限制output
非常感謝助教的測試,
不過我上網查了之後覺得 checksum 很合理, 還請助教過目
uint16_t checksum(uint16_t *mem, int bytes){
uint32_t sum = 0;
while(bytes > 1){
sum += *mem++;
bytes -= 2;
}
if(bytes == 1){
uint16_t tmp = 0;
*(uint8_t*)(&tmp) = *(uint8_t*)mem;
sum += tmp;
}
sum = (sum >> 16) + (sum & 0xffff);
sum = (sum >> 16) + (sum & 0xffff);
return (uint16_t)~sum;
}
作者: coquelicot (蚯蚓)   2013-01-01 12:54:00
會出問題應該只有在 sum 溢位, 可是我封包長度<200
作者: simonxander (顯顯)   2013-01-01 13:08:00
這個看起來沒錯,你可以裝 wireshark 來看看進出的封包,他也會寫說 checksum 有沒有算對記得要用root 權限執行 ex: sudo wireshark
作者: coquelicot (蚯蚓)   2013-01-01 16:16:00
我覺得貌似是 NAT 設定的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com