Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #181833
| From | Ron Leach <ronleach@tesco.net> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Re: TCP proxy for host on subnet |
| Date | 2017-06-06 18:40 +0200 |
| Message-ID | <tPpGq-2N6-13@gated-at.bofh.it> (permalink) |
| References | <tOYwx-2jk-3@gated-at.bofh.it> <tP0oF-3td-1@gated-at.bofh.it> <tPjrj-6ZD-11@gated-at.bofh.it> <tPmSe-YB-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On 06/06/2017 14:22, Henning Follmann wrote: > On Tue, Jun 06, 2017 at 10:59:30AM +0100, Ron Leach wrote: >> >> I was also unsure whether socat would hold open a connection to >> name.server.tld even if no transactions were taking place, or whether socat >> would only open the connection each time traffic arrived on 3129 and it >> forked another child process. The documentation seems to imply that the >> 'open' takes place before traffic and before forking, which suggests to me >> that the connection is opened and remains open. I'd prefer an arrangement >> where a connection was made each time a transaction sequence was initiated >> by traffic on the local, incoming, 3129 port (in my example), and then >> closed when traffic stopped. >> > > [...] With the fact that socat is pretty much the > universal patch cable, you are expecting too much here. > It seems you are looking for a protocol aware proxy. > Not wanting the proxy be protocol-aware, but considering what 'states' the proxy, and the destination-server, might remain in for extended periods of time. Just keeping in mind resource consumption and potential for congestion, so that performance issues don't turn out to compromise what - really - looks to be a promising solution. In the meantime, between posts, I have done some testing and, because I could not find much comment about this aspect, I'd like to share here what I found. I altered the command to log to a file in /var/log, and to log more details (options -d -d -d), including the 'connection' open and close, and the traffic sequences. For tests, I used telnet on a source machine on this subnet, and socat on a proxy server to reach an smtp server we have at another site; I only passed the EHLO, HELP, and QUIT commands, because I did not want to falsely trigger the intrusion detection systems on the server. But those few commands served to reveal what socat was doing. The socat command I used was $ socat -d -d -d -lf /var/log/socat \ TCP4-LISTEN:3129,su=nobody,fork,range=192.168.0.0/24,reuseaddr \ TCP4:server.ourdomain.tld:4444 Here's what I found. 1. socat stopped right away; the log showed that socat could not create its child processes. I wondered whether this might be because socat needed to run as root. su, and then # socat started ok. 2. socat did not 'detach' from the keyboard session, so the screen remained with a blank line and no shell prompt. [This means that if I invoke a solution this way, I will have to have a session running all the time that I want socat to run.] 3. Running telnet from a different test machine: $ telnet 192.168.0.123 3129 resulted in: 220 server.ourdomain.tld ESMTP Exim Tue ......... and the simple transaction sequence followed, ending with quit 221 server.ourdomain.tld closing connection $ So the proxying worked fine. But what did socat do, itself? 4. On the proxy machine, /var/log/socat showed a. socat set itself up, listening on (in our test) 3129; - no child processes at this point, and - *no* outbound connection to server.ourdomain.tld - yet b. A few seconds or so later, socat 'accepted connection' from the telnet test machine, and - forked a child process, while - remaining listening for any other connection from the acceptable range of IP addresses c. Meanwhile, the child process - 'opened' a connection to server.ourdomain.tld:4444, and - bridged that channel to the input channel from telnet machine, and - transferred 88 bytes (the Exim 220 welcome message) - There followed the short transaction exchange, then finally socat - sensed 'EOF' on both sides and shut down transmission for both sides - and the child process exited 5. socat master process - was (and is) still running - and went on to pass additional test sequences from a variety of machines 6. I can close socat using ^C Henning, for a universal patch cable, it's pretty good, and seems to work sensibly in terms of resources, too, releasing connections and processes as they reach a quiescent state. A useful suggestion; much appreciated. regards, Ron
Back to linux.debian.user | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
TCP proxy for host on subnet Ron Leach <ronleach@tesco.net> - 2017-06-05 13:40 +0200
Re: TCP proxy for host on subnet Darac Marjal <mailinglist@darac.org.uk> - 2017-06-05 15:30 +0200
Re: TCP proxy for host on subnet Henning <henning@itcfollmann.com> - 2017-06-05 15:40 +0200
Re: TCP proxy for host on subnet Ron Leach <ronleach@tesco.net> - 2017-06-06 12:00 +0200
Re: TCP proxy for host on subnet <tomas@tuxteam.de> - 2017-06-06 12:50 +0200
Re: TCP proxy for host on subnet Henning Follmann <hfollmann@itcfollmann.com> - 2017-06-06 15:30 +0200
Re: TCP proxy for host on subnet tomas@tuxteam.de - 2017-06-06 16:30 +0200
Re: TCP proxy for host on subnet Henning Follmann <hfollmann@itcfollmann.com> - 2017-06-06 15:40 +0200
Re: TCP proxy for host on subnet Ron Leach <ronleach@tesco.net> - 2017-06-06 18:40 +0200
Re: TCP proxy for host on subnet Greg Wooledge <wooledg@eeg.ccf.org> - 2017-06-06 19:10 +0200
Re: TCP proxy for host on subnet Ron Leach <ronleach@tesco.net> - 2017-06-10 13:00 +0200
Re: TCP proxy for host on subnet <tomas@tuxteam.de> - 2017-06-10 15:30 +0200
Re: TCP proxy for host on subnet Greg Wooledge <wooledg@eeg.ccf.org> - 2017-06-13 14:40 +0200
Re: TCP proxy for host on subnet <tomas@tuxteam.de> - 2017-06-13 21:20 +0200
csiph-web