Re: [ CN ] HW3 - firewall
※ 引述《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
01/01 12:54, 1F
推
01/01 13:08, , 2F
01/01 13:08, 2F
推
01/01 13:08, , 3F
01/01 13:08, 3F
推
01/01 13:08, , 4F
01/01 13:08, 4F
→
01/01 16:16, , 5F
01/01 16:16, 5F
※ 編輯: coquelicot 來自: 123.192.106.189 (01/01 16:30)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):