看板Programming
标 题Re: [问题] 请教Basic NAT的实做方法
发信站山寨资讯站 (Thu Apr 19 17:15:19 2007)
转信站ptt!ctu-reader!news.nctu!BanditNest-BBS
※ 引述《[email protected] (我是好人囧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
1F:推 saap:推後面那句话...谢谢建议^^140.138.173.163 04/21 00:12