summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvery Pennarun <apenwarr@gmail.com>2011-01-26 04:44:32 -0800
committerAvery Pennarun <apenwarr@gmail.com>2011-01-26 05:25:26 -0800
commit88937e148e2cb72ae1337f9a65367af8909eaae5 (patch)
tree594cc6ec0dc95f4d1cbbddd2745f6212af4b8636
parent7f3c522c564b79e0f96a25c7a94705a99a65d09e (diff)
client.py: do DNS listener on the same port as the TCP listener.
UDP and TCP have separate port namespaces, so to make it easier to keep track of what's going on, just use the same transproxy port number for both. We still need two sockets, but now tcpdumps are easier to understand.
-rw-r--r--client.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/client.py b/client.py
index 4f47226..0835cbe 100644
--- a/client.py
+++ b/client.py
@@ -330,8 +330,6 @@ def main(listenip, ssh_cmd, remotename, python, latency_control, dns,
return 5
debug1('Starting sshuttle proxy.\n')
- listener = socket.socket()
- listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if listenip[1]:
ports = [listenip[1]]
else:
@@ -341,8 +339,13 @@ def main(listenip, ssh_cmd, remotename, python, latency_control, dns,
debug2('Binding:')
for port in ports:
debug2(' %d' % port)
+ listener = socket.socket()
+ listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ dnslistener = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ dnslistener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
try:
listener.bind((listenip[0], port))
+ dnslistener.bind((listenip[0], port))
bound = True
break
except socket.error, e:
@@ -355,14 +358,14 @@ def main(listenip, ssh_cmd, remotename, python, latency_control, dns,
listenip = listener.getsockname()
debug1('Listening on %r.\n' % (listenip,))
- dnsport = 0
- dnslistener = None
if dns:
- dnslistener = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- dnslistener.bind((listenip[0], 0))
dnsip = dnslistener.getsockname()
debug1('DNS listening on %r.\n' % (dnsip,))
dnsport = dnsip[1]
+ else:
+ dnsport = 0
+ dnslistener = None
+ dnslistener.bind((listenip[0], 0))
fw = FirewallClient(listenip[1], subnets_include, subnets_exclude, dnsport)