作者Linvail (平衡)
看板Programming
标题Re: [问题] 请教Basic NAT的实做方法
时间Thu Apr 19 18:13:54 2007
※ 引述《saap (我是好人囧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,
: 感觉好像不是这样作?
你有那麽多public IP可以用啊?
现在NAPT应该比较多吧 大家都用同样的IP和不同的port出去
: RFC 3022看了也了解他的步骤,
: 可是要实做...完全没有头绪,
: 想找范例码来参考又找不到,
我在网路上有找到过 还可以通过ICMP和FTP(active mode)
再找一下吧
: 因此特来请教迷津,
: 谢谢。
我是这样做的啦,细节我不说了
我是在windows上用MFC+winpcap作的
WAN ------------- eth1 = s
e
r
v
e
r =eth0 ------LAN (也许接到一个switch)
eth0 IP设192.168.0.254 其他clients的gateway也设192.168.0.254
从eth0进来且目的地是WAN的封包(ARP之类的不用转送) 随机分配62000+的
port number出去,IP当然用eth1的IP,并纪录Translation table
从eth1进来的且dest port是62000+的,才转送进LAN(你可以加上其他限制,
就变成Restricted Cone NAT, Port Restricted Cone NAT 之类的)
要送到哪里应该不用我教了
如果要让FTP p2p之类可以通过, 要设定static translation table
不然又外面来的连线(port <62000)我们是不会理的。
例如client 1的eMule port设47662,那你就在处里eth1封包那里把送给47662的
封包转给client 1,这样子就不会看到low ID了~~
如果client 2想架FTP,以filezilla server来说的话,可以设定filezilla server
只使用30000~31000的port,然後你的NAT就把这个port范围的封包转给client 2就可以了
(不过用passive mode就没这个问题了)
table要管理好,要定时清理,不然跑没多久就爆掉了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.79.114
※ 编辑: Linvail 来自: 140.114.79.114 (04/19 18:16)
1F:推 saap:感谢高手赐教...谢谢^^140.138.173.163 04/21 00:19