Differences between current version and previous revision of HowToHomeNetworkminiHOWTO.
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Tuesday, October 26, 2004 10:12:23 am | by AristotlePagaltzis | |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:06:43 am | by perry | Revert |
@@ -1,1235 +1 @@
-
-
-
-Home-Network-mini-HOWTO
-
-
-
-----
-
-!!!Red Hat Linux 6.X as an Internet Gateway for a Home Network
-
-!!Paul Ramsey <pramsey@refractions.net>
-June 22, 2000
-
-
-----
-''A simple tutorial on configuring Red Hat 6 and related variants to operate
-as an internet gateway to a small home or office network. Topics covered include
-masquerading, DNS, DHCP, and basic security.
-''
-----
-
-
-
-
-!!1. Introduction
-
-
-*1.1 Versions
-
-*1.2 Copyright
-
-
-
-
-
-!!2. Plugging Things In
-
-
-*2.1 With a Hub
-
-*2.2 Without a Hub
-
-*2.3 With Only One Network Card
-
-
-
-
-
-!!3. Configuring Networking
-
-
-*3.1 Configuring a Network Driver
-
-*3.2 Configuring the Inside Network
-
-*3.3 Configuring the Outside Network
-
-*3.4 Security
-
-
-
-
-
-!!4. Configuring Masquerading
-
-
-
-
-!!5. Problems
-
-
-*5.1 ICQ Does Not Work
-
-*5.2 I Have Caldera 2.X Not Red Hat 6.X
-
-*5.3 I Want One of My Internal Machines to be my Web Server
-
-----
-
-!!1. Introduction
-
-
-This page contains a simple cookbook for setting up Red Hat 6.X as an internet
-gateway for a home network or small office network. The instructions are very
-simplified: no special cases will be discussed, and some assumptions will be
-made about which network addresses are to be used. The most important assumptions
-are:
-
-
-
-
-
-*You have a fulltime Cable or ADSL connection to the Internet.
-*
-
-*You can successfully install
-Red Hat 6.X on at least one of your computers. Note that
-these directions are also valid for Red Hat derivatives, such as
-Mandrake 6.X which is
-distributed by !MacMillan Publishing under a variety of labels.
-*
-
-*Your Linux computer has two network cards installed in it and both are
-compatible with Linux.
-*
-
-*You have an ethernet hub if you are networking more than one computer or
-a cross-over cable if you are only networking one computer.
-*
-
-*You know how to edit text files on your Linux machine.
-*
-
-*You can log into your machine as root. You know how to install RPM packages
-from your Linux CDROM.
-*
-
-
-
-If you do not meet any of these assumptions, then this document probably
-isn't for you.
-
-
-There is nothing special that you have to do during the installation process.
-Simply choose an installation which makes sense for you and go for it. This
-document gives directions on installing everything to do with networking from
-scratch, to avoid making any assumptions about what was installed or configured
-during installation. To ensure that things work and there is no confusion about
-what information goes where, all the configuration will be done by directly
-editing the system configuration files rather than using the GUI configuration
-tools provided with Red Hat. On the one hand, this might be a little harder
-than it has to be; on the other hand, your knowledge will be a good deal more
-transferable to different distributions and situations (like, what if X doesn't
-work, or you are setting up a headless server).
-
-!!1.1 Versions
-
-
-
-The latest version of this document should always be available at
-http://www.coastnet.com/~pramsey/linux/homenet.html for
-the HTML version and
-http://www.coastnet.com/~pramsey/linux/homenet.sgml for the SGML version.
-
-
-
-
-
-*December 21, 1999 : First version.
-*
-
-*January 2, 2000 : Incorporated suggestions from John Mellor on outside
-networking quirks.
-*
-
-*January 22, 2000 : Minor update about identical network cards and info
-on IP aliasing from Chris Lea.
-*
-
-*March 16, 2000 : Some information on name server security and on supporting
-Caldera from Nelson Gibbs.
-*
-
-*June 22, 1000 : Red Hat 6.2 configuration quirk documented. More PPPoE
-info from Kerr First.
-*
-
-
-!!1.2 Copyright
-
-
-
-Copyright © 2000, Paul Ramsey.
-
-
-This manual may be reproduced in whole or in part, without fee, subject
-to the following restrictions:
-
-
-
-
-
-*The copyright notice above and this permission notice must be preserved
-complete on all complete or partial copies.
-*
-
-*Any translation or derived work must be approved by the author in writing
-before distribution.
-*
-
-*If you distribute this work in part, instructions for obtaining the complete
-version of this manual must be included, and a means for obtaining a complete
-version provided.
-*
-
-*Small portions may be reproduced as illustrations for reviews or quotes
-in other works without this permission notice if proper citation is given.
-
-*
-
-
-
-Exceptions to these rules may be granted for academic purposes: Write to
-the author and ask. These restrictions are
here to protect us as authors, not
-to restrict you as learners and educators.
-----
-
-!!2. Plugging Things In
-
-
-Depending on whether you are using a hub or not, your network topology
-will differ slightly. I am only covering networking with RJ45 cabling (the
-stuff that looks like phone cables on steroids) and not covering thin coax.
-With thin coax you can network multiple machines without requiring a hub, but
-have to be more careful about terminating connections and so on. If you know
-networking already, these instructions will be largely redundant.
-
-!!2.1 With a Hub
-
-
-
-If you have a hub, your network will look like
-this.
-
-
-Connect the eth0 card on the Linux box to the cable modem or ADSL box using
-the cable supplied by the service provider during their install (or one you
-know works in that configuration. This is important because sometimes cable
-modems like to be connected with a crossover and sometimes they like a straight-through
-through cable: the one the company gives you is the one you want to use.
-
-
-Connect the eth1 card on the Linux box to the hub with a straight-through
-cable. Connect all your other computers to the hub with straight-through cables.
-
-!!2.2 Without a Hub
-
-
-
-If you do not have a hub, you can still connect one computer to your Linux
-box, using a crossover cable. Your topology will look like
-this.
-
-
-Connect the eth0 card on the Linux box to the cable modem or ADSL box using
-the cable supplied by the service provider. Connect the eth1 card on the Linux
-box to the other computer with a crossover cable.
-
-!!2.3 With Only One Network Card
-
-
-
-This is not a recommended configuration (in this configuration your internal
-and external networks are on the same physical network, and are therefor theoretically
-more susceptible to cracking; in reality, the risk is probably very low), but
-it ''can'' be done. Your mileage may vary.
-
-
-The Linux kernel includes support for "IP aliasing", which allows an ethernet
-card to service two different IP addresses simultaneously. The stock kernels
-shipped with Red Hat and Mandrake include support for IP aliasing by default.
-To set up your gateway with only one ethernet card, in all the subsequent code
-examples, simply replace eth1 with eth0:.
-
-
-''In a single-card situation, running a DHCP server is ''not'' recommended.''
-
-
-Plug all your machines and your cable modem or ADSL box into the hub. Cross
-your fingers and continue.
-----
-
-!!3. Configuring Networking
-
-
-OK, by now you have installed Linux on your gateway computer. You may have
-even configured one of your networking cards, and set up connectivity to the
-Internet. However, we are going to start from scratch and pretend that nothing
-is configured at all.
-
-
-Log in as root. All the instructions given in this document assume you
-are logged in as root.
-
-
-The Linux kernel refers to your two ethernet cards as eth0 and eth1, so
-that is how I'll be referring to them from now on too. The trouble is, which
-one is which? Here's a "simple" way of figuring out, guaranteed to
-work at least 50% of the time: lay your computer on the desk with the
-motherboard horizontal and the back panel facing you (as you would if you were
-going to open it and do some work on it). The leftmost card is eth0 -- you
-might want to label it with some masking tape. Now, write down on a piece of
-paper the make and model of both eth0 and eth1.
-
-
-OK, let's see if eth0 and eth1 are recognized automatically by the kernel.
-Type ifconfig eth0 and ifconfig eth1. In both cases, if the kernel is recognizing
-your card, you should see something like this (bearing in mind that the numbers
-and whatnot will be different):
-
-
-
-
-eth0 Link encap: Ethernet HWaddr 00:60:67:4A:02:0A
-inet addr:...0 Bcast:...0 Mask:255.255.255.255
-UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-RX packets:466 errors:0 dropped:0 overruns:0 frame:
-TX packets:448 errors:0 dropped:0 overruns:0 carrier:
-collisions:85 txqueuelen:100
-Interrupt:10 Base address:0xe400
-
-
-
-If the kernel is not recognizing your network card you will see something
-like this:
-
-
-
-
-eth0: error fetching interface information: Device not found.
-
-
-!!3.1 Configuring a Network Driver
-
-
-
-If both of your cards were found, skip to the next section. Otherwise,
-read this section.
-
-
-OK, so one or both of your cards are not recognized by the kernel. This
-is not a problem, really. What we're going to have to do is tell the kernel
-more explicitly how to find your cards. There are lots of twists and turns
-here, and I'm not going to cover all of them. Remember, when the going gets
-tough, the tough turn to the
-Ethernet HOWTO. Here's some summary advice:
-
-
-
-
-
-*''You have a PCI network card.'' You are probably sitting pretty, assuming
-it is not so new and cutting edge that no drivers exist. You can often find
-out a great deal about your network cards (and other things) by reading through
-/proc/pci and noting down makes and models.
-*
-
-*''You have an ISA network card.'' It is possible you will have to know the
-IO base address and the IRQ the card is operating on. You have manuals, right?
-Right? If not, this would be a good time to surf to the manufacturer's web
-site and see if they have any online references. Or if you have an old DOS
-configuration diskette, boot to DOS and see if there is a setup program which
-will read and set the address and IRQ.
-*
-
-*''You have an ISA Plug'n'Play card.'' You'll have to learn how to configure
-it first -- read the
-Plug'n'Play HOWTO. Fortunately, oncee you've configured your card you will
-know exactly what the IO base and IRQ are.
-*
-
-
-
-Now, since you know what the make and model of eth0 and eth1 are you can
-go to the
-compatibility page of the
-Ethernet HOWTO and look up your card. Take note of the recommended driver,
-and any information about special options your card may require. Write it down.
-
-
-It's time to edit a configuration file! The file we will be editing is
-/etc/conf.modules. Open this file up in the text editor of your choice. Because
-there are so many possibilities and combinations of things which can go in
-this file, I'm going to give my own gateway as an example. I have a PCI 10/100Mb
-card based on the VIA Rhine chip, and a plain-jane 10Mb NE2000 ISA clone. I
-use the 100Mb card for the internal network and the 10Mb card for the external
-connection. My /etc/conf.modules file looks like this:
-
-
-
-
-alias parport_lowlevel parport_pc
-alias eth0 ne
-options ne io=0x300 irq=10
-alias eth1 via-rhine
-
-
-
-My conf.modules file is laid out as follows:
-
-
-
-
-
-*The first line is there to configure my parallel port for printing. You
-probably have a similar line. Leave it alone.
-*
-
-*The second line (alias eth0 ne) tells the kernel to use the ne driver for
-the eth0 device.
-*
-
-*The third line (options ne io=0x300 irq=10) tells the ne driver at which
-io address and irq interrupt it will find the ISA card at. If you have ISA
-cards you will probably have to use this kind of directive, just replace the
-driver, io and irq directives with the correct information for your card.
-*
-
-*The fourth line (alias eth1 via-rhine) tells the kernel to use the via-rhine
-driver for eth1. Because my eth1 card is a PCI card, I do not need to provide
-io or irq information: the PCI subsystem configures the device automatically.
-*
-
-
-
-You will want to ensure that you have alias entries in conf.modules for
-both your cards, and correct options lines for all your ISA cards. You may
-already have lines in conf.modules for any ethernet cards you configured during
-installation.
-
-
-When you have finished editing conf.modules, try ifconfig eth0 and ifconfig
-eth1 again. You may have to apply some trial and error if you are messing with
-IO addresses and IRQs without a manufacturers manual.
-
-!Two Identical Network Cards
-
-
-So, you were really really smart, bought two identical network cards for
-your Linux gateway, and now you cannot get them to work together? Do not worry,
-getting them to coexist is just a matter of using the correct syntax in /etc/conf.modules.
-For this example, the addresses and IRQ numbers are made up, and I will assume
-that you have bought a matched pair of NE2000 clones (a common choice). Your
-/etc/conf.modules file should look like this:
-
-
-
-
-alias eth0 ne
-alias eth1 ne
-options ne io=0x330,0x360 irq=7,9
-
-
-
-The addressing options are all given on the same line, and the first number
-for each addressing type is for eth0, the second number for eth1.
-
-!!3.2 Configuring the Inside Network
-
-
-
-The "inside network" is the network which all your home/office
-machines will talk on. The "outside network" is the big scary internet
-on the other side of the Linux box. By and large, the inside network will be
-completely insulated from the outside network by the Linux box, which will
-operate as a medium strength firewall.
-
-!The Network Device
-
-
-Now that your drivers are working and you can see both eth0 and eth1 in
-ifconfig it is time to set up the internal home network. I am assuming that
-you are going to put your internal network on eth1 and your external device
-on eth0.
-
-
-Your internal network is going to be a private network and will therefor
-be on a special network reserved for internal networking: 192.168.1.. This
-is a "private Class C network", in case you want to impress your
-friends.
-
-
-First we need to make sure networking is turned on. Edit the file /etc/sysconfig/network
-and make sure the following lines exist:
-
-
-
-
-NETWORKING=yes
-FORWARD_IPV4=yes
-
-
-
-The first line tells Linux that we want the network devices brought up
-at boot time. The second line tells Linux to enable IP forwarding. This is
-required when we start configuring masquerading in Section 4.
-
-
-''Redhat 6.2 Note:'' In order to properly support IP forwarding and masquerading,
-Red Hat 6.2 requires changes to the /etc/sysctl.conf file. Make sure the following
-lines exist and are set to the correct values:
-
-
-
-
-net.ipv4.ip_forward = 1
-net.ipv4.ip_always_defrag = 1
-
-
-
-All the network interface settings for Red Hat and Red Hat derivatives
-are contained in files in the /etc/sysconfig/network-scripts directory. Enter
-that directory, and create a new file ifcfg-eth1. Put the following into the
-ifcfg-eth1 file:
-
-
-
-
-DEVICE=eth1
-IPADDR=192.168.1.1
-ONBOOT=yes
-
-
-
-This code tells the networking scripts to configure eth1 at boot time and
-to give it a particular IP address. Activate your network with the new settings
-with the following command: /etc/rc.d/init.d/network restart
-
-!The DHCP Server
-
-
-A DHCP server will automatically configure devices on your internal home
-network with IP addresses. This is very useful for people with laptops: they
-can simply plug their machines in and be immediately properly configured. If
-you do not want a DHCP server on your internal network, just skip to the next
-section.
-
-
-First you need to be sure you have the DHCP server installed. Mount your
-Linux CD and install the dhcp RPM. Now edit the /etc/dhcpd.conf file and put
-the following (and only the following) in it:
-
-
-
-
-subnet 192.168.1.0 netmask 255.255.255.0 {
-range 192.168.1.2 192.168.1.60;
-default-lease-time 86400;
-max-lease-time 86400;
-option routers 192.168.1.1;
-option ip-forwarding off;
-option broadcast-address 192.168.1.255;
-option subnet-mask 255.255.255.;
-}
-
-
-
-If you are going to set up your Linux box as a caching domain name server,
-insert the following option:
-
-
-
-
-option domain-name-servers 192.168.1.1;
-
-
-
-If you know your outside DNS addresses and you are ''not'' going to use the
-Linux box for DNS, insert the following option, where x.x.x.x and y.y.y.y are
-IP numbers of the DNS servers:
-
-
-
-
-option domain-name-servers x.x.x.x, y.y.y.y;
-
-
-
-If you are going to run Samba file sharing on the Linux box for your Windows
-computers, add the following options to use the Linux box as the default WINS
-and browsing server:
-
-
-
-
-option netbios-name-servers 192.168.1.1;
-option netbios-dd-server 192.168.1.1;
-option netbios-node-type 8;
-option netbios-scope "";
-
-
-
-Configuring Samba and WINS is well beyond the scope of this document. If
-you need some pointers, start with the
-SMB HOWTO and go on from there.
-
-
-There are still a few more steps. Next, edit the /etc/rc.d/init.d/dhcpd
-file and look for the following line:
-
-
-
-
-/sbin/route add -host 255.255.255.255 dev eth1
-
-
-
-Windows DHCP clients require a particular broadcast address in DHCP responses,
-and this command forces the Linux TCP/IP stack to produce it. If you cannot
-find that line in the file, ''add it''. If you ''do'' find a line like that one, make
-sure that the device it references is eth1.
-
-
-The next step is to alter the /etc/rc.d/init.d/dhcpd file to use eth1 as
-the default device. Replace the line:
-
-
-
-
-daemon /usr/sbin/dhcpd
-
-
-
-With:
-
-
-
-
-daemon /usr/sbin/dhcpd eth1
-
-
-
-OK, now we are ready to start up DHCP. First start the DHCP server with
-the command: /etc/rc.d/init.d/dhcpd start.
-
-
-Finally, we have to make sure that the DHCP server will start at re-boot
-time. Some RPM packages of the DHCP server do not include directives to ensure
-the server starts every time, so we'll make sure it gets started by invoking
-the command chkconfig dhcpd on.
-
-
-This command causes !RedHat to add the dhcp startup script to the various
-runlevel directories under /etc/rc.d. In runlevels 3 and 5 (multiuser console
-and multiuser X) the DHCP server is started. In runlevels , 1 and 6 (shutdown,
-single user and reboot) the DHCP server is stopped.
-
-!The Client Computers
-
-
-If you have set DHCP up, configuring your client computers is very easy:
-just enable DHCP configuration. For Windows computers, this involves opening
-the "Control Panel" and then the "Networking" option. Find
-the "TCP/IP" protocol and opt to "Configure" it. Check
-the box that says to "Configure TCP/IP address automatically", apply
-your changes, and reboot.
-
-
-Before you reboot, you might want to type the following command: tail -f
-/var/log/messages. This will watch the Linux system log continuously. If all
-goes well, when you reboot your Windows computer, you will see it request an
-IP address and see the DHCP server respond. Control-C exits the tail -f command.
-
-
-If you have not set up DHCP, configuration is still fairly easy. Again,
-open the "Networking" option from the "Control Panel",
-and choose to configure the TCP/IP protocol. You can assign your client computers
-any address in the 192.168.1.0 network except 192.168.1.0 (the network address),
-192.168.1.255 (the broadcast address) or 192.168.1.1 (your Linux server). Never
-give two computers the same IP address. Set the "Gateway" address to 192.168.1.1,
-so that outgoing traffic is routed through your Linux gateway.
-
-
-The
-IP Masquerading HOWTO has very detailed information on client configuration in the
-Configuration Section.
-
-
-In general, to configure a client computer, either enable DHCP configuration,
-or manually assign it an address in the 192.168.1.X network with a gateway
-of 192.168.1.1. Let the DNS server be either 192.168.1.1 if you are running
-a caching DNS server (see below) or point the DNS at the addresses assigned
-by your network provider.
-
-!The DNS Server
-
-
-Setting up your Linux box as a caching DNS server will (slightly) improve
-your netsurfing speed, because commonly used DNS addresses will get cached
-inside your network and not have to be retrieved from the outside.
-
-
-If you are interesting in doing full blown DNS, there is a great deal of
-complexity to be learned. There is a
-DNS HOWTO available, and the book
-DNS and BIND is a good (and
-very comprehensive) paper reference.
-
-
-In order for your client machines to take advantage of the caching server,
-they must be configured to use the Linux gateway as their primary DNS server.
-The DHCP directives given in section 3.2.2 are one way to accomplish this.
-If you are configuring your client computers by hand, you can change the DNS
-configurations in the same control tabs you used to set the IP address of the
-machine.
-
-
-To install the DNS server, first install the bind RPM, then install the
-caching-nameserver RPM. At this point, you are almost ready.
-
-
-As installed, the caching server will work fine, but if you know the IP
-addresses of the internet providers DNS servers you can improve performance
-slightly by editing the /etc/named.conf file and adding the following line
-after the directory line (where x.x.x.x and y.y.y.y are the primary and secondary
-DNS servers):
-
-
-
-
-forwarders { x.x.x.x; y.y.y.y; };
-
-
-
-This change makes your DNS server first query the ISPs DNS servers before
-traversing the internet in search of a given address. The ISPs servers often
-have a rich cache of DNS information and can provide a much faster answer than
-your server could.
-
-
-The named daemon has had some security problems over the past 12 months,
-so it is very important that you have the latest version running, and make
-some changes to the default settings to enhance security.
-
-
-
-
-
-#Check your version of bind and make sure it is at least 8.2.2. Go to the
-Red Hat Updates or
-Mandrake Updates sites to check for the latest version.
-#
-
-#Restrict access to your name server to just the local network by adding
-the line allow-query { 192.168.1/24; 127...1/32; }; to the /etc/named.conf
-file after the forwarders line.
-#
-
-#Avoid running your name server as root. If your server is running as root,
-an exploit of the server will grant the exploiter root privledges. If you run
-the server as a powerless user, like nobody, you can lower the risk of a name
-server exploit. To run your name server as nobody, edit the /etc/rc.d/init.d/named
-file and change the line daemon named to daemon named -u nobody -g nobody.
-#
-
-
-
-Make sure your DNS server will start at boot time: chkconfig named on.
-Again, this ensures that the server will start in the usual runlevels (3 and
-5) at boot time.
-
-
-OK, now you can start your DNS server: /etc/rc.d/init.d/named start
-
-!Testing the Inside Network
-
-
-Until we configure the outside network, the DNS service will not work (since
-it has to communicate with other DNS servers on the internet), but we can test
-out the basic internal connectivity with the ping program.
-
-
-On one of your client computers, open up a terminal (MSDOS) window, and
-type ping 192.168.1.1. This will send out packets to your Linux computer at
-regular intervals, and your Linux computer will reflect the packets back. If
-things are working right, you should see a set of packet return times.
-
-!!3.3 Configuring the Outside Network
-
-
-
-Now we're ready to configure the outside network. Sometimes this will be
-difficult, depending on how well your internet provider supports Linux. If
-you have difficulty, there is an
-ADSL mini-HOWTO which covers ADSL issues in some detail.
-If I can find a Cable Modem HOWTO, I will link to it also.
-
-
-The main problem with most outside connections is ''getting an IP address''.
-Some internet providers hand out static IP addresses to cable or ADSL subscribers,
-and in that case configuration is easy. However, most providers have now moved
-to dynamic configuration via (you guessed it) DHCP. This means that your Linux
-computer will likely be a DHCP ''server'' on your eth1 interface, and a DHCP ''client''
-on your eth0 interface.
-
-
-Additionally, many providers have taken to providing their services in
-specialized non-standard ways which assume their customers will be using Windows.
-Some of those cases will be discussed at the end of section 3.3.2.
-
-!With a Static IP
-
-
-If your internet provider has assigned you a static IP address, you are
-sitting pretty. First, create a new interface configuration file, /etc/sysconfig/network-scripts/ifcfg-eth0
-and put the following in it:
-
-
-
-
-DEVICE=eth0
-IPADDR=x.x.x.x
-NETMASK=y.y.y.y
-ONBOOT=yes
-
-
-
-Just fill in x.x.x.x and y.y.y.y with the values given by your internet
-provider. Now edit the /etc/resolv.conf file and enter the following information:
-
-
-
-
-search provider_domain_here
-nameserver n.n.n.n
-nameserver m.m.m.m
-
-
-
-The provider_domain should be supplied by your internet provider. Also
-enter the primary and secondary DNS servers in the n.n.n.n and m.m.m.m lines.
-If you have set up the Linux box as a DNS server, you can add a line before
-the other nameserver entries: nameserver 127...1. This will make your Linux
-server use the caching server before asking the outside servers for DNS information.
-
-!With DHCP
-
-
-If your internet provider uses DHCP configuration, you need to create a
-new interface configuration file, /etc/sysconfig/network-scripts/ifcfg-eth0and put the following in it:
-
-
-
-
-DEVICE=eth0
-BOOTPROTO=dhcp
-ONBOOT=yes
-
-
-
-Now make sure that the dhcpcd client daemon is installed on your system.
-Go to your Linux CD and install the dhcpcd RPM package.
-
-
-It's time to test your new network configuration. Just use the command
-/etc/rc.d/init.d/network restart. Now test your outside connection with ping.
-Ping a computer on the internet, like www.yahoo.com and see if anything comes
-back.
-
-!Quirks and Anomalies
-
-
-Your situation may differ from the very simple situations described above.
-Here are some short remarks on the various difficulties and links to more authoritative
-resources and addressing them. Thanks to John Mellor for supplying the links
-and impetus for adding this section.
-
-!PPP Over Ethernet (PPPoE)
-
-
-Several ADSL providers (Bell Atlantic, for example) are now insisting that
-their new customers connect to the service using the "PPP over Ethernet"
-protocol (PPPoE). To this end, they provide a Windows client program: not very
-useful for Linux users. Fortunately, PPPoE is a simple protocol and several
-efforts are underway to support it under Linux.
-
-
-
-
-
-*The
-Roaring Penguin PPPoE Client comes highly recommended by reader Kerr First.
-*
-
-*
-PPPoE on Linux for Bell Sympatico
-*
-
-*PPPoE on Linux for Sympatico (
-General Info) (
-Linux Info)
-*
-
-
-!Stupid DHCP Tricks
-
-
-One of the favorite tricks network providers play is to tie your service
-to a unique hostname, or even a unique network interface card. This is presumably
-to keep you from plugging multiple computers into your ethernet port using
-a hub (of course, by using Linux and Masquerading you're getting the same effect
-with better security and the cable company has no way of knowing!).
-
-
-If the provider has given you a hostname and insisted that you set your
-Windows box with that name in order you use their service, then you'll have
-to make sure that your Linux box sends in that hostname when requesting an
-address from the DHCP server.
-
-
-The Red Hat DHCP client is called when you set the BOOTPROTO to dhcp in
-the interface configuration file, but it is called without reference to a hostname.
-To call the program with a hostname, in Red Hat 6.1, edit the /etc/sysconfig/network
-file, and change the line:
-
-
-HOSTNAME=
-
-
-To read this:
-
-
-HOSTNAME=your_isp_assigned_name
-
-
-This may not work in some of the Red Hat variants. If it does not work,
-check the /sbin/ifup script and see if the call to dhcpcd and pump include
-a -h $HOSTNAME switch. If they do not, add them, so the calls look like
-/sbin/dhcpcd -i $DEVICE -h $HOSTNAME and /sbin/pump -i $DEVICE
--h $HOSTNAME.
-
-!Road Runner
-
-
-The Road Runner cable service has a special login process which must be
-run before the server can be used. Fortunately, a detailed
-Linux Road Runner HOWTO is available.
-
-!Looking at the Network Entries
-
-
-Now you can admire your work. Type ifconfig to see all your configured
-devices. On my gateway computer, it looks like this:
-
-
-
-
-eth0 Link encap:Ethernet HWaddr 00:60:67:4A:02:0A
-inet addr:24.65.182.43 Bcast:24.65.182.255 Mask:255.255.255.
-UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-RX packets:487167 errors:0 dropped:0 overruns:0 frame:
-TX packets:467064 errors:0 dropped:0 overruns:0 carrier:
-collisions:89 txqueuelen:100
-Interrupt:10 Base address:0xe400
-eth1 Link encap:Ethernet HWaddr 00:80:C8:D3:30:2C
-inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.
-UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-RX packets:284112 errors:0 dropped:0 overruns:0 frame:1
-TX packets:311533 errors:0 dropped:0 overruns:0 carrier:
-collisions:37938 txqueuelen:100
-Interrupt:5 Base address:0xe800
-lo Link encap:Local Loopback
-inet addr:127...1 Mask:255...
-UP LOOPBACK RUNNING MTU:3924 Metric:1
-RX packets:12598 errors:0 dropped:0 overruns:0 frame:
-TX packets:12598 errors:0 dropped:0 overruns:0 carrier:
-collisions:0 txqueuelen:
-
-
-
-Note that the eth0 interface has a fancy outside IP address, and the eth1
-address has a private internal address.
-
-
-You can look at the network routes by typing the route command. On my gateway
-computer it looks like this:
-
-
-
-
-Kernel IP routing table
-Destination Gateway Genmask Flags Metric Ref Use Iface
-255.255.255.255 * 255.255.255.255 UH 0 0 0 eth1
-192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
-24.65.182.0 * 255.255.255.0 U 0 0 0 eth0
-127...0 * 255...0 U 0 0 0 lo
-default 24.65.182.1 ...0 UG 0 0 0 eth0
-
-
-
-Here we can see the outside network is set up, the inside network is set
-up, the local device is set up, the special 255.255.255.255 broadcast address
-is set up, and the default route is set up to point to the internet providers
-gateway. Perfect!
-
-
-Now you have the outside, and the inside. All the remains is to open the
-door between the two. First though, we have to make sure no monsters can get
-in from the outside.
-
-!!3.4 Security
-
-
-
-One of the drawbacks of being permanently connected to the internet via
-ADSL or cable is that your computer is exposed to potential security threats
-24 hours a day, 7 days a week. Using Linux as a gateway reduces the risks,
-because it hides all your other computers: as far as the rest of the internet
-is concerned, only your Linux box is available for connections. This means
-that your network is only as secure as your Linux box, so at this point I'll
-give a few basic tips to make your box more secure.
-
-
-First, you need to shut out all the bad guys. To do this, edit the file
-/etc/hosts.deny and make sure it looks just like this:
-
-
-
-
-#
-# hosts.deny This file describes the names of the hosts which are
-# *not* allowed to use the local INET services, as decided
-# by the '/usr/sbin/tcpd' server.
-#
-# The portmap line is redundant, but it is left to remind you that
-# the new secure portmap uses hosts.deny and hosts.allow. In particular
-# you should know that NFS uses portmap!
-ALL: ALL
-
-
-
-This tells the "TCP wrappers" -- which control 95% of
-incoming connections -- to deny all connections from all hosts. That's a pretty
-good rule! But, it will also keep you from connecting to your Linux box from
-inside your home network, which is annoying, so we will make one exception.
-Edit the file /etc/hosts.allow and make sure it looks just like this:
-
-
-
-
-#
-# hosts.allow This file describes the names of the hosts which are
-# allowed to use the local INET services, as decided
-# by the '/usr/sbin/tcpd' server.
-#
-ALL: 127...1
-ALL: 192.168.1.
-
-
-
-This tells the "TCP wrappers" that they can allow connections
-to all services from the local device (127...1) and from your home network
-(192.168.1.).
-
-
-You have now locked the monsters outside, with a strong padlock. If you
-want to put up bars and alarm systems, you will have to be alot more sophisticated.
-The
-Security HOWTO is a good place to start if you want to learn more about securing your
-Linux box.
-----
-
-!!4. Configuring Masquerading
-
-
-All right! The preliminaries are over, this is where the magic begins.
-IP masquerading is one of the truly magical services Linux provides. There
-are commercial products for Windows which do the same thing, but not nearly
-as efficiently: an ancient 386 can merrily provide IP masquerading services
-to a whole medium sized office, but cannot even run Windows 95, let alone the
-add on masquerading package. (As an addendum, I read in some recent reviews
-that Windows 2000 will support "connection sharing" without addon software. It
-looks like the companies which sold connection sharing software have been "embraced
-and extended" by !MicroSoft. However, I wouldn't recommend you try the Windows
-2000 solution on a 386.)
-
-
-Linux has an extremely versatile firewalling capability, and we are going
-to be using it in the simplest and crudest possible manner. If you want to
-learn how to do firewalling like an expert, you should read both the
-Firewalling HOWTO for an
-understanding of the theory and the
-IPChains HOWTO for instructions on the new ipchains firewalling
-tool which ships with the Linux 2.2.X kernel (and by extension Red Hat 6.X).
-There is also now a very good
-IP Masquerading HOWTO available which has more details on masquerading
-tweaks.
-
-
-Configuring simple masquerading is very very easy once your internal and
-external networking is operational. Edit the /etc/rc.d/rc.local file and add
-the following lines to the bottom:
-
-
-
-
-# 1) Flush the rule tables.
-/sbin/ipchains -F input
-/sbin/ipchains -F forward
-/sbin/ipchains -F output
-# 2) Set the MASQ timings and allow packets in for DHCP configuration.
-/sbin/ipchains -M -S 7200 10 60
-/sbin/ipchains -A input -j ACCEPT -i eth0 -s /0 68 -d /0 67 -p udp
-# 3) Deny all forwarding packets except those from local network.
-# Masquerage those.
-/sbin/ipchains -P forward DENY
-/sbin/ipchains -A forward -s 192.168.1./24 -j MASQ
-# 4) Load forwarding modules for special services.
-/sbin/modprobe ip_masq_ftp
-/sbin/modprobe ip_masq_raudio
-
-
-
-The last two lines insert kernel modules which allow FTP and !RealAudio
-to work for computers on the inside network. There are other modules for special
-services which you can tack on if you need them:
-
-
-
-
-
-*CUSeeMe (/sbin/modprobe ip_masq_cuseeme)
-*
-
-*Internet Relay Chat (/sbin/modprobe ip_masq_irc)
-*
-
-*Quake (/sbin/modprobe ip_masq_quake)
-*
-
-*VDOLive (/sbin/modprobe ip_masq_vdolive)
-*
-
-
-
-Now you're ready to try masquerading! Run the rc.local script with the
-command /etc/rc.d/rc.local and you are ready to go! Sit down at one of your
-other computers and try some web surfing. With any luck, everything is now
-hunky dory.
-----
-
-!!5. Problems
-
-
-There are lots and lots of things which can go wrong using a simple document
-like this, because there are plenty of special cases. The majority of possible
-problems adhere to the configuration of the internal and external network devices.
-I will try and respond to people with problems, figure out what went wrong
-and add links down here so that people with special case problems can track
-down help. Feel free to contact me at
-pramsey@refractions.net.
-
-!!5.1 ICQ Does Not Work
-
-
-
-Some portions of ICQ work fine over masquerading. Other portions do not
-work well at all. There is a
-beta quality ICQ module under development, however, which addresses some
-(but not all) of the deficiencies of running ICQ over masquerading. The README
-file in the source code distribution describes how to compile the module. Once
-you have it compiled and installed, invoke /sbin/modprobe ip_masq_icq.
-
-!!5.2 I Have Caldera 2.X Not Red Hat 6.X
-
-
-
-Well, firstly congratulations for bucking the trend! Secondly, Nelson Gibbs
-(ngibbs@pacbell.net) sends good news, because most of these instructions will
-work for you. There are some important changes to note however:
-
-
-
-
-
-#A GATEWAY=xxx.xxx.xxx.xxx statement in /etc/sysconfig/network-scripts/ifcfg-eth0
-& eth1 for the interface (local interface uses remote interface IP address
-and remote interface uses service provider's gateway IP).
-#
-
-#Make sure /etc/sysconfig/daemons/dhcpd script lists ROUTE_DEVICE as eth1
-''not'' eth0.
-#
-
-#/etc/dhcpd.conf requires a subnet statement for both interfaces (I'm not
-entirely sure why as I made my second statement : subnet 216.102.154.201 netmask
-255.255.255.255 { } with no other options and the DHCP server listens
-and sends on eth0 and eth1 as well as the fallback). The DHCP server errors
-out if only one subnet is listed.
-#
-
-#Do ''not'' add host route 255.255.255.255, the /etc/rc.d/init.d/dhcpd script
-Caldera uses already fixes the problem. ''DO'' make sure to change all references
-to eth0 in the script to eth1.
-#
-
-
-!!5.3 I Want One of My Internal Machines to be my Web Server
-
-
-
-Piece of cake! However, ''you need to have a static IP address'' for this easy
-set of directions to work. If you have a dynamic IP address, you will need
-some additional scripting to ensure that your IP address gets updated in the
-port forwarding commands when the address changes.
-
-
-Bear in mind, forwarding an external port to an inside machine makes your
-"internal" machine less "internal" than before, but it can be done very transparently
-and with little or no performance degredation. One of the side effects of the
-IP masquerading code in the Linux kernel is the ability to do some pretty funky
-stuff with packets as they hit the network layer, and the ipmasqadm utility
-is built to take advantage of that.
-
-
-For some reason ipmasqadm is not shipped with all the Red Hat and Mandrake
-variants, so will probably have to retrieve it from the maintainer's
-web site -- there
-is an
-RPM available there as well as source code.
-
-
-Once you have the RPM, install it, and then add the following lines to
-your /etc/rc.d/rc.local file:
-
-
-
-
-/usr/sbin/ipmasqadm portfw -f
-/usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80
-
-
-
-The first command flushes the port forwarding rules and the second command
-adds a forward from port 80 on the external interface to port 80 on the internal
-machine. Note that the external static IP address goes in the x.x.x.x space
-and the internal machine IP address goes in the 192.168.1.x space.
-
-
-Now external requests for port 80 will be transparently sent to port 80
-of the internal machine. Note that you cannot test this by telnetting or connecting
-to your gateway's port 80 from one of your inside machine: the port forwarder
-only honors requests coming in on the ''external'' interface
.
-----
+Describe [HowToHomeNetworkminiHOWTO]
here.