[問題] NAT路由問題
最簡單的SNAT拿來當作分享器用的話
假設我實體IP為66.111.222.33
假設某一虛擬192.168.56.101送封包給Google
這時候會在IPTable裡面加上一筆192.168.56.101的資料
然後把封包來源改成66.111.222.33後送出去給Google
Google收到這封包後回傳給66.111.222.33
這時候SNAT攔截到了封包去查看IPTable發現有對應資料
於是乎把目的66.111.222.33改成192.168.56.101
如此一來完成NAT的功能
========================================================
但是我的問題是假設有另一台192.168.56.102也丟封包給Google
這時候Google要回傳封包
那NAT要怎麼知道這回應封包要轉給101還是102呢
TCP可以看seq和ack但其他的封包類型似乎沒辦法
我想到的方法是每個port對應到NAT的其中一個port
例如192.168.56.101:80→66.111.222.33→30080
192.168.56.101:21→66.111.222.33→30021
192.168.56.102:80→66.111.222.33→40080
除此之外是不是有什麼實作方法?
上網查詢很久都查不到相關資料
懇請前輩們解惑
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.243.145.116
※ fasthall:轉錄至看板 LinuxDev 01/07 21:04
推
01/07 22:49, , 1F
01/07 22:49, 1F
推
01/08 01:44, , 2F
01/08 01:44, 2F
→
01/08 01:45, , 3F
01/08 01:45, 3F
那再請問一下這些port是指定好的還是動態分配的?
還有像是ICMP這種檔頭沒有port的protocol該怎麼辦呢?
※ 編輯: fasthall 來自: 111.243.145.116 (01/08 10:28)
推
01/08 12:21, , 4F
01/08 12:21, 4F
→
01/08 12:23, , 5F
01/08 12:23, 5F
→
01/08 12:24, , 6F
01/08 12:24, 6F
→
01/08 12:26, , 7F
01/08 12:26, 7F
→
01/08 12:26, , 8F
01/08 12:26, 8F
謝謝您的資訊
我現在正在不用module寫一個簡易nat
目前就是ICMP有疑惑
所以有可能兩台主機同時ping google結果出問題對嗎?
我想可以在table裡面每筆entry加上TTL
可是這樣還是好像還是不能防止nat server路由ICMP出錯
※ 編輯: fasthall 來自: 111.243.145.116 (01/08 13:29)
→
01/08 14:30, , 9F
01/08 14:30, 9F
→
01/08 14:30, , 10F
01/08 14:30, 10F
感謝您的資料
正在研讀中,十分有用!
※ 編輯: fasthall 來自: 111.243.145.116 (01/08 16:43)
Linux 近期熱門文章
PTT數位生活區 即時熱門文章