在FreeBSD中安装双网卡实例

【在FreeBSD中安装双网卡实例】当我们使用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等东东了 。

    推荐阅读