diff --git a/en_US.ISO8859-1/books/handbook/config/chapter.sgml b/en_US.ISO8859-1/books/handbook/config/chapter.sgml index 280b60136e..f581f4bd51 100644 --- a/en_US.ISO8859-1/books/handbook/config/chapter.sgml +++ b/en_US.ISO8859-1/books/handbook/config/chapter.sgml @@ -415,6 +415,397 @@ exit 0 system boot. + + + + + Marc + Fonvieille + Contributed by + + + + + + Setting Up Network Interface Cards + + Nowadays we can not think about a computer without thinking + about a network connection. Adding and configuring a network + card is a common task for any FreeBSD administrator. + + + Locating the Correct Driver + + Before you begin, you should know the model of the card + you have, the chip it uses, and whether it is a PCI or ISA card. + FreeBSD supports a wide variety of both PCI and ISA cards. + Check the Hardware Compatibility List for your release to see + if your card is supported. + + Once you are sure your card is supported, you need + to determine the proper driver for the card. The file + /usr/src/sys/i386/conf/LINT will give you + the list of network interfaces drivers with some information + about the supported chipsets/cards. If you have doubts about + which driver is the correct one, read the manual page of the + driver. The manual page will give you more information about + the supported hardware and even the possible problems that + could occur. + + If you own a common card, most of the time you will not + have to look very hard for a driver. Drivers for common + network cards are present in the GENERIC + kernel, so your card should show up during boot, like so: + +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 + + In this example, we see that two cards using the &man.dc.4; + driver are present on the system. + + To use your network card, you will need to load the proper + driver. This may be accomplished in one of two ways. The + easiest way is to simply load a kernel module for your network + card with &man.kldload.8;. A module is not available for all + network card drivers (ISA cards and cards using the &man.ed.4; + driver, for example). Alternatively, you may statically compile + the support for your card into your kernel. Check + /usr/src/sys/i386/conf/LINT and the + manual page of the driver to know what to add in your kernel + configiration file. For more information about recompiling your + kernel, please see . If your card + was detected at boot by your kernel (GENERIC) + you do not have to build a new kernel. + + + + Configuring the Network Card + + Once the right driver is loaded for the network card, the + card needs to be configured. As with many other things, the + network card may have been configured at installation time by + sysinstall. + + To display the configuration for the network interfaces on + your system, enter the folowing command: + +&prompt.user; 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 + + + Old versions of FreeBSD may require the + option following &man.ifconfig.8;, for more details about the + correct syntax of &man.ifconfig.8;, please refer to the manual + page. Note also that entries concerning IPv6 + (inet6 etc.) were omitted in this + example. + + + In this example, the following devices were + displayed: + + + + 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 uses the driver name followed by the order in + which one the card is detected at the kernel boot to name the + network card. For example sis2 would + be the third network card on the system using the &man.sis.4; + driver. + + In this example, the dc0 device is + up and running. The key indicators are: + + + + UP means that the card is configured + and ready. + + + + The card has an Internet (inet) + address (in this case 192.168.1.3). + + + + It has a valid subnet mask (netmask; + 0xffffff00 is the same as 255.255.255.0). + + + + It has a valid broadcast address (in this case, + 192.168.1.255). + + + + The MAC address of the card (ether) + is 00:a0:cc:da:da:da + + + + The physical media selection is on autoselection mode + (media: Ethernet autoselect (100baseTX + <full-duplex>)). We see that + dc1 was configured to run with + 10baseT/UTP media. For more + information on available media types for a driver, please + refer to its manual page. + + + + The status of the link (status) + is active, i.e. the carrier is detected. + For dc1, we see + status: no carrier. This is normal when + an ethernet cable is not plugged into the card. + + + + If the &man.ifconfig.8; output had shown something similar + to: + +dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 + ether 00:a0:cc:da:da:da + + it would indicate the card has not been configured. + + To configure your card, you need root + privileges. The network card configuration can be done from the + command line with &man.ifconfig.8; but you would have to do it + after each reboot of the system. The file + /etc/rc.conf is where to add the network + card's configuration. + + Open /etc/rc.conf in your favorite + editor. You need to add a line for each network card present on + the system, for example in our case, we added these lines: + +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" + + You have to replace dc0, + dc1, and so on, with + the correct device for your cards, and the addresses with the + proper ones. You should read the card driver and + &man.ifconfig.8; manual pages for more details about the allowed + options and also &man.rc.conf.5; manual page for more + information on the syntax of + /etc/rc.conf. + + If you configured the network during installation, some + lines about the network card(s) may be already present. Double + check /etc/rc.conf before adding any + lines. + + You will also have to edit the file + /etc/hosts add the names and the IP + adresses of various machines of the LAN, if they are not already + there. For more information please refer to &man.hosts.5; + and to /usr/share/examples/etc/hosts. + + + + Testing and Troubleshooting + + Once you have made the necessary changes in + /etc/rc.conf, you should reboot your + system. This will allow the change(s) to the interface(s) to + be applied, and verify that the system restarts without any + configuration errors. + + Once the system has been rebooted, you should test the + network interfaces. + + + Testing the Ethernet Card + + To verify that an Ethernet card is configured correctly, + you have to try two things. First, ping the interface itself, + and then ping another machine on the LAN. + + First let's test the interface: + +&prompt.user; 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 + + Now we have to ping another machine on the LAN: + +&prompt.user; 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 + + You could also use the machine name instead of + 192.168.1.2 if you have set up the + /etc/hosts file. + + + + Troubleshooting + + + + + Where can I find information about possible trouble + I may experience with my network card? + + + + The manual page of the driver is the first piece of + documentation to read. The mailing lists archives can + also be useful. + + + + + + When I try to ping a machine on my LAN, I get this + message: ping: sendto: Permission + denied. + + + + This means that you do not have permission to + send ICMP packets. Check to see if a firewall is + running on the machine and if there are any rules + blocking ICMP. + + + + + + I see a lot of watchdog + timeout messages in the system logs, and + when I try to ping a machine on the LAN, I get this + message: ping: sendto: No route to + host. + + + + The first thing to do is to check your network + cable. Many cards require a PCI slot supporting the + Bus Mastering. On some old motherboards, only one PCI + slot allows it (most of time slot 0). Check the + network card and the motherboard documentation to + determine if that may be the problem. + + + + + + I see a lot of device timeout + messages in the system logs, and my network card does not + work. + + + + Having one or two of these messages is sometimes + normal with some cards. However, if they persist and the + network is not usable, make sure the network cable is + plugged in and that there are no IRQ conflicts between + the network card and another device (or devices) on the + system. + + + + + + The performance of the card is poor, what can I + do? + + + + It is difficult to answer to that question. What is + your definition of poor performance? Double + check everything in your configuration, read the + &man.tuning.7; manual page, and try to avoid cheap + network cards. Many users have noted that setting the + media selection mode to autoselect + results in bad performance on some hardware. + + + + + + Are there any recommended network cards or cards I + should stay away from? + + + + You should avoid cheap cards for serious usage. Cheap + cards often use buggy chipsets, and most of time do not + provide very good performance. Many FreeBSD users like + cards using the &man.fxp.4; chipset, however, this does + not mean that all other chipsets are bad. + + + + + + + Virtual Hosts