-
Notifications
You must be signed in to change notification settings - Fork 769
Closed
Description
Hello.
I am trying to make sshuttle with method tproxy work on OpenWRT router with Python 2.7.13 and PyXAPI 0.1, but after several seconds it failing with "AttributeError: '_socketobject' object has no attribute 'recvmsg'".
Full log:
root@OpenWrt:/# python -m sshuttle --listen 0.0.0.0:0 --remote s-trace@192.168.0.100 -vvvv 0.0.0.0/0 --method tproxy --dns
Starting sshuttle proxy.
firewall manager: Starting firewall with Python version 2.7.13
firewall manager: ready method name tproxy.
IPv6 enabled: False
UDP enabled: True
DNS enabled: True
Binding redirector: 12300
TCP redirector listening on ('0.0.0.0', 12300).
TCP redirector listening with <socket._socketobject object at 0x79c7b0>.
UDP redirector listening on ('0.0.0.0', 12300).
UDP redirector listening with <socket._socketobject object at 0x80a9f0>.
Binding DNS: 12300
DNS listening on ('0.0.0.0', 12300).
DNS listening with <socket._socketobject object at 0x8ddb90>.
Starting client with Python version 2.7.13
c : connecting to server...
c : executing: ['ssh', 's-trace@192.168.0.100', '--', 'exec /bin/sh -c \'P=python3.5; $P -V 2>/dev/null || P=python; exec "$P" -c \'"\]
c : > channel=0 cmd=PING len=7 (fullness=0)
WARNING: Ignoring unknown option --
s-trace@192.168.0.100's password:
server: assembling 'sshuttle' (7 bytes)
server: assembling 'sshuttle.cmdline_options' (44 bytes)
server: assembling 'sshuttle.helpers' (950 bytes)
server: assembling 'sshuttle.ssnet' (5625 bytes)
server: assembling 'sshuttle.hostwatch' (2368 bytes)
server: assembling 'sshuttle.server' (3544 bytes)
Starting server with Python version 3.5.2+
s: latency control setting = True
s: available routes:
c : Connected.
s: 2/192.168.0.0/24
s: 2/192.168.1.0/24
s: > channel=0 cmd=PING len=7 (fullness=0)
s: > channel=0 cmd=ROUTES len=34 (fullness=7)
s: Waiting: 1 r=[4] w=[5] x=[] (fullness=41/0)
s: Ready: 1 r=[] w=[5] x=[]
s: mux wrote: 15/15
s: Waiting: 1 r=[4] w=[5] x=[] (fullness=41/0)
s: Ready: 1 r=[] w=[5] x=[]
s: mux wrote: 42/42
s: Waiting: 1 r=[4] w=[] x=[] (fullness=41/0)
c : Waiting: 4 r=[4, 7, 8, 11] w=[11] x=[] (fullness=7/0)
c : Ready: 4 r=[11] w=[11] x=[]
c : < channel=0 cmd=PING len=7
c : > channel=0 cmd=PONG len=7 (fullness=7)
c : < channel=0 cmd=ROUTES len=34
firewall manager: Got subnets: [(2, 0, False, '0.0.0.0')]
firewall manager: Got partial nslist: [(2, '127.0.0.1')]
firewall manager: Got nslist: [(2, '127.0.0.1')]
firewall manager: Got ports: 0,12300,0,12300
firewall manager: Got udp: True
firewall manager: setting up.
firewall manager: setting up IPv4.
>> iptables -t mangle -N sshuttle-m-12300
>> iptables -t mangle -F sshuttle-m-12300
>> iptables -t mangle -N sshuttle-d-12300
>> iptables -t mangle -F sshuttle-d-12300
>> iptables -t mangle -N sshuttle-t-12300
>> iptables -t mangle -F sshuttle-t-12300
>> iptables -t mangle -I OUTPUT 1 -j sshuttle-m-12300
>> iptables -t mangle -I PREROUTING 1 -j sshuttle-t-12300
>> iptables -t mangle -A sshuttle-d-12300 -j MARK --set-mark 1
>> iptables -t mangle -A sshuttle-d-12300 -j ACCEPT
>> iptables -t mangle -A sshuttle-t-12300 -m socket -j sshuttle-d-12300 -m tcp -p tcp
>> iptables -t mangle -A sshuttle-t-12300 -m socket -j sshuttle-d-12300 -m udp -p udp
>> iptables -t mangle -A sshuttle-m-12300 -j MARK --set-mark 1 --dest 127.0.0.1/32 -m udp -p udp --dport 53
>> iptables -t mangle -A sshuttle-t-12300 -j TPROXY --tproxy-mark 0x1/0x1 --dest 127.0.0.1/32 -m udp -p udp --dport 53 --on-port 12300
>> iptables -t mangle -A sshuttle-m-12300 -j MARK --set-mark 1 --dest 0.0.0.0/0 -m tcp -p tcp
>> iptables -t mangle -A sshuttle-t-12300 -j TPROXY --tproxy-mark 0x1/0x1 --dest 0.0.0.0/0 -m tcp -p tcp --on-port 12300
>> iptables -t mangle -A sshuttle-m-12300 -j MARK --set-mark 1 --dest 0.0.0.0/0 -m udp -p udp
>> iptables -t mangle -A sshuttle-t-12300 -j TPROXY --tproxy-mark 0x1/0x1 --dest 0.0.0.0/0 -m udp -p udp --on-port 12300
c : mux wrote: 15/15
c : mux wrote: 15/15
c : Waiting: 4 r=[4, 7, 8, 11] w=[] x=[] (fullness=14/0)
s: Ready: 1 r=[4] w=[] x=[]
s: < channel=0 cmd=PING len=7
s: > channel=0 cmd=PONG len=7 (fullness=41)
s: < channel=0 cmd=PONG len=7
s: received PING response
s: mux wrote: 15/15
s: Waiting: 1 r=[4] w=[] x=[] (fullness=0/0)
c : Ready: 4 r=[11] w=[] x=[]
c : < channel=0 cmd=PONG len=7
c : received PING response
c : Waiting: 4 r=[4, 7, 8, 11] w=[] x=[] (fullness=0/0)
c : Ready: 4 r=[8] w=[] x=[]
c : Accept UDP using socket_ext recvmsg.
firewall manager: undoing IPv4 changes.
>> iptables -t mangle -D OUTPUT -j sshuttle-m-12300
>> iptables -t mangle -F sshuttle-m-12300
>> iptables -t mangle -X sshuttle-m-12300
>> iptables -t mangle -D PREROUTING -j sshuttle-t-12300
>> iptables -t mangle -F sshuttle-t-12300
>> iptables -t mangle -X sshuttle-t-12300
>> iptables -t mangle -F sshuttle-d-12300
>> iptables -t mangle -X sshuttle-d-12300
firewall manager: undoing /etc/hosts changes.
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/sshuttle/__main__.py", line 4, in <module>
sys.exit(main())
File "/usr/lib/python2.7/sshuttle/cmdline.py", line 74, in main
opt.daemon, opt.pidfile)
File "/usr/lib/python2.7/sshuttle/client.py", line 730, in main
seed_hosts, auto_hosts, auto_nets, daemon)
File "/usr/lib/python2.7/sshuttle/client.py", line 515, in _main
ssnet.runonce(handlers, mux)
File "/usr/lib/python2.7/sshuttle/ssnet.py", line 595, in runonce
h.callback(s)
File "/usr/lib/python2.7/sshuttle/client.py", line 123, in <lambda>
lambda sock: callback(sock, method, mux, handlers)
File "/usr/lib/python2.7/sshuttle/client.py", line 389, in ondns
t = method.recv_udp(listener, 4096)
File "/usr/lib/python2.7/sshuttle/methods/tproxy.py", line 120, in recv_udp
srcip, dstip, data = recv_udp(udp_listener, bufsize)
File "/usr/lib/python2.7/sshuttle/methods/tproxy.py", line 66, in recv_udp
srcip, data, adata, flags = listener.recvmsg(
AttributeError: '_socketobject' object has no attribute 'recvmsg'
Attached full python -vvvv -m sshuttle --listen 0.0.0.0:0 --remote s-trace@192.168.0.100 -vvvv 0.0.0.0/0 --method tproxy --dns log too.
It is huge, but here is messages about socket_ext:
import socket_ext # from /usr/lib/python2.7/socket_ext.py
dlopen("/usr/lib/python2.7/lib-dynload/_socket_ext.so", 2);
import _socket_ext # dynamically loaded from /usr/lib/python2.7/lib-dynload/_socket_ext.so
c : Accept UDP using socket_ext recvmsg.
I used 9a9015a and metricube/PyXAPI@074d33c
What may be wrong?
Thank you.
Metadata
Metadata
Assignees
Labels
No labels