当我们使用FreeBSD作网关或防火墙时,会要求在系统中安装两块网卡,分别跨越两个网络,
一块卡用于外部网络,而另一块用于内部网络。好了,就象大家知道的那样,现在需要让系
统支持这些新设备,而对于网络适配器,FreeBSD是通过定制内核来支持的。当然,首先要让
内核了解设备所用的硬件资源,对于使用PCI接口的网卡,我只能说,拥有高科技真是幸福,
因为这类网卡在PCI PnP BOIS的支持下,只要在内核中多添一个设备配置就可在新内核引导
时自动检测并启动;而对于ISA的卡,就没有这样简单了,不过只要去PnP用jumpless模式,
用卡所带的设置程序设好适当的资源,就可以在内核中用相应的配置来通知系统在引导时按
这样的资源来启动设备。我们来看看具体步骤:
1、定制新内核以适应新设备
这里有一个问题需要注意一下,众所周知,定制内核至少需要在系统上安装原代码中的""内
核原代码""(FreeBSD Kernel Sources)部分,先前没有安装的可以用 /stand/sysinstall添
加这部分。
对于PCI网卡,例如你用的是Realtek 8139,可以在内核配置文件中添加一行:
device de0 <---- 你原有的DC21040 Ethernet adapters
device rl0 <---- 新加入的Realtek 8139,因为是PCI卡,系统会自动检测
卡资源
对于ISA网卡,例如你用的是NE2000兼容卡,同样在内核配置文件中添加与已设定资源相符
合的描述行:
device de0 <---- 你原有的DC21040 Ethernet adapters
device ed0 at isa? port 0x300 net irq 3 iomem 0xd8000 vector edintr
上面第二行是新加入的NE2000兼容网卡,因为是ISA卡,所以一定要指定卡所用的资源以便
系统可以在引导时检测到。可能你会问,如果用的都是同样芯片类型的卡,该如何配置呢?
可以这样做:
device ed0 at isa? port 0x300 net irq 3 iomem 0xd8000 vector edintr
device ed1 at isa? port 0x320 net irq 10 iomem 0xd8000 vector edintr
可以看到,有多个同样类型的设备时,按照UNIX的编号习惯依次就是ed0、ed1……。不过,
在上面的配置中两块卡的BOOTROM资源会发生冲突,但不影响启动,你可以根据情况用卡所
带设置程序把它们适当设开即可。
此时已经按要求定制好了新的内核配置,现在就可以按FreeBSD handbook中的描述把新内核
编译并安装好。编译工作一切顺利的话我们的系统就已经支持了新的网卡设备,接下来就是
为新网卡配置相应的网络接口。
2、添加新网络接口
比较简单直观的方法是用/stand/sysinstall来对新设备配置新接口的一系列参数,当然BSD
的传统方法是以修改相应的配置文件来达到目的的,编辑/etc/rc.conf:
hostname=""example.host.net""
network_interfaces=""ed0 ed1 lo0""
~~~在这里加入新的网络接口以便在引导时用后面ifconfig配置的
参数进行初始化
ifconfig_ed0=""inet 192.168.0.1 netmask 255.255.255.0"" #原有的网络接口参数
ifconfig_ed1=""inet 192.168.1.1 netmask 255.255.255.0"" #新网络接口参数
defaultroute=""xxx.xxx.xxx.xxx"" #原有的网络默认路由
好了,安装双网卡的工作就完成了,以后可以根据具体使用情况自行配置NAT、GATEWAY等东东
了。