Re: [問題] 請教Basic NAT的實做方法
※ 引述《saap.bbs@ptt.cc (我是好人囧rz)》之銘言:
> 請教一下各位前輩們,
> Basic NAT要如何實做呢?
> 即假設內部網段是192.168.1.0/24網段,
> 藉由NAT Server的內部IP:192.168.0.254,
> 每個內部IP都對應到實體IP,
> EX:
> 192.168.1.1 <---> 1.1.1.1
> 192.168.1.2 <---> 1.1.1.2
> .
> .
> .
> .
> 192.168.1.100 <---> 1.1.1.100
> 小弟的問題在於該NAT是否要在外部網卡設上每個實體IP,
> 意即該NAT對外網卡上設1.1.1.1, 1.1.1.2, 1.1.1.3, ... 1.1.1.100及自己的對外IP,
> 感覺好像不是這樣作?
> RFC 3022看了也了解他的步驟,
> 可是要實做...完全沒有頭緒,
> 想找範例碼來參考又找不到,
> 因此特來請教迷津,
> 謝謝。
我以前的專題有做過類似的事情.
當時是用 DOS 做的.
首先, 你可以考慮使用 Linux 做為你開發的環境, 利用 promiscuous mode
的方式, 去聽每一個 interface 進來的所有 Packet.
也可以在 User Mode 下面做到收送封包.
這個專題很久了, 大概只記得部份而己
大致上的步驟是
Packet From LAN
|
確認是往 WAN Interface
|
Search NAPT Table 是不是有對應的 Record
NAPT Table 應該會記錄 SrcIP/PORT,DestIP/PORT, WanIP/PORT
|
將 Packet 內的 SIP/PORT 換成 WanIP/PORT
|
重新計算 Checksum
|
從 WAN 端將 Packet 送出去.
Packet From WAN.
|
Search NAPT Table
|
將 Packet 內的 DIP/PORT 換成 NAPT Table 內查到的 SrcIP/PORT
|
重新計算 Checksum
|
從 LAN 端將 Packet 送出去.
大致上的步驟就是這樣.
複雜一點還會碰到有關 Routing 的議題之類的
當然也可以偷懶去用 netfilter 做 NAT , 不過我想這樣就失去學習的本意了
--
以上的文字都是誤會
看到的一切都是幻覺
--
※ Origin: 土匪.山寨 <bbs.techarea.org / poorman.twbbs.org>
◆ From: richliu.techarea.org
推
04/21 00:12, , 1F
04/21 00:12, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章