home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Edition 1: Linux / CD1.iso / doc / HOWTO / mini / Netscape+Proxy < prev    next >
Text File  |  1998-10-14  |  37KB  |  1,043 lines

  1.  
  2.    -->
  3.    
  4.                           HOW-TO FOR INHOUSE INTRANET
  5.                                        
  6. Author: Sarma Seetamraju
  7. EMail: (sarma@usa.net)
  8. Date: August 1997
  9.  
  10.   Place: on the Amtrack and Path Trains on the way to Downtown Manhattan.
  11.   Notepad Used: a 16-Mhz 386 SX circa 1991 Magnavox notebook running linux.
  12.   (Just to show that if you ever complain about linux not running AS IS
  13.   on your computer, I am going to shove that computer up your .... )
  14.   
  15.     Reformatted as HTML for: All abnormal people who cannot stand illegible
  16.     plain text.
  17.     
  18.  Important: SOCKS is a FREE package for UNIX systems. I doubt its available for
  19. OTHER platforms. If you wish to influence NETSCAPE to keep supporting SOCKS,
  20. email me with your supporting statement (saying how you are using SOCKS).
  21.  
  22.    
  23.      _________________________________________________________________
  24.    
  25.    This document describes the procedure to set up a NETWORK (INTRANET)
  26.    at your home. Then we shall setup up the network such that NETSCAPE
  27.    Clients can be used on ANY machine to access the internet...
  28.    
  29.    The network we are talking about,
  30.      * has TWO or more computers...
  31.      * wherein, there is ONE (ONLY ONE) linux machine
  32.      * and the rest are Win95 or WinNT machines. (I doubt things will be
  33.        any different for a MACintosh).
  34.      * Only the LINUX machine has PPP access to the internet. The other
  35.        machines MAY have modems. I shall ignore those modems.
  36.      * if ANY of your clients are UNIX machines, you are perhaps better
  37.        off reading the "sockd" package's documentation, since you may be
  38.        needing the use of "rlogin", "ftp" etc... from within the UNIX
  39.        CLIENTS. This document will not help you in that aspect.
  40.      * The computer network is assumed to be TCP/IP over ethernet. No
  41.        netbeui, etc...
  42.        
  43.    _The "single linux" machine will be referred to as the "LINUX SYSTEM".
  44.    while all others are referred to as "OTHER MACHINES" or also as
  45.    "CLIENT MACHINES". The linux machine is also referrred to as the
  46.    "SERVER" sometimes._
  47.      _________________________________________________________________
  48.    
  49.    If you do not understand the next para, then jump to the FOR NETWORK
  50.    NOVICES ONLY section. Then come back here...
  51.    
  52.    All of the following assumes that there is an IP address assigned
  53.    (using "ifconfig") to the eth0 port of your LINUX server.
  54.    
  55.    Also, matter, this document does not restrict you to PPP only (it
  56.    could be SLIP, PPTP, etc...) The IP address of the "ppp0" port is
  57.    absolutely irrelevant. This document assumes you have one such port,
  58.    and that its UP.
  59.    
  60.    
  61.      _________________________________________________________________
  62.    
  63.    _WHY WE NEED SUCH AN ARRANGEMENT:_
  64.      * The linux machine is to be used to connect to the world. Only the
  65.        linux machine has a REAL-WORLD IP address. (see below). (see
  66.        "ON-LINE services" section below). The linux machine has a
  67.        non-persistent PPP link to the world.
  68.      * The other machines in the network have IP addresses that are
  69.        either invalid or are unknown to the world.
  70.      * You need to use the "Other Machines", and NOT the linux machine to
  71.        access the internet, VIA NETSCAPE ONLY.
  72.      * I have no need to "telnet" or FTP directly from the "other m/c" to
  73.        the world. If I ever need to, I telnet manually into the linux
  74.        machine, and then into the world.
  75.        
  76.    I did NOT want to spend much on a linux m/c that didn't run an X
  77.    server (much less any X applications). I bought a 486Dx/4 100 Mhz PCI
  78.    board (since I didn't want to be stuck with plain ISA slots), with a
  79.    $20 SVGA card and a $20 NE2000 compatible card, and an extra 20$ for
  80.    terminators+co-ax ('cos I didn't know how to convert a regular
  81.    Ethernet Hub connecter into a pt-2-pt connector).
  82.    
  83.    And $90 worth of memory (it went all the way to $60 for 16megs) and I
  84.    had a fully functional linux system for $270. Don't intend to burden
  85.    that system with NT or any other memory-disk-cpu hogging OSes.
  86.    Ofcourse, my client machine is a 32-meg P100 machine with two hard
  87.    disks (one of which was transplanted as a linux machine's HD) and runs
  88.    95.
  89.    
  90.    The linux system is sitting on top of a clean PizzaHut pizza box. I
  91.    couldn't affort another $50 for a tower, since I was getting a power
  92.    supply module from one of my friends.
  93.    
  94.    
  95.      _________________________________________________________________
  96.    
  97.    _The reason I chose NETSCAPE_ is that I no longer use FTP manually.
  98.    Its simply, out of fashion. Every ftp site, worth its name and every
  99.    company, has a web site that lets me use the Netscape browser to
  100.    access their ftp site. I do need to telnet frequently, but go thru the
  101.    trouble of going from my win95/winNT4.0 machine to the linux machine,
  102.    and from there... Secondly, I am hooked to QuickTime and all those net
  103.    audio sites. And LINUX versions of those tools, do not exist. So, I
  104.    have to run stuff from Netscape ON windows platforms. And my LINUX
  105.    machine recvs EMail using sendmail... (remember, I have a fixed IP
  106.    address. Such fixed IP addresses are better ONLY for things like
  107.    recving email. Its no benefit for Surfing, Telnetting, etc...)
  108.    
  109.    Lastly, we will never have a "Microsoft Explorer Browser" for linux,
  110.    and hence I never even considered using Explorer. Also something tells
  111.    me that its NOT going to be this easy to configure the Explorer as it
  112.    was to configure the NETSCAPE on the CLIENT machines (i.e., the other
  113.    machines).
  114.      _________________________________________________________________
  115.    
  116.    
  117.    
  118.   PROXY SERVER
  119.   
  120.    
  121.    
  122.    I am not giving directions to installing a PROXY server. This is about
  123.    installing a "socks" facility on the LINUX machine, which NETSCAPE on
  124.    the client machines can use to access the internet. NETSCAPE (as far
  125.    as I know) is the ONLY application that runs on NON-UNIX machines and
  126.    is aware of the SOCKS facility.
  127.      _________________________________________________________________
  128.    
  129.    
  130.    
  131.   INTERNET Addresses
  132.   
  133.    
  134.    
  135.    If you have a TCP/IP network, then you MUST have ATLEAST two IP
  136.    addresses for the machines (one for the LINUX machine and another for
  137.    the one of the Client Machines, and more IP addresses if you have more
  138.    than one client machine).
  139.    
  140.    Read the other HOW-TOs on how to assign IP addresses to ALL your
  141.    machines on the TCP/IP network. (ESPECIALLY IF YOU DO NOT have a
  142.    REGISTERED internet domain).
  143.    
  144.    I created a network 10.0.1.x out of the single LINUX machine and the
  145.    single Win95 machine. They were assigned 10.0.1.1 and 10.0.1.2
  146.    respectively. The 10.0.1.1 is the IP address of the ETHERNET port
  147.    (eth0) of the LINUX machine. The ppp0 port has another IP (which
  148.    [lucky me] has a fixed IP address). That IP address is irrelevant to
  149.    us, and also, being withheld for security reasons.
  150.    
  151.    I also have a fixed domain name server on the other end of the PPP
  152.    link. (University machine).
  153.    
  154.    The linux machine has a modem and CRONTAB entries, that automatically
  155.    dial up to the internet at fixed times daily. I also manually connect
  156.    to the internet, when I want to go surfing.
  157.    
  158.    If you connect to the internet via ON-LINE services, see below...
  159.      _________________________________________________________________
  160.    
  161.    
  162.    
  163.   ON-LINE services
  164.   
  165.    
  166.    
  167.    If you connect to the world using ON-LINE services like AOL,
  168.    Compuserve, Sprynet, Netcom etc... then you may NOT have a fixed IP
  169.    address. That is of little relevance in getting your intrAnet hooked
  170.    up to the world. If you do not believe that, I request you to read
  171.    on... and become a believer...
  172.      _________________________________________________________________
  173.    
  174.    
  175.    
  176.   Some Background Information
  177.   
  178.    
  179.    
  180.    (For those who are like me and want to know what the hell is
  181.    happening...). Others may skip this section....
  182.     1. ... since you have ONLY one ethernet network, you do NOT need
  183.        routing within that network. And you perhaps have manually
  184.        hardcoded the IP addresses ( 10.0.1.1, 10.0.1.2 ) of ALL your
  185.        machines in /etc/hosts. If you did that, you are smart person.
  186.        Using "named" for a two or three computer network at home, is like
  187.        using the bulldozer instead of a spoon to eat.
  188.     2. What we would ideally like, is for ALL IP packets from the client
  189.        machines to go to the LINUX machine, which will then route
  190.        accordingly. Problem with this, you are exposing your computer to
  191.        hackers because if the LINUX machine routes, you DO NOT have
  192.        firewalling or proxy or whatever. Here in this document, we will
  193.        do firewalling unintentionally! while trying to get NETSCAPE to
  194.        access internet from the client machines.
  195.        
  196.        One problem with this "re-routing" desired from the linux machine,
  197.        is that the clients MUST actually SEND ALL packets to the linux
  198.        machine, no matter what the destination address. To that end,
  199.        Win95 and WinNT will ONLY allow "proxy servers" (Which I intend to
  200.        figure out, and write another document on).
  201.     3. IF you are well versed with various free utils, you may have heard
  202.        of "term" package. It was designed simply because its easier to
  203.        configure networks being a "simple" user and NOT AS A ROOT/ADMIN
  204.        (on both client and server sides). The same logic goes with
  205.        NETSCAPE on the clients. It is easier to JUST GET the netscape to
  206.        access the internet and leave the rest of the features (FTP,
  207.        TELNET) unsupported.
  208.     4. If you think, having ONLY netscape access and NOT telnet / ftp
  209.        access to internet from the client machines, is a bummer, then you
  210.        are a dinosaur. Wake Up, Mr./Ms. Rip Van Winkle.
  211.     5. (TECHNICAL) The "named" which remained unused (as mentioned above)
  212.        will be put to use to support NETSCAPE (so that http:/www.sex.org
  213.        will be resolved right from the client machine).
  214.     6. (TECHNICAL) You will have to REBUILD your LINUX kernel to disable
  215.        IP forwarding. I intend to rebuild my kernel with forwarding
  216.        ENABLED and see if the socks package still works (I am betting it
  217.        will). If it does, then you will find a newer version of this
  218.        document. (What this means, is that, you can use the kernel
  219.        installed by your favorite LINUX installation package).
  220.     7. You will need ROOT access on the linux machine :-) You will need
  221.        to download the socks package and COMPILE it. It will NOT compile
  222.        'cos the MAKE file is bad.
  223.     8. (TECHNICAL) be prepared to edit the socks.c file, to comment out
  224.        ONLY two lines which place an entry in your syslog file (/var/adm)
  225.        for every data transfer via socks. For eg: a single page on
  226.        WWW.CNN.COM will have 10 pictures atleast and 5 separate text
  227.        objects. For each of them you will find an entry in syslog (that
  228.        it was transferred!). My syslog keeps filling up. I do NOT like
  229.        that. Maybe you might not mind.
  230.     9. This sockd package supports CLIENT machines ONLY. All applications
  231.        on the LINUX machine DO NOT need the sockd or any other package to
  232.        access the internet, since this LINUX machine connects to internet
  233.        directly using PPP.
  234.        
  235.    
  236.      _________________________________________________________________
  237.    
  238.    
  239.    
  240.   PREPARING YOUR LINUX MACHINE
  241.   
  242.    
  243.    
  244.    Read the NET-HOW-TO in /usr/doc/faq/howto on your linux machine (if
  245.    its slakware), or go to the www.linux.org and read the same NET-HOW-TO
  246.    there...
  247.    
  248.    In that you will find how to down load the socks package and compile
  249.    it. You NEED TO READ the instructions there to setup the in-house
  250.    network. But you are welcome to read this :-) .
  251.    
  252.    That document spends a lot of time, explaining how to configure UNIX
  253.    clients. Especially for "rlogin" "telnet" "ftp" etc... If you do not
  254.    have UNIX clients, then after compiling the SOCKS package, start
  255.    reading this document again, for using the socks package rather than
  256.    the readme file in that package.
  257.    
  258.    I placed the tar file in /usr/local/ProxyServer and untarred it,
  259.    creating a "sockd4.2b" subdirectory within which there is a
  260.    "Makefile". As mentioned in the howto document, I had to struggle to
  261.    successfully do a make on the MAKEFILE.
  262.    
  263.    
  264.      _________________________________________________________________
  265.    
  266.    For your convenience, the MAKEFILE is included at end...
  267.    
  268.    Hopefully, you will have change line # 9 of my copy of the Makefile,
  269.    only.
  270.      _________________________________________________________________
  271.    
  272.    Then I moved the sockd directory contents into its parent and changed
  273.    the line # 9 and did a make again -- successfully. So I guess I
  274.    "fixed" the MAKEFILE.
  275.      _________________________________________________________________
  276.    
  277.    
  278.    
  279.   Setting UP the sockd daemon
  280.   
  281.    
  282.    
  283.    You will find an executable called "sockd" in the sockd subdirectory.
  284.    
  285.  
  286. Once you are done compiling, _COPY the following files to_ /usr/local/etc
  287. (They SHOULD be in the same dir as the sockd directory)
  288.         sockd                   (The executable a.k.a daemon)
  289.         sockd.conf              (configuration file)
  290.         sockd.route             (configuration file)
  291.         socks.conf              (configuration file)
  292.  
  293. # ### make a link called "socks" which points to "sockd" within the same dir.
  294. # cd /usr/local/etc
  295. # ln -s sockd socks
  296.  
  297.    Then edit those three configuration files so that they are similar to
  298.    the ones given below (these are my settings for a two computer
  299.    network, made up of a LINUX "server" and a Win95/WinNT client
  300.    machine).
  301.      _________________________________________________________________
  302.    
  303.    
  304.    
  305.   My sockd.conf file
  306.   
  307.    
  308.  
  309.  
  310. permit  10.0.1.2    0.0.0.0
  311. deny    0.0.0.0 0.0.0.0 : /usr/ucb/finger @%A | /usr/ucb/mail -s 'SOCKD: reject
  312. ed -- from %u@%A to host %Z (service %S)' root
  313. #BAD_ID: /usr/ucb/finger @%A | /usr/ucb/mail -s '%U pretends to be %u on host %
  314. A' root@%A root
  315. #NO_IDENTD: /usr/ucb/mail -s 'Please run identd on %A' %u@%A root@%A
  316. #[EOF]
  317.  
  318.    _NOTE_: 10.0.1.2 is my Win95/WinNT client machine's IP address. This
  319.    sockd.conf file MUST be on your LINUX server (in my case that the
  320.    ethernet port of the LINUX server has an IP address = 10.0.1.1)
  321.    
  322.    _NOTE_: This sockd program is for CLIENT machines ONLY. All
  323.    applications on the LINUX machine DO NOT need the sockd or any other
  324.    package to access the internet, since this LINUX machine connects to
  325.    internet directly using PPP.
  326.    
  327.    
  328.      _________________________________________________________________
  329.    
  330.    
  331.    
  332.   My sockd.route file
  333.   
  334.    
  335.  
  336. #! NoShell
  337. 10.0.1.1        10.0.1.0        255.255.255.0
  338. #[EOF]
  339.  
  340.    _NOTE_: The first IP address is the address of the LINUX machine's
  341.    eth0 PORT. The second IP number is NOT an IP address -- Its the
  342.    NETWORK address (basically, convert the last of the FOUR numbers of
  343.    the IP address into a ZERO).
  344.      _________________________________________________________________
  345.    
  346.    
  347.    
  348.   My socks.conf file
  349.   
  350.    
  351.  
  352. direct  127.0.0.1       255.255.255.255
  353. direct  10.0.1.1        255.255.255.255
  354. direct  10.0.1.2        255.255.255.255
  355. sockd   @=199.99.99.99  10.0.1.1 0.0.0.0
  356.  
  357.    
  358.      _________________________________________________________________
  359.    
  360.    
  361.      _________________________________________________________________
  362.    
  363.    
  364.      _________________________________________________________________
  365.    
  366.    
  367.    
  368.   Now to configure the LINUX machine
  369.   
  370.    
  371.      * _Step # 1:_ Check to see if "named" is already running in your
  372.        system. If it is -- then, you are on your own. Unless you know the
  373.        concepts of DNS very well, you may not be able to adapt the
  374.        contents of this document to suit your needs.
  375.      * _Step # 2:_ Copy the "named.boot" file given below into your
  376.        machine.
  377.      * _Step # 3_: copy the "root.cache" file given below into your
  378.        machine (follow instructions that come with it).
  379.        
  380.    
  381.      _________________________________________________________________
  382.    
  383.    
  384.    
  385.   /etc/host.conf file
  386.   
  387.    All programs that run on the LINUX machine WILL (you cannot prevent
  388.    that) use the resolver libraries -- which depend on the file
  389.    /etc/host.conf
  390.    
  391.    You must make sure that NONE of these programs ever access the "named"
  392.    daemon on THAT VERY linux machine. To do that we shall specify to the
  393.    resolver routines (i.e., routines which convert www.cnn.com into the
  394.    numerical ip address) that those resolver routines MUST either check
  395.    the /etc/hosts file and then check the DNS servers mentioned in
  396.    /etc/resolv.conf
  397.    
  398.    How do we do that? Simply, make sure the /etc/host.conf file is :-
  399.    
  400.  
  401.                 order hosts, bind
  402.                 multi on
  403.  
  404.    If there is anything else, remove it, unless you know a lot about DNS
  405.    and "named".
  406.    
  407.    The reason I insist on preventing the LINUX machine's applications
  408.    from accessing its own "named" server, is because it makes no sense.
  409.    And from my experience, such a "unnecessaries" may look technically
  410.    safe and harmless but will cause enough grief sooner or later...
  411.    
  412.    The linux machine is obviously doing just great accessing the internet
  413.    via the PPP (or whatever link) link. We are installing "sockd" package
  414.    and the "named" daemon for the client machines. Let's not disturb the
  415.    LINUX system.
  416.      _________________________________________________________________
  417.    
  418.    You DO NOT NEED to change the "/etc/gateways" or "/etc/hosts" file or
  419.    the "hosts.allow" or the "hosts.deny" file in order to get your socks
  420.    working.
  421.    
  422.    Do not change any file unless someone suggests a change to that
  423.    file...
  424.    
  425.    I will also assume that you have setup "resolv.conf" properly, to
  426.    enable your LINUX server to access the internet and the DNS (on the
  427.    "other end" of the PPP connection). My sample resolv.conf file is
  428.    available as a sample at the very end.
  429.    
  430. _
  431.                 ***********************************************
  432.                                 WARNING
  433.                 ***********************************************
  434.                 For your own good, I suggest that you setup your
  435.                 machine through the linux installation programs
  436.                 (i.e., while installing linux on your computer.)
  437.                 ************************************************
  438. _
  439.  
  440.    
  441.      _________________________________________________________________
  442.    
  443.    
  444.    
  445.   My named.boot file
  446.   
  447.    
  448.  
  449.         ;    boot file for name server
  450.         forwarders 128.112.129.111
  451.         directory /etc
  452.         cache      .       root.cache
  453.         primary    1.0.10.in-addr.arpa   named_DNS_for_inTi_xwk
  454.                                          ^^^^^^^^^^^^^^^^^^^^^^
  455.  
  456.    NOTE: line # 2, contains the IP address of the DNS server in the
  457.    network to which your LINUX machine connects to using PPP(or
  458.    whatever).
  459.    
  460.   *** How to determine this IP Address ****
  461.   
  462.    SIMPLE ! on a command prompt type in the command "nslookup". The
  463.    response you see will CONTAIN such an IP address. (After noting the
  464.    DNS' IP address, exist "nslookup" using <CTL-D>.
  465.    
  466.    _NOTE_: The LAST line contains the _name of a file_ called
  467.    "named_DNS_for_inTi_xwk' which MUST be in the "/etc" directory. The
  468.    contents of this file, is given below (you are free to give it a
  469.    better name :-) )
  470.      _________________________________________________________________
  471.    
  472.    
  473.    
  474.   My "named_DNS_for_inTi_xwk" file
  475.   
  476.    
  477.  
  478. @               IN      SOA     10.0.1.0 hostmaster.10.0.1.0 (
  479.                                 1       ; Serial
  480.                                 28800   ; Refresh
  481.                                 7200    ; Retry
  482.                                 604800  ; Expire
  483.                                 86400)  ; Minimum TTL
  484.                         NS      10.0.1.1
  485. 1                       PTR     MyLinuxMachine
  486.  
  487.    _NOTE_: The last line (starts with a 1) contains the name
  488.    "MyLinuxMachine". replace it with the name in /etc/HOSTNAME. _NOTE_:
  489.    Again , as you have been doing so far, replace "10.0.1.1" with that of
  490.    your LINUX machine eth0 port's address, and replace "10.0.1.0" with
  491.    that of the network address of that port. _NOTE_: I really do not
  492.    understand every character of the above file. You will be better off
  493.    statisfying your curiousity by studying the documentation for the
  494.    NAMED daemon.
  495.      _________________________________________________________________
  496.    
  497.    
  498.    
  499.   My root.cache file
  500.   
  501.    
  502.    
  503.    _To get this file read the NET-HOW-TO documentation and the
  504.    documentation that comes with the socks package.
  505.    
  506.    Those instructions are VERY simple...
  507.    
  508.    All I did was to run a command mentioned there, and redirected it into
  509.    a file and called it "/etc/root.cache"
  510.    
  511.    _
  512.  
  513. ; > DiG 2.1 > ns
  514. ;; res options: init recurs defnam dnsrch
  515. ;; got answer:
  516. ;; ->>HEADER
  517.  
  518.  
  519.   __________________________________________________________________________
  520.  
  521.  
  522.  
  523.  
  524.  
  525.   Add this to /etc/services
  526.  
  527.  
  528.  
  529.  
  530. (add the single line starting with "socks"...)
  531.  
  532. # services      This file describes the various services that are
  533. #               available from the TCP/IP subsystem.  It should be
  534. #               consulted instead of using the numbers in the ARPA
  535. #               include files, or, worse, just guessing them.
  536. # Version:      @(#)/etc/services       3.02    02/21/93
  537. # Author:       Fred N. van Kempen,
  538.  
  539. ... <lines delete>
  540.  
  541. socks           1080/tcp                        # sarma: Sep.15.96: Got this fr
  542. om the ~sockd/include/socks.h file.
  543.  
  544. ... <lines delete>
  545.  
  546. # End of services.
  547.  
  548.  
  549.  
  550. _NOTE_: This line is read ONLY by inetd daemon I think.  This tells the inetd t
  551. o invoke the "socks" program for all tcp connections to the port # 1080.
  552.  
  553.  
  554.   __________________________________________________________________________
  555.  
  556.  
  557.  
  558.  
  559.  
  560.   Add this to your /etc/inetd.conf file
  561.  
  562.  
  563.  
  564.         # I am just following instructions from ~sockd/doc/sockd.1 man pages...
  565.         socks   stream  tcp     nowait  root    /usr/local/etc/socks
  566.  
  567.  
  568.      * NOTE: Make sure /usr/local/etc is in the SYSTEMS's default PATH.
  569.      * NOTE: For more instructions, read the SOCKD package's instruction
  570.        file. In that this very same line is mentioned, and also you will
  571.        get to know what it means...
  572.      * NOTE: As the filename indicates, this file tells the "inetd"
  573.        daemon where it can find the "socks" program, and what arguments
  574.        to pass it (always) etc...
  575.    
  576.  
  577.   __________________________________________________________________________
  578.  
  579.  
  580.  
  581.   __________________________________________________________________________
  582.  
  583.  
  584.  
  585.   __________________________________________________________________________
  586.  
  587.  
  588.  
  589.  
  590.  
  591.   LET'S GET STARTED !
  592.  
  593.  
  594. Now reboot your system (if you know how, you may instead send HUP to the approp
  595. riate daemons).  Your LINUX server is now set.
  596.  
  597.  
  598.  
  599. do a "tail -f /var/adm/messages"  and a "tail -f /var/adm/syslog" simultaneousl
  600. y and attempt to connect using NETSCAPE from your CLIENT machines.
  601.  
  602.  
  603.  
  604.         Now let's configure the client machine's Netscape...
  605.  
  606.  
  607.   __________________________________________________________________________
  608.  
  609.  
  610.  
  611.  
  612.  
  613.   Configuring NETSCAPE 3.0 Client
  614.  
  615.  
  616. This is to be DONE on the client machines ONLY
  617.  
  618. DO NOT bother doing this on the LINUX server.
  619.  
  620.  
  621.  
  622.      * Pull down the menu called "options" in Netscape.
  623.      * Choose "Network Preferences".
  624.      * You MUST see a dialog box (new window) with "TABS" (layers)...
  625.      * One of the "tabs" will be labelled "PROXIES"
  626.      * Click on that layer/tab.
  627.      * You will see a radio button labelled "manual proxy configuration"
  628.        with a button beside.
  629.      * CLick on that button to open up another dialog box.
  630.      * The second last set of entry slots in that new window will show
  631.        you...
  632.    
  633.  
  634.         --------- --------------------------              --------
  635.         | socks | |                        |              | 1080 |
  636.         --------- --------------------------              --------
  637.  
  638.  
  639. This shows that netscape is already aware of socks.  All you have to do is to t
  640. ell NETSCAPE where the socks daemon is running.
  641.  
  642.  
  643.  
  644. Type in the _eth0 port IP address_ of the linux server in the _middle box_ show
  645. n above...
  646.  
  647.  
  648.  
  649. Save this setting and get going... !!
  650.  
  651.  
  652.  
  653.  
  654.   __________________________________________________________________________
  655.  
  656.  
  657.  
  658.   __________________________________________________________________________
  659.  
  660.  
  661.  
  662.   __________________________________________________________________________
  663.  
  664.  
  665.  
  666.  
  667.  
  668.   For Networking NOVICES
  669.  
  670.  
  671.         If you have already used your Win95 or WinNT machines to connect to the
  672.  internet via PPP, this documents is of absolutely NO help to you.  Anyways, wh
  673. y bother using linux to connect to the internet when you can do so via the clie
  674. nt machine's built-in PPP?
  675.  
  676.  
  677.  
  678.         If you haven't been able to connect to the internet via the LINUX serve
  679. r, then stop reading this document and read the other HOW-TO documents to setup
  680.  your LINUX machine to access the internet via the PPP link.
  681.  
  682.  
  683.  
  684. I hope you know the concept of IP addresses.  In short IP addresses have "mnemo
  685. nics" formats (like www.cnn.com) as well as numeric versions like "198.20.186.4
  686. ".  If you type the former "www.cnn.com" someone must HELP your computer conver
  687. t that name into the numerical format.
  688.  
  689.  
  690.  
  691.         Why the numerical format?  'cos, that numerical format encodes a very e
  692. fficient system of telling each computer HOW to send out communication capsules
  693.  to OTHER computers THAT IT WANTS TO communicate to.
  694.  
  695.  
  696.  
  697.         So, if you type in "www.cnn.com" on your NETSCAPE browser, then a UNIX
  698. computer called a "DNS server" will convert that name into a number for your co
  699. mputer.  Then your computer will use that numerical format of the IP address to
  700.  actually CONNECT to www.cnn.com and show you their latest news.
  701.  
  702.  
  703.  
  704. So, the gist being that : to use the internet you need a DNS server.  This docu
  705. ment includes instructions on setting up your computer to HOOK up to your NEIGH
  706. BORHOOD DNS server.
  707.  
  708.  
  709.  
  710. Your LINUX machine MUST have ALL of the following :-
  711.     1. A modem, through which you can connect to INTERNET *** DIRECTLY
  712.        ***
  713.     2. An ethernet card, to which you have the ethernet cable hooked up
  714.        (the other ends of which you have your client machines hooked up
  715.        to...)
  716.     3. A Working PPP connection.
  717.     4. A Valid DNS server information (use nslookup --- if that program
  718.        retuns invalid values, stop reading this document. You WILL NOT be
  719.        able to proceed...)
  720.     5. Netscape 2.0 or later on your client machines.)
  721.    
  722.    The "modem" is technically referred to as the "ppp0 port" as far as
  723.        this document is concerned.  By "port" I mean something similar to
  724.        a "Sea-Port".  This modem or PPP port enables you to "explore the
  725.        world" (go on a "vacation" from daily chores) :-)
  726.  
  727.  
  728.  
  729.  
  730. The "ethernet card" is your "eth0" port.  That ethernet "port" lets you explore
  731.  the ethernet network to which its connected.
  732.  
  733.  
  734.  
  735. Since your client machines are connected via the ethernet cable to the LINUX ma
  736. chine, anything that your client machine communicates to the LINUX machine will
  737.  ONLY REACH the linux machine VIA the "eth0" port.   ANything that the outside
  738. world sends to your LINUX machine will ONLY REACH via the "ppp0 port".  So, its
  739.  very important that these two ports be given "DIFFERENT ADDRESSES".
  740.  
  741.  
  742.  
  743. To make things easier for you, if you ALREADY successfully connected to the wor
  744. ld using PPP, then, you have UNKNOWINGLY (or knowingly) assigned an IP numerica
  745. l address to your linux machine's PPP port.
  746.  
  747.  
  748.  
  749.  
  750.   __________________________________________________________________________
  751.  
  752.  
  753.  
  754.  
  755.  
  756.   The MAKEFILE for sockd compilation
  757.  
  758.  
  759.  
  760.         SHELL=/bin/bash
  761.         #SOCKS=-DSOCKS
  762.         # or
  763.         SOCKS=-Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dlisten=Rlisten -D
  764. accept=Raccept -Drcmd=Rrcmd -Dbind=Rbind -Dselect=Rselect
  765.         CFLAGS="$(SOCKS)"
  766.  
  767.         # If your system doesn't have PWD defined, define it here:
  768.         PWD="/usr/local/ProxyServer/socks42b"
  769.         # It should be this current directory.
  770.  
  771.         # If your system has getcwd() but no getwd(), uncomment the next line:
  772.         #GETCWD=-DGETCWD
  773.  
  774.         # Define FASCIST if you want ftp (rftp) to log names of all files trans
  775. ferred
  776.         #FASCIST=-DFASCIST
  777.  
  778.         # Define RCMD and SUPPORT_RCMD if you want to support Rrcmd, which is r
  779. equired
  780.         # for SOCKSified rlogin, rsh, and rcp.
  781.         RCMD=Rrcmd.o
  782.         SUPPORT_RCMD=-DSUPPORT_RCMD
  783.  
  784.         # Define FOR_PS if your system is not SYSV and you want to have the
  785.         # command 'ps' show some details of sockd's activity.
  786.         FOR_PS=-DFOR_PS
  787.  
  788.         # Define SHORTENED_RBIND to make Rbind() take exactly the same
  789.         # argument list as the regular bind(), i.e., without the additional
  790.         # 'remhost' argument.
  791.         SHORTENED_RBIND=-DSHORTENED_RBIND
  792.  
  793.         # optimization flag for cc
  794.         #OPTIMIZE=-g
  795.         OPTIMIZE=-O6 -fomit-frame-pointer -pipe -m486
  796.         # Be careful with the OPTIMIZE flag. SunPro's SC2.0.1, for example, is
  797.         # knwon to produce incorrect code when -O is used.
  798.  
  799.         # Directory into which to install the man pages
  800.         MAN_DEST_DIR = /usr/local/man
  801.  
  802.         # Directory into which the SOCKS server should be installed
  803.         SERVER_BIN_DIR = /usr/local/ProxyServer
  804.         ## This was defalted to /usr/local/etc
  805.  
  806.         # Directory into the client programs should be installed
  807.         CLIENTS_BIN_DIR = /usr/local/ProxyServer
  808.         ## This was defaulted to /usr/local/bin
  809.  
  810.         # LINUX should use
  811.         CC=gcc
  812.         RANLIB=ranlib
  813.         RESOLV_LIB=
  814.         #OTHER_CFLAGS=-traditional -DLINUX  $(GETCWD) $(FASCIST) $(SHORTENED_RB
  815. IND) -DCOMPAT
  816.         OTHER_CFLAGS=-DLINUX  $(GETCWD) $(FASCIST) $(SHORTENED_RBIND) -DCOMPAT
  817.         OS=linux
  818.         INSTALL=install
  819.         GETPASS=getpass.o
  820.  
  821.         # Remember to include -Dindex=strchr -Drindex=strrchr in OTHER_CFLAGS i
  822. f
  823.         # you don't have index() and rindex() (Sys-V camp)
  824.  
  825.         #
  826.  
  827.  
  828.  
  829.   __________________________________________________________________________
  830.  
  831.  
  832.  
  833.  
  834.  
  835.   The ppp-on script
  836.  
  837.  
  838. NOTE: This script is being provided as a sample.  Having this sample is not a g
  839. uarantee that you will have an internet connection.
  840.  
  841.  
  842.         #!/bin/csh
  843.         #
  844.         #       ppp-on
  845.         #
  846.         #       Set up a PPP link
  847.         
  848.         set LOCKDIR=/var/spool/uucp
  849.         set DEVICE=cua3
  850.         
  851.         set OUR_IP_ADDR=128.000.111.222
  852.         
  853.         if ( -f $LOCKDIR/LCK..$DEVICE ) then
  854.             echo 'PPP device is locked'
  855.             exit 1
  856.         endif
  857.         
  858.         route del default
  859.         # Just in case the Ethernetwork (In-House ethernet network) is up....
  860.         #       if its NOT, then the above command is harmless...
  861.         route ## To show that the above was successful...
  862.         
  863.         /usr/lib/ppp/fix-cua $DEVICE
  864.         
  865.             unalias pushd
  866.             unalias popd
  867.             pushd /usr/lib/ppp
  868.             # stty 19200 -tostop
  869.         
  870.             # The original code has been commented out below...
  871.             # if chat -l LCK..$DEVICE ABORT "NO CARRIER" ABORT BUSY "" ATZ OK A
  872. Ts50=255s111=0DT$PHONE CONNECT "" ogin: $USER ssword: \\q$PASSWORD
  873.             echo $cwd
  874.             ls -l ./comserv.dip
  875.             dip ./comserv.dip       ## I removed the -v (DEBUG&VERBOSE) option
  876. to 'dip'.
  877.             set dip_status=$status
  878.             # echo the return value of dip is $dip_status
  879.         
  880.             if $dip_status == '0' then
  881.                 # Now please wait for 10 seconds, while the link is being auto-
  882. verified by dip.
  883.                 echo 'About to fork-off pppd (after a delay of 10 secs)...'
  884.                 date
  885.                 echo 'If you see any error msgs below, then we are having SERIO
  886. US problems...'
  887.                 sleep 10
  888.                 pppd -detach crtscts defaultroute domain remote.princeton.edu m
  889. ru 1005 mtu 1005 $OUR_IP_ADDR{}: /dev/$DEVICE 38400 &
  890.                 ###### we dont need this for the previous line...     /dev/$DEV
  891. ICE ) &
  892.                 #    The pppd deamon is FORKED OFF.  See the "&" at the END of
  893. above line...
  894.                 # By using "locl" option, I am requesting that /var/spool/uucp
  895. be the dir
  896.                 #    in which the LOCKS are created...
  897.                 echo 'Now wait another 10 seconds, before I auto-verify interne
  898. t connection.'
  899.                 sleep 10
  900.                 cat ~root/@utils/.line
  901.                 ping -v -c 5 genius.eng.wayne.edu
  902.                 cat ~root/@utils/.line
  903.                 traceroute physics.iisc.ernet.in >&! /tmp/$$
  904.                                                 cat  /tmp/$$
  905.                                                 \rm -f /tmp/$$
  906.                 cat ~root/@utils/.line
  907.                 exit 0
  908.             else
  909.                 echo 'PPP setup failed'
  910.                 exit 1
  911.             endif
  912.             popd
  913.         # [EoF]
  914.  
  915.  
  916.  
  917.   __________________________________________________________________________
  918.  
  919.  
  920.  
  921.  
  922.  
  923.   The comserv.dip script to dial up PPP.
  924.  
  925.  
  926.  
  927.  
  928. NOTE: This script is being provided as a sample.  Having this sample is not a g
  929. uarantee that you will have an internet connection.  This script is called from
  930.  the PPP-ON script given above...
  931.  
  932.  
  933.         #******************************** comserv.dip *************************
  934. *******
  935.         #
  936.         # Connection script for SLIP to ........
  937.         # STATUS code for "dip" when it executes this script are:
  938.         #  0 - all ok.
  939.         #  1 - basic failures, in initializing the modem.
  940.         #  2 - Failed in the crucial "dial" command.
  941.         #  3 - Though DIAL command was successful, this script couldnt recogniz
  942. e
  943.         #      the VERY FIRST responses from the other modem. (i.e., Training o
  944. ccured
  945.         #      but, after that nothing happened that was intelligible to this s
  946. cript.
  947.         #  4 - Modems could nicely link up.  But remote server HAS CHANGED synt
  948. ax.
  949.         #      i.e., the strings output by the server, are assumed to arrive in
  950.  a
  951.         #      PARTICULAR sequence.  If server s/w has changed, then we have th
  952. is
  953.         #      problem.  SOLUTION!!!! Manually connect and note all the strings
  954.  &
  955.         #      all the sequence of interactions...  Then reprogram the script b
  956. elow.
  957.         # 10 - though dialing and connecting (modem-wise) is successful, ppp fa
  958. iled.
  959.         #######################################################################
  960. #####
  961.         main:
  962.         redial:
  963.           # Set the desired serial port and speed.
  964.           port cua3
  965.           speed 38400
  966.           # term
  967.           get $mtu 1005
  968.           # Reset the modem and terminal line.
  969.           reset
  970.           # Without doing the above reset, nothing below will work!
  971.           # Initialize the modem and dial comserv.
  972.           # send ATQ0V1E1X4L1S0 0 \r
  973.           # wait OK 5
  974.           send ATZ\r
  975.           wait OK 5
  976.           if $errlvl != 0 goto error
  977.           # send ATTQ0V1E1X4S0=0&C1\r
  978.           # wait OK 5
  979.           # if $errlvl != 0 goto error
  980.           ## For Dial Tone use :- send AT&D2\r
  981.           send AT&DP\r
  982.           wait OK 5
  983.           if $errlvl != 0 goto error
  984.           # send ATS10=1\r
  985.           # wait OK 5
  986.           # if $errlvl != 0 goto error
  987.           print if the line is busy, the dial command will realize that after 3
  988. 0 secs ONLY.
  989.           dial 258-0000   30
  990.           print Return value of DIAL is $errlvl
  991.           if $errlvl == 1 goto Continue1
  992.           if $errlvl == 3 goto busy
  993.           print unknown error with DIAL command in "dip" script.
  994.           quit 2 # unknown error with crucial DIAL command...
  995.         busy:
  996.           print telephone number is busy... Continue (1) or terminate (2)?
  997.           get $input ask
  998.           if $input == 1 goto redial
  999.           print You have requested to cancel PPP.  Quitting...
  1000.           quit 10 # terminated...
  1001.         Continue1:
  1002.           # wait V32 30
  1003.           # wait CONNECT 10
  1004.           # if $errlvl != 0 print Couldn't detect a CONNECT
  1005.           # if $errlvl != 0 goto connect_fail
  1006.           # print CONNECT was detected...
  1007.           # We are connected.  Login to the system.
  1008.         login:
  1009.           sleep 3
  1010.           # send \r\r
  1011.           wait Username: 20
  1012.           if $errlvl != 0 goto error2
  1013.           send USERID\r
  1014.           wait Password: 5
  1015.           if $errlvl != 0 goto error2
  1016.           send __Password+_::\r\r
  1017.           wait comserv> 15
  1018.           # print Reached Comserv prompt...
  1019.           if $errlvl != 0 goto error2
  1020.         slipon:
  1021.           send ppp\r
  1022.           wait PPP_STARTED 25
  1023.           if $errlvl != 0 goto error2
  1024.           print CONNECTION completed...
  1025.           mode ppp
  1026.           exit 0
  1027.         error:
  1028.           print Total failure to interact with MODEM!!!
  1029.           quit 1 # basic failure in working with modem, etc...
  1030.         connect_fail:
  1031.           print Couldnt detect a "CONNECT 14400" kind of string after dial in..
  1032. .
  1033.           quit 3
  1034.         error2:
  1035.           print Modems could nicely link up.  But remote server HAS CHANGED syn
  1036. tax/ interaction sequence...
  1037.           quit 4 # basic failure in working with modem, etc...
  1038.         #=================================== EOF ==============================
  1039. =====
  1040.  
  1041.  
  1042.  
  1043.