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