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