Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Feb 1996 20:17:09 -0500 (EST)
From:      Richard Toren <rpt@miles.sso.loral.com>
To:        "Eric J. Schwertfeger" <ejs@bfd.com>
Cc:        questions@freebsd.org
Subject:   Re: Q: programming sockets source address?
Message-ID:  <Pine.SUN.3.91.960213195751.19005B-100000@miles>
In-Reply-To: <Pine.BSF.3.91.960212135045.22730B-100000@harlie.bfd.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Eric,
  If I read your question correctly, you want to creat multiple outbound 
connections, each from a different source IP address, but all on the same 
host box and physical interface. I had to do this under OSF/1 with > 60 
IP addresses needed. Here is what I did as a quick fix. ( I haven't tried 
this under FreeBSD, but the man pages says it should work.)

1. Study 'ifconfig' man page, and the '-alias' option.
2. Write small program that takes interface and ip address as string args.

   netalias.c

   main(int argc, char *argv[]) {
    /* argv[1]=interface name argv[2]=new ip address */
    char buffer[512];
    sprintf (buffer,"ifconfig %s -alias %s", argv[1],argv[2]);
    return system (buffer);
    }
 (this code as example, fix as needed) 

3. Make program setuid root so that it has permissions to add a new 
alias IP address.

4. From main program, determine needed IP; then 

   system ("netalias le0 244.234.2.2"); // should add alias
   bind specific ip (244.234.2.2) in socket rather than 'inaddrany'

This can all be done more elegantly, but this can be codded and tested 
faster than I can type this mail message.

I eventually ended up with a daemon I called SNE for "Schizophrenic 
Network Entity". It proxied for any given IP address and port; doing 
listens, connects and passing data. Sort of a software router and spoofer.

You may have to play some games with the routes so that replys to your 
aliases are routed back to the originating machine.

Hope this helps. I thought it was rather neat when I found we didn't have 
to buy 60 machines
                         ====================================================
Rip Toren               | The bad news is that C++ is not an object-oriented |
rpt@miles.sso.loral.com | programming language. .... The good news is that   |
                        | C++ supports object-oriented programming.          |
                        |    C++ Programming & Fundamental Concepts          |
                        |     by Anderson & Heinze                           |
                         ====================================================



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SUN.3.91.960213195751.19005B-100000>