|
发表于 2005-5-1 08:58:50
|
显示全部楼层
- 11.8. 设置网卡
- Contributed by Marc Fonvieille.
- 现在我们不可想象一个计算机没有网络连接的情况。 添加和配置一块网卡是任何 FreeBSD 系统管理员的一项基本任务。
- 11.8.1. 查找正确的驱动程序
- 在开始之前,您应该知道您的网卡类型,它用的芯片和它是 PCI 还是 ISA 网卡。FreeBSD 支持很多种 PCI 和 ISA 网卡。 可以查看您的版本硬件兼容性列表以确定您的网卡被支持。
- 确认系统能够支持您的网卡之后, 您还需要为它选择合适的驱动程序。 /usr/src/sys/conf/NOTES 和 /usr/src/sys/arch/conf/NOTES 将为您提供所支持的一些网卡和芯片组的信息。 如果您怀疑驱动程序是否使所要找的那一个,请参考驱动程序的联机手册。 联机手册将提供关于所支持的硬件更详细的信息,甚至还包括可能发生的问题。
- Note: NOTES 在 FreeBSD 4.X 上并不存在。您需要查看 LINT 来了解关于网卡的信息。 参见 第 8.4 节 以了解关于 NOTES 和 LINT 的进一步信息。
- 如果您有一个普通的网卡,大多数时候您不需要为驱动浪费精力。 常用的网卡在 GENERIC 内核中已经支持了,所以您的网卡在启动时就会显示出来,像是:
- dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
- 000ff irq 15 at device 11.0 on pci0
- dc0: Ethernet address: 00:a0:cc:da:da:da
- miibus0: <MII bus> on dc0
- ukphy0: <Generic IEEE 802.3u media interface> on miibus0
- ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
- dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
- 000ff irq 11 at device 12.0 on pci0
- dc1: Ethernet address: 00:a0:cc:da:da:db
- miibus1: <MII bus> on dc1
- ukphy1: <Generic IEEE 802.3u media interface> on miibus1
- ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
- 在这个例子中,我们看到有两块使用 dc(4) 驱动的网卡在系统中。
- 如果您的网卡没有出现在 GENERIC 中,则需要手工加载合适的驱动程序。 要完成这项工作可以使用下面两种方法之一:
- *
- 最简单的办法是用 kldload(8) 加载网卡对应的内核模块。并不是所有的网卡都能够通过这种方法提供支持; 比较明显的例子是 ISA 网卡。
- *
- 另外, 您也可以将网卡的支持静态联编进内核。 察看 /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES 以及驱动程序的联机手册以了解需要在您的内核配置文件中加一些什么。要了解关于重新编译内核的进一步细节, 请参见 第 8 章。如果您的卡在引导时可以被内核 (GENERIC) 识别,您应该不需要编译新的内核。
- 11.8.2. 配置网卡
- 现在正确的网卡驱动程序已经装载,那么就应该配置它了。跟其他配置一样,网卡可以在安装时用 sysinstall 来配置。
- 要显示您系统上的网络接口的配置,输入下列命令:
- % ifconfig
- dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
- inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
- ether 00:a0:cc:da:da:da
- media: Ethernet autoselect (100baseTX <full-duplex>)
- status: active
- dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
- inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
- ether 00:a0:cc:da:da:db
- media: Ethernet 10baseT/UTP
- status: no carrier
- lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
- lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
- inet 127.0.0.1 netmask 0xff000000
- tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
- Note: 老版本的 FreeBSD 可能需要在 ifconfig(8) 后面接 -a 选项,需要了解更多的 ifconfig(8) 语法请查阅使用手册。注意所有关于 IPv6 (inet6 等等) 的记录在这个例子里都被忽略了。
- 在这个例子中,显示出了下列设备:
- *
- dc0: The first Ethernet interface
- *
- dc1: The second Ethernet interface
- *
- lp0: The parallel port interface
- *
- lo0: The loopback device
- *
- tun0: The tunnel device used by ppp
- FreeBSD 使用内核引导时检测到的网卡驱动顺序来命名网卡。例如 sis2 是系统中使用 sis(4) 驱动的第三块网卡。
- 在这个例子中,dc0 设备启用了。主要表现在:
- 1.
- UP 表示这块网卡已经配置完成准备工作。
- 2.
- 这块网卡有一个 Internet (inet) 地址 (这个例子中是 192.168.1.3)。
- 3.
- 它有一个有效的子网掩码 (netmask; 0xffffff00 等同于 255.255.255.0)。
- 4.
- 它有一个有效的广播地址 (这个例子中是 192.168.1.255)。
- 5.
- 网卡的 MAC (ether) 地址是 00:a0:cc:da:da:da
- 6.
- 物理传输媒介模式处于自动选择状态 (media: Ethernet autoselect (100baseTX <full-duplex>))。我们看到 dc1 被配置成运行在 10baseT/UTP 模式下。要了解驱动媒介类型的更多信息, 请查阅它们的使用手册。
- 7.
- 连接状态 (status)是 active,也就是说连接信号被检测到了。对于 dc1,我们看到 status: no carrier。这通常是网线没有插好。
- 如果 ifconfig(8) 的输出显示了类似于:
- dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
- ether 00:a0:cc:da:da:da
- 的信息,那么就是还没有配置网卡。
- 要配置网卡,您需要 root 权限。 网卡配置可以通过使用 ifconfig(8) 命令行方式来完成, 但是这样每次启动都要做一遍。放置网卡配置信息的文件是 /etc/rc.conf。
- 用您自己喜欢的编辑器打开 /etc/rc.conf。并且您需要为每一块系统中存在的网卡添加一行, 在我们的例子中,添加如下几行:
- ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
- ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"
- 用自己正确的设备名和地址来替换例子中的 dc0,dc1 等内容。您应该应该查阅网卡驱动和 ifconfig(8) 的手册页来了解各选项,也要查看一下 rc.conf(5) 帮助页来了解 /etc/rc.conf 的语法。
- 如果在安装的时候配置了网络,关于网卡的一些行可能已经存在了。所以在添加新行前仔细检查一下 /etc/rc.conf。
- 您也可能需要编辑 /etc/hosts 来添加局域网中不同的机器名称和 IP 地址,如果它们不存在,查看 hosts(5) 帮助和 /usr/share/examples/etc/hosts 以获得更多信息。
- 11.8.3. 测试和调试
- 对 /etc/rc.conf 做了必要的修改之后应该重启系统以应用对接口的修改,并且确认系统重启后没有任何配置错误。
- 系统重启后就应该测试网络接口了。
- 11.8.3.1. 测试以太网卡
- 为了确认网卡被正确的配置了,在这里我们要做两件事情。首先, ping 自己的网络接口,接着 ping 局域网内的其他机器。
- 首先测试本地接口:
- % ping -c5 192.168.1.3
- PING 192.168.1.3 (192.168.1.3): 56 data bytes
- 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
- 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
- 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
- 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
- 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
- --- 192.168.1.3 ping statistics ---
- 5 packets transmitted, 5 packets received, 0% packet loss
- round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
- 现在我们应该 ping 局域网内的其他机器:
- % ping -c5 192.168.1.2
- PING 192.168.1.2 (192.168.1.2): 56 data bytes
- 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
- 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
- 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
- 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
- 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
- --- 192.168.1.2 ping statistics ---
- 5 packets transmitted, 5 packets received, 0% packet loss
- round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms
- 您如果您设置了 /etc/hosts 文件,也可以用机器名来替换 192.168.1.2。
- 11.8.3.2. 调试
- 调试硬件和软件配置一直是一件头痛的事情, 从最简单的开始可以减轻一些痛苦。例如网线是否插好了?是否配置好了网络服务?防火墙配置正确吗? 是否使用了被 & os; 支持的网卡? 在发送错误报告之前您应该查看一下硬件说明, 升级 FreeBSD 到最新的 STABLE 版本, 看一下邮件列表或者在 Internet 上搜索一下。
- 如果网卡工作了, 但性能低下,应该好好阅读一下 tuning(7) 联机手册。 您也可以检查一下网络配置,不正确的设置会导致慢速的网络连接。
- 一些用户可能会在一些网卡上经历一到两次 ``device timeouts'', 这通常是正常现象。 如果经常这样甚至引起麻烦,则应确定一下它跟其他设备没有冲突。 仔细检查网线连接, 或者换一块网卡。
- 有时用户会看到少量 ``watchdog timeout'' 错误。这种情况要做的第一件事就是检查线缆连接。 一些网卡需要支持总线控制的 PCI 插槽。在一些老的主板上,只有一个 PCI 插槽支持 (一般是 slot 0)。检查网卡和主板说明书来确定是不是这个问题。
- ``No route to host'' 通常发生在如果系统不能发送一个路由到目的主机的包的时候。这在没有指定默认路由或者网线没有插上时会发生。 检查 netstat -rn 的输出并确认有一个有效的路由能到达相应的主机。 如果没有,请查阅 第 25 章。
- ``ping: sendto: Permission denied'' 错误信息经常由防火墙的配置错误引起。 如果 ipfw 在内核中启用了但是没有定义规则, 那么默认的规则就是拒绝所有通讯,甚至 ping 请求! 查阅 第 24 章 以了解更多信息。
- 有时网卡性能低下或者低于平均水平, 这种情况最好把传输媒介模式从 autoselect 改变为正确的传输介质模式。 这通常对大多数硬件有用,但可能不会解决所有人的问题。 接着,检查所有网络设置,并且阅读 tuning(7) 手册页。
复制代码 |
|