sshuttle v1.3.1
step 1:
sshuttle --method tproxy --ns-hosts 1.1.1.1 -r user@remote:22 10.0.0.0/12 -v
...
c : TCP redirector listening on ('127.0.0.1', 12300).
c : UDP redirector listening on ('127.0.0.1', 12300).
c : DNS listening on ('127.0.0.1', 12299).
...
step 2
dig -p12299 @127.0.0.1 tiktok.com
sshuttle server crash when send dns request to dns listener
what expect is a dns response.
Traceback (most recent call last):
File "/usr/bin/sshuttle", line 8, in <module>
sys.exit(main())
^^^^^^
File "/usr/lib/python3.11/site-packages/sshuttle/cmdline.py", line 89, in main
return_code = client.main(ipport_v6, ipport_v4,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/sshuttle/client.py", line 1070, in main
return _main(tcp_listener, udp_listener, fw, ssh_cmd, remotename,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/sshuttle/client.py", line 724, in _main
ssnet.runonce(handlers, mux)
File "/usr/lib/python3.11/site-packages/sshuttle/ssnet.py", line 616, in runonce
h.callback(s)
File "/usr/lib/python3.11/site-packages/sshuttle/ssnet.py", line 504, in callback
self.handle()
File "/usr/lib/python3.11/site-packages/sshuttle/ssnet.py", line 492, in handle
self.got_packet(channel, cmd, data)
File "/usr/lib/python3.11/site-packages/sshuttle/ssnet.py", line 437, in got_packet
callback(cmd, data)
File "/usr/lib/python3.11/site-packages/sshuttle/client.py", line 510, in <lambda>
mux.channels[chan] = lambda cmd, data: dns_done(
^^^^^^^^^
File "/usr/lib/python3.11/site-packages/sshuttle/client.py", line 491, in dns_done
method.send_udp(sock, srcip, dstip, data)
File "/usr/lib/python3.11/site-packages/sshuttle/methods/tproxy.py", line 95, in send_udp
sender.bind(srcip)
OSError: [Errno 98] Address in use
source:
def send_udp(self, sock, srcip, dstip, data):
if not srcip:
debug1(
"-- ignored UDP to %r: "
"couldn't determine source IP address\n" % (dstip,))
return
sender = socket.socket(sock.family, socket.SOCK_DGRAM)
sender.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
try:
sender.setsockopt(socket.SOL_IP, IP_TRANSPARENT, 1)
except PermissionError as e:
self.setsockopt_error(e)
sender.bind(srcip)
sender.sendto(data, dstip)
sender.close()
may be I can fix it. with a pr
sshuttle v1.3.1
step 1:
sshuttle --method tproxy --ns-hosts 1.1.1.1 -r user@remote:22 10.0.0.0/12 -v
step 2
dig -p12299 @127.0.0.1 tiktok.com
sshuttle server crash when send dns request to dns listener
what expect is a dns response.
source:
may be I can fix it. with a pr