various torsocks/ttdnsd errors and discrepancies
For the past two weeks I have been trying to integrate ttdnsd/torsocks combo into my system, allowing for proper DNS resolution to take place over Tor - all this was prompted by my report on bug legacy/trac#7797. Unfortunately, I've hit a brick wall. In a nutshell, I have found a few discrepancies/errors in both torsocks and ttdnsd and I also have a problem trying to force torsocks to talk to tor. Since in the "Component" section on this report form there is no place to select ttdnsd, I am doing this report for torsocks, as well as ttdnsd. 1. Torsocks config file environment variable: ttdnsd expects that to be defined in TSOCKS_CONF_FILE, while torsocks also have 2 different definitions of it: TORSOCKS_CONFFILE (torsocks.8) and TORSOCKS_CONF_FILE (the binary .so file). The latter, when specified, works. Also, that environment variable is only honoured BEFORE chroot (so the full path to this file MUST be specified) - something not mentioned in either of torsocks or ttdnsd man pages. 2. Even though I am using all 3 environment variables, pointing to the right torsocks.conf file, I still can't make it work. Here is my config: torsocks.conf ============= local = 127.0.0.0/255.0.0.0 local = 10.0.0.0/255.0.0.0 server = 127.0.0.1 server_port = 19050 ttdnsd.conf =========== 8.8.8.8 torrc (relevant parts only are included) ======================================== SocksPort 19050 SocksListenAddress 127.0.0.1:19050 DNSPort 53 DNSListenAddress 127.0.0.3:53 SocksPolicy accept 127.0.0.1:* # localhost SocksPolicy accept 127.0.0.2:* # localhost SocksPolicy accept 127.0.0.3:* # localhost SocksPolicy accept 10.0.0.0/8:* SocksPolicy reject *:* My tor proxy service is running on 127.0.0.1:19050. TTDNSD is running on 127.0.0.2:53, while tor's own DNS is running on 127.0.0.3:53. When not using TORSOCKS_DEBUG during ttdnsd start, after the initial setup I get the following message when a DNS request is sent to ttdnsd from the command line (using dig): 07:37:32 libtorsocks(2507): Call to connect received on completed request 4 07:37:32 libtorsocks(2507): sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting. When TORSOCKS_DEBUG=1 is used, I get this: libtorsocks: Got connection request libtorsocks: Intercepted call to getpeername libtorsocks: Intercepted call to poll libtorsocks: Intercepted call to poll libtorsocks: Got connection request libtorsocks: Call to connect received on completed request 4 libtorsocks: Got sendto request libtorsocks: sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting. libtorsocks: Got sendto request libtorsocks: sendto: Connection is a UDP or ICMP stream, may be a DNS request or other form of leak: rejecting. [...ad nauseum...] When I increase the debug level (TORSOCKS_DEBUG=255) I get a different message, though the effect is the same: 07:40:43 libtorsocks(2611): No requests waiting, calling real close 07:40:43 libtorsocks(2611): No requests waiting, calling real close 07:41:01 libtorsocks(2611): Got connection request 07:41:01 libtorsocks(2611): sin_family: 2 07:41:01 libtorsocks(2611): sockopt: 1 07:41:01 libtorsocks(2611): checking if address: 8.8.8.8 is local 07:41:01 libtorsocks(2611): localnet addr: 255.255.0.0 07:41:01 libtorsocks(2611): localip addr: 192.168.0.0 [...] 07:41:01 libtorsocks(2611): address: 8.8.8.8 is not local 07:41:01 libtorsocks(2611): Intercepted call to getpeername 07:41:01 libtorsocks(2611): Call to getpeername for fd 4 07:41:01 libtorsocks(2611): Got connection request for socket 4 to 8.8.8.8 07:41:01 libtorsocks(2611): Picking appropriate server for 8.8.8.8 07:41:01 libtorsocks(2611): Picked server 127.0.0.1 for connection 07:41:01 libtorsocks(2611): checking if address: 127.0.0.1 is local [...] 07:41:01 libtorsocks(2611): address: 127.0.0.0 is local 07:41:01 libtorsocks(2611): Beginning handle loop for socket 4 07:41:01 libtorsocks(2611): In request handle loop for socket 4, current state of request is 0 07:41:01 libtorsocks(2611): Connecting to 127.0.0.1 port 19050 07:41:01 libtorsocks(2611): Connect returned -1, errno is 115 07:41:01 libtorsocks(2611): Error 2 attempting to connect to SOCKS server (No such file or directory) 07:41:01 libtorsocks(2611): Handle loop completed for socket 4 in state 14, returning 2 connect status: No such file or directory We've loaded 8.8.8.8 as a nameserver. 1 nameservers loaded tsocks_conf: torsocks.conf log init... log file opened: ttdnsd.log log file opened as fd: 4 duping fds... check ttdnsd.log from here on out... dup2 says: 1 dup2 says: 2 closing original fd: 4... starting server... watching 1 file descriptors 1 file descriptors became ready received request of 37 bytes, id = 4927 adding new request (id=4927) new request added at pos: 436 using request slot 436 updating id: 16147 selecting peer peer selected: -1 connecting to 8.8.8.8 on port 53 watching 2 file descriptors 1 file descriptors became ready peer 8.8.8.8 in bad state 0 watching 2 file descriptors 1 file descriptors became ready peer 8.8.8.8 in bad state 0 watching 2 file descriptors [...ad nauseum...] I have absolutely no idea what the above errors mean exactly! The connection attempts were made from 127.0.0.1:XXXXX (dig) to 127.0.0.2:53 (ttdnsd) using UDP, and then I could see from /proc/net/nf_conntrack that a separate connection was indeed made (status is ASSURED) to the tor proxy (127.0.0.1:19050) from torsocks (127.0.0.2:XXXXX) using TCP. **Trac**: **Username**: mr-4
issue