Re: [ CN ] HW3 - firewall

看板PangSir作者 (蚯蚓)時間11年前 (2013/01/01 12:48), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《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; } ---------------------------------------------- 真是麻煩助教了 <(_ _)> 稍微 test 了一下, checksum 應該沒什麼問題才是. 印出了一點訊息, 覺得會不會是我那樣設定NAT有問題? 我實際上的實驗是這樣. VM1: 192.168.0.1/24 VM2: 192.168.0.2/24 172.16.0.1/24 VM3: 172.16.0.2/24 令 192.168.0.2(VM2) 為 VM1 之 default router. 調整 VM3 的 routing table, 只有 172.16.0/24 的內網 然後我在 VM2 上設定 NAT: MASQUERADE all -- 192.168.0.0/24 anywhere FILTER: ACCEPT icmp -- 192.168.0.0/24 anywhere DROP all -- 192.168.0.0/24 anywhere 並將 VM2 的 ipv4/ip_forward 打開 我將外部 proxy 放在 VM3, 將連線導向 VM3 的 sshd. 內部 proxy 放在 VM1 開在 1201 port. 接著我在 VM1 用 ssh -p 1201 localhost 問題點在於, 只有剛開始的訊息(建立連線的握手)能夠順利傳輸. 我後來把 revcfrom 拿到的 sockaddr 印出來, 發現一件很詭異的事情, 最剛開始的封包, 來源 ip 很正常的是 172.16.0.1 , 可是後來的封包, 來源 ip 就變回了 192.168.0.1 . VM2 的 NAT 並沒有好好的把封包的 IP 給換掉 @@|| 不知道助教有何見解嗎 QAO? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.106.189

01/01 12:54, , 1F
會出問題應該只有在 sum 溢位, 可是我封包長度<200
01/01 12:54, 1F

01/01 13:08, , 2F
這個看起來沒錯,你可以裝 wireshark 來看看進出的封
01/01 13:08, 2F

01/01 13:08, , 3F
包,他也會寫說 checksum 有沒有算對
01/01 13:08, 3F

01/01 13:08, , 4F
記得要用root 權限執行 ex: sudo wireshark
01/01 13:08, 4F

01/01 16:16, , 5F
我覺得貌似是 NAT 設定的問題
01/01 16:16, 5F
※ 編輯: coquelicot 來自: 123.192.106.189 (01/01 16:30)
文章代碼(AID): #1GucgfvM (PangSir)
文章代碼(AID): #1GucgfvM (PangSir)