在FreeBSD中安装双网卡实例
2024-07-26 00:29:20
供稿:网友
当我们使用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等东东了。