Amanda-Users

Re: Still hoping for answer for amanda port usage

2004-09-16 15:32:23
Subject: Re: Still hoping for answer for amanda port usage
From: KEVIN ZEMBOWER <KZEMBOWE AT jhuccp DOT org>
To: amanda-users AT amanda DOT org
Date: Thu, 16 Sep 2004 15:28:44 -0400
Oh, just to make sure I understand correctly what you're saying:

The 1008x ports are not compiled into the program by any of the 
'--with-???portrange' configuration options. Instead, they're determined at 
run-time by examining the entries in /etc/service.

That makes a lot of sense, but I didn't understand or even consider that until 
now. Thanks so much.

-Kevin

>>> Eric Siegerman <erics AT telepres DOT com> 09/16/04 12:57PM >>>
On Wed, Sep 15, 2004 at 03:28:21PM -0400, KEVIN ZEMBOWER wrote:
> There was one comment that ports 10080-10083 are fixed, no
> matter what --with-???portrange switches are used. Is this fact
> or fiction?

(c) Neither of the above :-)

The 1008x ports are not affected by the --with-*portrange
options, but neither are they "fixed" in the sense of being
hard-coded integers; they are *determined* by the entries in
/etc/services.  When deciding which "well-known" port to listen
on or connect to, the Amanda code looks up the service name in
/etc/services, and uses the port number it finds there (see
getservbyname(3)).

As I understand it (which I semi do -- I fully understood it a
year and a half ago when I set up Amanda here, but you know how
it goes :-/), Amanda uses the --with-*portrange options only for
ports that are *not* well-known, i.e. not listed in
/etc/services.

There are (at least) two standard patterns for starting a
connection (whether that's a real TCP connection or merely an
exchange of UDP packets):

 1. using a well-known port:
      - the listener listens on a well-known port, L1
      - the initiator chooses an arbitrary port I1 for its own
        end, and uses it to connect to L1 at the listener end

 2. not:
      - the listener chooses an arbitrary port L2, listens on L2,
        and communicates L2's port number to the initiator via
        some pre-existing channel (pipe, network connection, disk
        file, whatever)
      - the initiator receives the port number L2; it chooses an
        arbitrary port I2, and uses that to connect to L2

In Amanda, L1 is one of the three entries from /etc/services
(1008x by default).  If I remember correctly, I1, I2, and L2 are
all determined by the --with-*portrange options.

Note (and this I *am* sure of) that in Amanda, it is not
dependable that initiator==client and listener==server.  The
client initiates some connections, but the tape server initiates
others.

--

|  | /\
|-_|/  >   Eric Siegerman, Toronto, Ont.        erics AT telepres DOT com 
|  |  /
The animal that coils in a circle is the serpent; that's why so
many cults and myths of the serpent exist, because it's hard to
represent the return of the sun by the coiling of a hippopotamus.
        - Umberto Eco, "Foucault's Pendulum"