home *** CD-ROM | disk | FTP | other *** search
- Let's see if I can come up with a general explanation of how to use
- "route" under Linux. I'll give some "cookbook" examples at the end.
- For better or worse, this is going to be slightly different than for
- other variants of Unix. That's because as of 0.99pl15, Linux does not
- create a route automatically when you enable an interface. On the
- other hand, it does supply an additional option that I haven't seen
- elsewhere: the ability to specify an interface name instead of a
- gateway.
-
- WARNING: this presentation assumes that you are using at least
- 0.99pl15, libc 4.5.19 (4.5.8 will *not* give the same results), and
- the current version of route. (If there's any question, you can get a
- copy of route from athos.rutgers.edu in /pub/linux.)
-
- I suggest a three-stage strategy for doing route:
-
- 1) enable all your interfaces, using ifconfig, dip, or whatever. Make
- sure that you specify the correct netmask for them, if your network is
- subnetted.
-
- 2) set up the network route for each interface.
-
- 2a) For an Ethernet, this is the net or subnet to which it is
- attached, e.g.
-
- route add 128.6.0.0 dev eth0
-
- or if we set the subnet mask to 255.255.255.0 in the ifconfig (as we
- really should)
-
- route add 128.6.157.0 dev eth0
-
- 2b) For a point to point link, it is best to think about what traffic
- you want to send over the link. If many cases it will be the default.
- In that case you'll do
-
- route add default dev sl0
-
- In other cases, you may want to send all traffic for a specific network
- (e.g. the network to which the machine at the other end is attached).
- In that case use that network, e.g.
-
- route add 128.6.4.0 dev sl0
-
- This assumes that net 128.6 is subnetted, with a netmask of 255.255.255.0.
- If you haven't mentioned any subnet masks, then you'd want just the main
- network number, i.e.
-
- route add 128.6.0.0 dev sl0
-
- In the most general case, e.g. if you've got more than one interface,
- and want to use routed or gated to adjust routes dynamically, you may
- want a fixed route only for the specific host at the other end of the
- link. E.g.
-
- route add 128.6.4.54 dev sl0
-
- 3) Now create routes for any destinations not already mentioned. If
- you are running routed or gated, that will handle things for you.
- Otherwise, most likely you just need a default route, if you haven't
- already defined one.
-
- 3a) For Ethernet, a default route should point to a router on your
- Ethernet, e.g.
-
- route add default gw 128.6.157.1
-
- 3b) For a point to point line, a default route can simply point to the
- line itself. Since there's only one thing at the other end, there's
- no need to specify a gateway. E.g.
-
- route add default dev sl0
-
- 3c) If you have more than one interface, and want to route specific
- networks to specific interfaces, you can use several route statements
- like those in (3a) or (3b), each one mentioning a single network or
- host that you want to go a certain way. Examples:
-
- Ethernet:
-
- route add 128.6.5.0 128.6.157.2
-
- point to point:
-
- route add 128.6.26.0 dev sl0
-
- In the case of Ethernet, you have to send traffic to a specific router
- on the Ethernet. In the case of a point to point line, you just send
- it to the line. (The assumption is that the system at the other end
- of the line is a router. The line only goes one place.)
-
- This will work correctly if you've defined the correct netmask for all
- of your interfaces using ifconfig, and if all subnets on your network
- have the same netmask. This is normally true. If not, you'll need to
- give more attention to the netmasks.
-
- ABOUT SUBNET MASKS
-
- When you do something like
-
- route add 128.6.0.0 dev sl0
-
- this will send all traffic for network 128.6.0.0 out the slip line.
- But what is network 128.6.0.0? Is it every address starting with
- 128.6, or just addresses starting with 128.6.0? I.e. what "subnet
- mask" is used? (Actually, it's considered bad form to use subnet 0,
- so there would not be a subnet called 128.6.0.) The answer is that
- the Linux kernel will make some attempt to guess what you mean, but
- you may need to specify it. If the interface you're referring to has
- a subnet mask defined by ifconfig, and the destination matches the
- interface's address, it will use that subnet mask. Otherwise it will
- use the major network. That needs some examples:
-
- Let's suppose that eth0 has address 128.6.157.5 and netmask
- 255.255.255.0. That would have been set up using
-
- ifconfig eth0 128.6.157.5 netmask 255.255.255.0
-
- That netmask means that the network is subnetted, so that anything
- starting with 128.6.157 is considered to be on the subnet. Now
- suppose you say
-
- route add 128.6.2.0 gw 128.6.157.2
-
- This will send subnet 128.6.2 to gateway 128.6.157.2. Since the
- destination has the same major address (128.6) as the gateway, Linux
- uses the netmask for that interface, i.e. 255.255.255.0. This isn't a
- perfect heuristic. It assumes that all subnets on your network have
- the same netmask. But it's right for most places. If it isn't for
- you, you can specify the subnet mask explicitly:
-
- route add 128.6.2.0 gw 128.6.157.2 netmask 255.255.255.128.
-
- If you use a destination on a different major net, Linux has no
- way of knowing the subnet. So it will assume that the whole
- network is meant. E.g.
-
- route add 18.0.0.0 gw 128.6.157.2
-
- This says to send all of net 18 to gateway 128.6.157.2. Since we
- don't know anything about the netmask for net 18, we simply assume the
- whole network is meant. Again, you could specify an explicit subnet
- mask if necessary.
-
- COOKBOOK EXAMPLES
-
- I will give specific instructions for the two most common cases: a
- single Ethernet and a single SLIP line. If you have more than one
- interface, you're probably going to need to understand what's going
- on.
-
- For a single Ethernet, the simplest setup is
-
- ifconfig eth0 128.6.157.3 netmask 255.255.255.0
- route add 128.6.157.0 dev eth0
- route add default gw 128.6.157.1
-
- Of course you use your own addresses and mask:
-
- 128.6.157.3 is assumed to be the address of your system
- 255.255.255.0 is assumed to be the correct subnet mask for your network
- 128.6.157.0 is your local subnet (i.e. your address and'ed with your mask)
- 128.6.157.1 is asssumed to be the default router for your network
-
- Most of this information would be obtained from your network
- administrator.
-
- For a single SLIP connection, the simplest setup is
-
- use dip to enable the line. This does the equivalent of ifconfig.
- route add default dev sl0
-
- You don't really need to worry about setting up the subnet for SLIP if
- that's your only interface. In more complicated setups, you'll need
- to use ifconfig on sl0 to set the netmask.
-
-
-