BBS水木清华站∶精华区

发信人: Numb (麻木), 信区: Linux 
标  题: FreeBSD NAT mini-HOWTO中文版 
发信站: BBS 水木调试站 (Sat May 30 21:16:13 1998) 
 
1.前言 
 
前两天实验室的Hub坏了,因为只有一根出去的线,所以 
就在我的FreeBSD2.2.6机器上做了一个IP Masq,让大家 
都能连上校园网.在做的过程中因为没有中文资料可以 
参考,所以用了很长时间看文档,现在我将其过程简单写 
在这里,希望对FreeBSD的用户有所帮助. 
 
在本文中,我假定大家已经对Linux上的IP Masq技术有所 
了解,而不准备尝试解释该技术本身的内容,这些内容大家 
可以参考IP Masq的Linux中文HOWTO. 
 
2.安装过程 
 
FreeBSD上称IP Masq技术为NAT(Network Address Translation). 
NAT从FreeBSD2.1.x版本开始支持.NAT的安装过程如下. 
 
1).网卡设置 
FreeBSD提供对许多中常见的以太网卡的支持.关于FreeBSD支持的 
网卡类型,大家可以参考/usr/share/doc/handbook/handbook48.html 
文件中的描述.在这里我假定大家使用的是ed0类型的网卡,它包括 
Western Digital and SMC 80xx and 8216,Novell NE1000,NE2000 
等类型的10M ISA网卡.我在这里使用两块NE2000网卡.它们的名称 
分别为ed0和ed1,现在请记下两块卡的IRQ和I/O地址,一会儿我们要 
用到. 
2).编译FreeBSD的Kernel(核心) 
现在我们需要对FreeBSD的核心重新编译以使系统提供对第二块网卡 
和divert socket的支持. 
以root的身份执行以下操作: 
a.进入/sys/i386/conf目录, 
b.执行cp ./GENERIC MYKERNEL生成新的Kernel配置文件 
c.vi ./MYKERNEL开始重新配置.在MYKERNEL中加入以下两行: 
 
device ed0 at isa? port 0x??? net irq ?? iomem 0xd8000 edintr 
device ed1 at isa? port 0x??? net irq ?? iomem 0xd8000 edintr 
 
提供两块网卡的支持.其中isa?一般可设置成isa0,port???和irq???是 
网卡的IRQ号和I/O地址. 
加入以下两行: 
 
options IPFIREWALL 
options IPDIVERT 
 
d.保存并退出vi,执行以下命令重新编译核心 
 
/usr/sbin/config MYKERNEL 
cd ../../compile/MYKERNEL 
make depend 
make 
make install 
 
上面的工作完成后重新引导系统,注意启动过程,你的新Kernel应该能够 
找到两块网卡.如果新Kernel无法启动,请参照FreeBSD handbook中的 
TroubleShooting一节. 
 
3).系统配置 
a.编辑/etc/rc.conf文件,确保以下的内容加入该文件 
 
network_interfaces="lo0 ed0 ed1" 
ifconfig_ed0="inet 202.114.14.77 netmask 255.255.255.0" 
ifconfig_ed1="inet 192.168.0.100 netmask 255.255.255.0" 
gateway_enable="YES" 
firewall_enable="YES" 
firewall_type="open" 
 
b.编辑/etc/services文件,加入以下的一行 
 
natd    6668/divert  #Network Address Translation socket 
 
c.编辑/etc/firewall文件,加入以下的一行 
 
/sbin/ipfw add divert natd all from any to any via ed0 
 
d.编辑/etc/rc.local文件,加入以下的内容 
 
natd -interface ed0 
 
以上工作完成后重新启动系统,工作就可以算是基本完成了,:) 
FreeBSD这时候就可以完成防火墙的功能,连接内部网(192.168.0.*) 
和Internet.如果需要更高级的应用,如对单个内部IP记流量, 
限制出口地址等,请改写/etc/firewall的内容.这些可以参照 
FreeBSD的手册完成.我在这里不一一具体介绍. 
 
附注: 
1.本HOWTO是以本人的实例写成的,实际上你的情况也许与我会有区别, 
比如在只有一块网卡的情况下需要做IP alias的情况等等.所以请将 
本文看作是一个大致思路而非精确的流程.如果当遇到问题时,请多参照 
FreeBSD本身的handbook和FAQ,它们分别在: 
/usr/share/doc/handbook 
/usr/share/doc/FAQ 
目录下. 
 
2.本实例在FreeBSD2.2.6上完成.参考资料: 
 FreeBSD handbook 
 FreeBSD FAQ 
 man natd 
 man rc.conf 
 
3.本文作者的email地址为[email protected]你可以将你的建议和问题 
及时通知我. 
 
-- 
※ 修改:·Numb 於 May 30 21:18:29 修改本文·[FROM:   202.114.14.77] 
※ 来源:·BBS 水木调试站 Leeward.lib.tsinghua.edu.cn·[FROM: 202.114.14.77] 

BBS水木清华站∶精华区