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,这样封包会经由该媒介转送。
f)执行ipfw(把ed0换成natd用的那个)
/sbin/ipfwadd60000divert6668allfromanytoanyviaed0
3.到此大致完成了,你可以把你的clients的routerIP设到这台FreeBSDServer,测试看看能不能上网路。
4.假如成功了,可以把ipfw那行加到/etc/rc.firewall中,把natd那行加到/etc/rc.local中,这样以後就可以自动启动了。
5.这只是最基本的设定,natd还有许多特异功能,请自行mannatd。
