148 lines
6.6 KiB
HTML
148 lines
6.6 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
|
<!--Converted with LaTeX2HTML 96.1-c (Feb 29, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Ethernet Interfaces</TITLE>
|
|
</HEAD>
|
|
<BODY LANG="EN">
|
|
<A HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A HREF="node68.html">Routing through a Gateway</A>
|
|
<B>Up:</B> <A HREF="node65.html">Interface Configuration for IP</A>
|
|
<B> Previous:</B> <A HREF="node66.html">The Loopback Interface</A>
|
|
<BR> <P>
|
|
<H2><A NAME="SECTION007720000">Ethernet Interfaces</A></H2>
|
|
|
|
Configuring an Ethernet interface goes pretty much the same as
|
|
with the loopback interface, it just requires a few more parameters
|
|
when you are using sub-netting.
|
|
<P>
|
|
At the Virtual Brewery, we have sub netted the IP network, which was
|
|
originally a class-B network, into class-C subnetworks. To make the
|
|
interface recognize this, the ifconfig incantation would look
|
|
like this:
|
|
<Pre>
|
|
# ifconfig eth0 vstout netmask 255.255.255.0
|
|
|
|
|
|
</Pre>
|
|
This assigns the eth0 interface the IP-address of vstout
|
|
(191.72.1.2). If we had omitted the netmask, ifconfig
|
|
would have deduced the the netmask from the IP-network class, which
|
|
would have resulted in a netmask of 255.255.0.0.
|
|
Now a quick check shows:
|
|
<Pre>
|
|
# ifconfig eth0
|
|
eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42
|
|
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
|
|
UP BROADCAST RUNNING MTU 1500 Metric 1
|
|
RX packets 0 errors 0 dropped 0 overrun 0
|
|
TX packets 0 errors 0 dropped 0 overrun 0
|
|
|
|
</Pre>
|
|
You can see that ifconfig automatically set the broadcast
|
|
address (the Bcast field above) to the usual value, which is
|
|
the hosts network number with the host bits all set. Also, the message
|
|
transfer unit (the maximum size of Ethernet frames the kernel will
|
|
generate for this interface) has been set to the maximum value of 1500
|
|
bytes. All these values can be overridden with special options that
|
|
will be described later.
|
|
<P>
|
|
Quite similar to the loopback case, you now have to install a routing
|
|
entry that informs the kernel about the network that can be reached
|
|
through eth0. For the Virtual Brewery, you would invoke
|
|
route as
|
|
|
|
<Pre>
|
|
# route add -net 191.72.1.0
|
|
|
|
</Pre>
|
|
At first, this looks a little like magic, because it's not really
|
|
clear how route detects which interface to route through.
|
|
However, the trick is rather simple: the kernel checks all interfaces
|
|
that have been configured so far and compares the destination address
|
|
(191.72.1.0 in this case) to the network part of the interface
|
|
address (that is, the bitwise and of the interface address and the
|
|
netmask). The only interface that matches is eth0.
|
|
<P>
|
|
Now, what's that -net option for? This is used because
|
|
route can handle both routes to networks and routes to single
|
|
hosts (as you have seen above with localhost). When being given an
|
|
address in dotted quad notation, it attempts to guess whether it is a
|
|
network or a hostname by looking at the host part bits. If the address'
|
|
host part is zero, route assumes it denotes a network, otherwise
|
|
it takes it as a host address. Therefore, route would think that
|
|
191.72.1.0 is a host address rather than a network number,
|
|
because it cannot know that we use sub-netting. We therefore have to tell
|
|
it explicitly that it denotes a network, giving it the -net
|
|
flag.
|
|
<P>
|
|
Of course, the above route command is a little tedious to type,
|
|
and it's prone to spelling mistakes. A more convenient approach is to
|
|
use the network names we have defined in /etc/networks above.
|
|
This makes the command much more readable; even the -net flag
|
|
can now be omitted, because route now knows that
|
|
191.72.1.0 denotes a network.
|
|
<Pre>
|
|
# route add brew-net
|
|
</Pre>
|
|
|
|
Now that you've finished the basic configuration steps, we want to
|
|
make sure your Ethernet interface is indeed running happily. Choose a
|
|
host from your Ethernet, for instance vlager, and type
|
|
<Pre>
|
|
# ping vlager
|
|
PING vlager: 64 byte packets
|
|
64 bytes from 191.72.1.1: icmp seq=0. time=11. ms
|
|
64 bytes from 191.72.1.1: icmp seq=1. time=7. ms
|
|
64 bytes from 191.72.1.1: icmp seq=2. time=12. ms
|
|
64 bytes from 191.72.1.1: icmp seq=3. time=3. ms
|
|
^C
|
|
|
|
----vstout.vbrew.com PING Statistics----
|
|
4 packets transmitted, 4 packets received, 0% packet loss
|
|
round-trip (ms) min/avg/max = 3/8/12
|
|
|
|
</Pre>
|
|
If you don't see any output similar to this, then something is broken,
|
|
obviously. If you encounter unusual packet loss rates, this hints at
|
|
a hardware problem, like bad or missing terminators, etc. If you
|
|
don't receive any packets at all, you should check the interface
|
|
configuration with netstat. The packet statistics displayed by
|
|
ifconfig should tell you whether any packets have been sent out
|
|
on the interface at all. If you have access to the remote host, too,
|
|
you should go over to that machine and check the interface statistics,
|
|
too. In this way, you can determine exactly where the packets got
|
|
dropped. In addition, you should display the routing information with
|
|
route to see if both hosts have the correct routing entry.
|
|
route prints out the complete kernel routing table when invoked
|
|
without any arguments (the -n option only makes it print
|
|
addresses as dotted quad instead of using the hostname):
|
|
<pre>
|
|
# route -n
|
|
Kernel routing table
|
|
Destination Gateway Genmask Flags Metric Ref Use
|
|
127.0.0.1 * 255.255.255.255 UH 1 0
|
|
191.72.1.0 * 255.255.255.0 U 1 0
|
|
|
|
</pre>
|
|
The detailed meaning of these fields is explained below in
|
|
section-<A HREF="#ifacenetstat"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>. The Flag column contains a list of
|
|
flags set for each interface. U is always set for active
|
|
interfaces, and H says the destination address denotes a host.
|
|
If the H flag is set for a route that you meant to be a network
|
|
route, then you have to specify the -net option with the
|
|
route command. To check whether a route you have entered is used
|
|
at all, check if the Use field in the second to last column
|
|
increases between two invocations of ping.
|
|
<P>
|
|
<HR><A HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A HREF="node68.html">Routing through a Gateway</A>
|
|
<B>Up:</B> <A HREF="node65.html">Interface Configuration for IP</A>
|
|
<B> Previous:</B> <A HREF="node66.html">The Loopback Interface</A>
|
|
<P><ADDRESS>
|
|
<I>Andrew Anderson <BR>
|
|
Thu Mar 7 23:22:06 EST 1996</I>
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|