如何使用NAT?
NAT(NetworkAddressTranslation)可以让你区域网路中的所有机器经由一台通往Internet的server连线出去,而且只需要注册该server一个IP就够了。 在以往没有NAT技术以前,我们必须在server上安装sockd,并且所有的clients都必须要支援sockd,才能够经过server的sockd连线出去。这种方式最大的问题是,通常只有telnet/ftp/www-browser支援sockd,其它的程式都不能使用;而且使用sockd的速度稍慢。因此我们现在都使用本篇所提的NAT,这样client不需要做任何的更动,只需要把gateway设到该FreeBSDserver上就可以了,而且所有的程式(例如kali/kahn等等)都可以使用。 首先我们先来谈谈区域网路的privateIP,依照RFC1918规范,以下的IP被预留作为privatenetwork使用,不会跟别人冲突: 10.0.0.0-10.255.255.255 172.16.0.0-172.31.255.255 192.168.0.0-192.168.255.255 因此当你在架设私有的区域网路时,应该根据你的需要使用以上的IP当作区域网路中机器的IPAddress。 再来我们谈谈所需要的软硬体: 1.一台可以连上internet网路的FreeBSDserver,并且拥有注册过的合法IP。而且在/etc/sysconfig中要把gateway设成ON以启动IPforwarding的功能。 2.FreeBSD操作系统版本: a)FreeBSD-2.1: *如果你的FreeBSDserver是经由PPP连上internet的,你可以使用PPP_Alias(http://www.srv.net/~cmott/alias.html),使用方法很简单,只需要把ppp_alias替换掉/usr/sbin/ppp,然後使用/usr/sbin/ppp(usermodeppp)连上网路即可,不需额外设定。 *如果你的FreeBSDserver是经由LAN以及其他方式连上网路的,请用ip_filter(http://coombs.anu.edu.au/~avalon/ip-filter.html)这套软体不但具有NAT的功能,还可以做IPFiltering以及其他强大的功能。 b)FreeBSD-2.2/3.0: *如果你的FreeBSDserver是经由PPP连上internet的,你可以使用PPP_Alias,由於cmott撰写的PPP_Alias已经被加入2.2/3.0中,因此你只需要使用/usr/sbin/ppp-alias拨接即可。 *如果你的FreeBSDserver是经由LAN以及其他方式连上网路的,你有两种选择: 1)使用IPDivertInterface: FreeBSD2.2/3.0具有PacketDivert(请mandivert)的功能,Divert可以让你自由的处理经过kernel的packets,除了NAT以外,还有其他如「限制网路频宽」等功能。如果你要使用divert 来做NAT的话,你需要ftp://freebsd.csie.nctu.edu.tw/pub/jdli/collect/natd/软体,并且依照里面的说明在kernel中加入IPFirewall与IPDivert的功能。(现在natd已经进入FreeBSD-ports/net/natd/,您可以到ports/packages中寻找) 2)使用IPFilter: 前面提过的ip_filter由於功能强大,现在已经慢慢进入FreeBSD2.2/3.0中,很可能未来会取代掉FreeBSD现有的IPFirewall。 3.其它的软体: 你可以在这台FreeBSDserver上启动IPFirewall或是安装Proxyserver(例如squid)来充分发挥其gateway的功能。 4.注意事项: 使用NAT後,你所有的连线都会被当成是从该FreeBSDserver上出去的,也就是说,外面的机器无法直接连上你区域网路中的机器,当然连上你的FreeBSDserver是没有问题的。 PS.从1997/6/22起,natd已经正式加入了2.2/3.0的行列。 ================================================================== 浅谈natd的架设: 0.你必须使用FreeBSD-2.2.2 /3.0 (已内建natd) 1.mannatd大略看过一遍 2.系统设定: a)在kernel设定档中加入以下keyword并重新编译kernel optionsIPFIREWALL optionsIPDIVERT b)修改/etc/rc.conf启动IPforwarding,以及启动IPFirewall gateway_enable=YES firewall="open" c)把以下加入到/etc/services natd6668/divert d)重新开机 e)执行natd natd-interfaceed0 其中ed0是你连上网路的媒介,例如ed0ppp0de0tun0,这样封包会经由该媒介转送。