DNS forwarding stopped working after MacOS update

95 views
Skip to first unread message

vr

unread,
Nov 9, 2022, 3:48:11 AM11/9/22
to sshuttle
So everything worked perfectly until I updated my OS today to version 12.6.1, after which I found that Internet breaks when sshuttle is connected and realized that DNS is not working.

I tried reinstalling the utility through brew uninstall/install, but it did not help, though it updated all dependencies in the world.

When launched with verbose output I can see something like this:

% sshuttle --dns -r my.centralus.cloudapp.azure.com -e "ssh -F $HOME/azsshconfig -o 'ServerAliveInterval=30'" 10.188.0.0/14 -vvv
Starting sshuttle proxy (version 1.1.1).
c : Starting firewall manager with command: ['/usr/local/Cellar/sshuttle/1.1.1/libexec/bin/python3.11', '/usr/local/bin/sshuttle', '-v', '-v', '-v', '--method', 'auto', '--firewall']
fw: Starting firewall with Python version 3.11.0
fw: Selecting a method automatically...
fw: which() could not find 'iptables' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
fw: nat method not supported because 'iptables' command is missing.
fw: which() could not find 'nft' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
fw: nft method not supported because 'nft' command is missing.
fw: which() found 'pfctl' at /sbin/pfctl
fw: Method 'pf' was automatically selected.
fw: which() found 'pfctl' at /sbin/pfctl
fw: ready method name pf.
c : Found DNS servers in /etc/resolv.conf: ['10.142.6.1']
c : Failed to read /run/systemd/resolve/resolv.conf when looking for DNS servers: No such file or directory
c : IPv6 enabled: Using default IPv6 listen address ::1
c : Method: pf
c : IPv4: on
c : IPv6: on
c : UDP : off (not available with pf method)
c : DNS : on
c : User: off (not available with pf method)
c : Subnets to forward through remote host (type, IP, cidr mask width, startPort, endPort):
c :   (<AddressFamily.AF_INET: 2>, '10.188.0.0', 14, 0, 0)
c : Subnets to exclude from forwarding:
c :   (<AddressFamily.AF_INET: 2>, '127.0.0.1', 32, 0, 0)
c :   (<AddressFamily.AF_INET6: 30>, '::1', 128, 0, 0)
c : DNS requests normally directed at these servers will be redirected to remote:
c :   (<AddressFamily.AF_INET: 2>, '10.142.6.1')
c : Trying to bind redirector on port 12300
c : TCP redirector listening on ('::1', 12300, 0, 0).
c : TCP redirector listening with <socket.socket fd=5, family=30, type=1, proto=0, laddr=('::1', 12300, 0, 0)>.
c : TCP redirector listening on ('127.0.0.1', 12300).
c : TCP redirector listening with <socket.socket fd=7, family=2, type=1, proto=0, laddr=('127.0.0.1', 12300)>.
c : Trying to bind DNS redirector on port 12300
c : Trying to bind DNS redirector on port 12299
c : DNS listening on ('::1', 12299, 0, 0).
c : DNS listening with <socket.socket fd=8, family=30, type=2, proto=0, laddr=('::1', 12299, 0, 0)>.
c : DNS listening on ('127.0.0.1', 12299).
c : DNS listening with <socket.socket fd=9, family=2, type=2, proto=0, laddr=('127.0.0.1', 12299)>.
c : Starting client with Python version 3.11.0
c : Connecting to server...
c : which() found 'ssh' at /usr/bin/ssh
c : executing: ['/usr/bin/ssh', '-F', '/Users/user/azsshconfig', '-o', 'ServerAliveInterval=30', 'wat-prod-ra.centralus.cloudapp.azure.com', '--', '/bin/sh -c \'P=python3; $P -V 2>/dev/null || P=python; exec "$P" -c \'"\'"\'import sys, os; verbosity=3; sys.stdin = os.fdopen(0, "rb"); exec(compile(sys.stdin.read(1704), "assembler.py", "exec")); sys.exit(98);\'"\'"\'; exit 97\'']
Authorized uses only. All activity may be monitored and reported.
c :  > channel=0 cmd=PING len=7 (fullness=0)
 s: Running server on remote host with /usr/bin/python3 (version 3.6.9)
 s: assembling 'sshuttle' (88 bytes)
 s: assembling 'sshuttle.cmdline_options' (85 bytes)
 s: assembling 'sshuttle.helpers' (2853 bytes)
 s: assembling 'sshuttle.ssnet' (5811 bytes)
 s: assembling 'sshuttle.hostwatch' (2518 bytes)
 s: assembling 'sshuttle.server' (3786 bytes)
 s: latency control setting = True
 s:  > channel=0 cmd=PING len=7 (fullness=0)
 s: auto-nets:False
 s:  > channel=0 cmd=ROUTES len=0 (fullness=7)
c : Connected to server.
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=7/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 15/15
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=7/0)
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=7/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 15/15
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=7/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 8/8
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=7/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=0 cmd=PING len=7
c :  > channel=0 cmd=PONG len=7 (fullness=7)
c : <  channel=0 cmd=ROUTES len=0
fw: Got subnets: [(2, 14, False, '10.188.0.0', 0, 0), (2, 32, True, '127.0.0.1', 0, 0), (30, 128, True, '::1', 0, 0)]
fw: Got partial nslist: [(2, '10.142.6.1')]
fw: Got nslist: [(2, '10.142.6.1')]
fw: Got ports: 12300,12300,12299,12299
fw: Got udp: False, user: None, tmark: 0x01, sshuttle_pid: 34736
fw: setting up.
fw: setting up IPv6.
fw: >> pfctl -s Interfaces -i lo -v
fw: >> pfctl -s all
fw: rules:
    pass out inet6 proto tcp to ::1/128
fw: >> pfctl -a sshuttle6-12300 -f /dev/stdin
fw: >> pfctl -E
fw: setting up IPv4.
fw: >> pfctl -s Interfaces -i lo -v
fw: >> pfctl -s all
fw: rules:
    table <dns_servers> {10.142.6.1}
    rdr pass on lo0 inet proto tcp from ! 127.0.0.1 to 10.188.0.0/14 -> 127.0.0.1 port 12300
    rdr pass on lo0 inet proto udp to <dns_servers> port 53 -> 127.0.0.1 port 12299
    pass out route-to lo0 inet proto tcp to 10.188.0.0/14 keep state
    pass out inet proto tcp to 127.0.0.1/32
    pass out route-to lo0 inet proto udp to <dns_servers> port 53 keep state
fw: >> pfctl -a sshuttle-12300 -f /dev/stdin
fw: >> pfctl -E
fw: which() could not find 'resolvectl' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
fw: which() could not find 'systemd-resolve' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
c : mux wrote: 15/15
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=14/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=0 cmd=PING len=7
 s:  > channel=0 cmd=PONG len=7 (fullness=7)
 s: mux wrote: 15/15
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=14/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=0 cmd=PONG len=7
c : received PING response
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=0/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=0 cmd=PONG len=7
 s: received PING response
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=0/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56847): 41 bytes
c :  > channel=1 cmd=DNS_REQ len=41 (fullness=0)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=41/0)
c :   Ready: 3 r=[9] w=[11] x=[]
c : mux wrote: 49/49
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56758): 41 bytes
c :  > channel=2 cmd=DNS_REQ len=41 (fullness=41)
c : Remaining DNS requests: 2
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=82/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=82/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=1 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=1.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: <  channel=2 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=2.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 3 r=[0, 4, 5] w=[] x=[] (fullness=0/0)
 s:   Ready: 3 r=[5] w=[] x=[]
 s: DNS response: 182 bytes
 s:  > channel=2 cmd=DNS_RESPONSE len=182 (fullness=0)
 s: expiring dnsreqs channel=2
 s: Waiting: 2 r=[0, 4] w=[1] x=[] (fullness=182/0)
 s:   Ready: 2 r=[] w=[1] x=[]
 s: mux wrote: 190/190
 s: Waiting: 2 r=[0, 4] w=[] x=[] (fullness=182/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=2 cmd=DNS_RESPONSE len=182
c : dns_done: channel=2 src=None dst=('10.142.6.35', 56758)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=82/0)
 s:   Ready: 2 r=[4] w=[] x=[]
 s: DNS response: 142 bytes
 s:  > channel=1 cmd=DNS_RESPONSE len=142 (fullness=182)
 s: expiring dnsreqs channel=1
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=324/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 150/150
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=324/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=1 cmd=DNS_RESPONSE len=142
c : dns_done: channel=1 src=None dst=('10.142.6.35', 56847)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=82/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56847): 41 bytes
c :  > channel=3 cmd=DNS_REQ len=41 (fullness=82)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=123/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=123/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56758): 41 bytes
c :  > channel=4 cmd=DNS_REQ len=41 (fullness=123)
c : Remaining DNS requests: 2
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=164/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=164/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=3 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=3.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: <  channel=4 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=4.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 3 r=[0, 5, 6] w=[] x=[] (fullness=324/0)
 s:   Ready: 3 r=[5, 6] w=[] x=[]
 s: DNS response: 142 bytes
 s:  > channel=3 cmd=DNS_RESPONSE len=142 (fullness=324)
 s: DNS response: 182 bytes
 s:  > channel=4 cmd=DNS_RESPONSE len=182 (fullness=466)
 s: expiring dnsreqs channel=3
 s: expiring dnsreqs channel=4
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=648/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 150/150
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=648/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 190/190
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=648/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=3 cmd=DNS_RESPONSE len=142
c : dns_done: channel=3 src=None dst=('10.142.6.35', 56847)
c : <  channel=4 cmd=DNS_RESPONSE len=182
c : dns_done: channel=4 src=None dst=('10.142.6.35', 56758)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=164/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 52387): 35 bytes
c :  > channel=5 cmd=DNS_REQ len=35 (fullness=164)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=199/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 43/43
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=199/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=5 cmd=DNS_REQ len=35
 s: Incoming DNS request channel=5.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 4] w=[] x=[] (fullness=648/0)
 s:   Ready: 2 r=[4] w=[] x=[]
 s: DNS response: 35 bytes
 s:  > channel=5 cmd=DNS_RESPONSE len=35 (fullness=648)
 s: expiring dnsreqs channel=5
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=683/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 43/43
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=683/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=5 cmd=DNS_RESPONSE len=35
c : dns_done: channel=5 src=None dst=('10.142.6.35', 52387)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=199/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 52387): 35 bytes
c :  > channel=6 cmd=DNS_REQ len=35 (fullness=199)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=234/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 43/43
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=234/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=6 cmd=DNS_REQ len=35
 s: Incoming DNS request channel=6.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 5] w=[] x=[] (fullness=683/0)
 s:   Ready: 2 r=[5] w=[] x=[]
 s: DNS response: 35 bytes
 s:  > channel=6 cmd=DNS_RESPONSE len=35 (fullness=683)
 s: expiring dnsreqs channel=6
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=718/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 43/43
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=718/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=6 cmd=DNS_RESPONSE len=35
c : dns_done: channel=6 src=None dst=('10.142.6.35', 52387)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=234/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56847): 41 bytes
c :  > channel=7 cmd=DNS_REQ len=41 (fullness=234)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=275/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=275/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=7 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=7.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 4] w=[] x=[] (fullness=718/0)
 s:   Ready: 2 r=[4] w=[] x=[]
 s: DNS response: 142 bytes
 s:  > channel=7 cmd=DNS_RESPONSE len=142 (fullness=718)
 s: expiring dnsreqs channel=7
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=860/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 150/150
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=7 cmd=DNS_RESPONSE len=142
c : dns_done: channel=7 src=None dst=('10.142.6.35', 56847)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=275/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56758): 41 bytes
c :  > channel=8 cmd=DNS_REQ len=41 (fullness=275)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=316/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=316/0)
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=860/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=8 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=8.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 5] w=[] x=[] (fullness=860/0)
 s:   Ready: 2 r=[5] w=[] x=[]
 s: DNS response: 182 bytes
 s:  > channel=8 cmd=DNS_RESPONSE len=182 (fullness=860)
 s: expiring dnsreqs channel=8
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=1042/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 190/190
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=1042/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=8 cmd=DNS_RESPONSE len=182
c : dns_done: channel=8 src=None dst=('10.142.6.35', 56758)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=316/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 52387): 35 bytes
c :  > channel=9 cmd=DNS_REQ len=35 (fullness=316)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=351/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 43/43
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=351/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=9 cmd=DNS_REQ len=35
 s: Incoming DNS request channel=9.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 4] w=[] x=[] (fullness=1042/0)
 s:   Ready: 2 r=[4] w=[] x=[]
 s: DNS response: 35 bytes
 s:  > channel=9 cmd=DNS_RESPONSE len=35 (fullness=1042)
 s: expiring dnsreqs channel=9
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=1077/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 43/43
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=1077/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=9 cmd=DNS_RESPONSE len=35
c : dns_done: channel=9 src=None dst=('10.142.6.35', 52387)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=351/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56847): 41 bytes
c :  > channel=10 cmd=DNS_REQ len=41 (fullness=351)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=392/0)
c :   Ready: 3 r=[9] w=[11] x=[]
c : mux wrote: 49/49
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 56758): 41 bytes
c :  > channel=11 cmd=DNS_REQ len=41 (fullness=392)
c : Remaining DNS requests: 2
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=433/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 49/49
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=433/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=10 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=10.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 2 r=[0, 5] w=[] x=[] (fullness=1077/0)
 s:   Ready: 2 r=[0] w=[] x=[]
 s: <  channel=11 cmd=DNS_REQ len=41
 s: Incoming DNS request channel=11.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 3 r=[0, 4, 5] w=[] x=[] (fullness=1077/0)
 s:   Ready: 3 r=[5] w=[] x=[]
 s: DNS response: 142 bytes
 s:  > channel=10 cmd=DNS_RESPONSE len=142 (fullness=1077)
 s: expiring dnsreqs channel=10
 s: Waiting: 2 r=[0, 4] w=[1] x=[] (fullness=1219/0)
 s:   Ready: 2 r=[] w=[1] x=[]
 s: mux wrote: 150/150
 s: Waiting: 2 r=[0, 4] w=[] x=[] (fullness=1219/0)
 s:   Ready: 2 r=[4] w=[] x=[]
 s: DNS response: 182 bytes
 s:  > channel=11 cmd=DNS_RESPONSE len=182 (fullness=1219)
 s: expiring dnsreqs channel=11
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=1401/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 190/190
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=1401/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=10 cmd=DNS_RESPONSE len=142
c : dns_done: channel=10 src=None dst=('10.142.6.35', 56847)
c : <  channel=11 cmd=DNS_RESPONSE len=182
c : dns_done: channel=11 src=None dst=('10.142.6.35', 56758)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=433/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 65096): 38 bytes
c :  > channel=12 cmd=DNS_REQ len=38 (fullness=433)
c : Remaining DNS requests: 1
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=471/0)
c :   Ready: 3 r=[9] w=[11] x=[]
c : mux wrote: 46/46
c : Accept UDP using recvfrom.
c : DNS request from ('10.142.6.35', 60020): 38 bytes
c :  > channel=13 cmd=DNS_REQ len=38 (fullness=471)
c : Remaining DNS requests: 2
c : Remaining UDP channels: 0
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[11] x=[] (fullness=509/0)
c :   Ready: 3 r=[] w=[11] x=[]
c : mux wrote: 46/46
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=509/0)
 s:   Ready: 1 r=[0] w=[] x=[]
 s: <  channel=12 cmd=DNS_REQ len=38
 s: Incoming DNS request channel=12.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: <  channel=13 cmd=DNS_REQ len=38
 s: Incoming DNS request channel=13.
 s: Found DNS servers in /etc/resolv.conf: ['127.0.0.53']
 s: DNS: sending to '127.0.0.53':53 (try 1)
 s: Waiting: 3 r=[0, 5, 6] w=[] x=[] (fullness=1401/0)
 s:   Ready: 3 r=[5, 6] w=[] x=[]
 s: DNS response: 84 bytes
 s:  > channel=12 cmd=DNS_RESPONSE len=84 (fullness=1401)
 s: DNS response: 96 bytes
 s:  > channel=13 cmd=DNS_RESPONSE len=96 (fullness=1485)
 s: expiring dnsreqs channel=12
 s: expiring dnsreqs channel=13
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=1581/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 92/92
 s: Waiting: 1 r=[0] w=[1] x=[] (fullness=1581/0)
 s:   Ready: 1 r=[] w=[1] x=[]
 s: mux wrote: 104/104
 s: Waiting: 1 r=[0] w=[] x=[] (fullness=1581/0)
c :   Ready: 3 r=[11] w=[] x=[]
c : <  channel=12 cmd=DNS_RESPONSE len=84
c : dns_done: channel=12 src=None dst=('10.142.6.35', 65096)
c : <  channel=13 cmd=DNS_RESPONSE len=96
c : dns_done: channel=13 src=None dst=('10.142.6.35', 60020)
c : Waiting: 3 r=[5, 7, 8, 9, 11] w=[] x=[] (fullness=509/0)
^Cfw: undoing changes.
fw: undoing IPv6 changes.
fw: >> pfctl -a sshuttle6-12300 -F all
fw: >> pfctl -X 18109761870060662977
fw: undoing IPv4 changes.
fw: >> pfctl -a sshuttle-12300 -F all
fw: >> pfctl -X 18109761870060633185
fw: which() could not find 'resolvectl' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
fw: which() could not find 'systemd-resolve' in /Users/user/.pyenv/shims:/Users/user/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/user/.cargo/bin:/Users/user/.local/bin
c :
c : Keyboard interrupt: exiting.


It can be seen that DNS requests are coming by messages like "DNS request from ('10.142.6.35', 56847)", but I am afraid that the rest of output does not make much sense to me.

Besides DNS issue, the rest seems to work fine. If I add an entry into my /etc/hosts, it solves the problem for that host.

Can anyone please help me to troubleshoot? What diagnostics can I run to pinpoint the issue?

Thank you,
VR

Message has been deleted

vr

unread,
Nov 9, 2022, 5:09:12 AM11/9/22
to sshuttle
In regard to the above output, I'll provide some context, for what it worth...

I have to use a VPN called GlobalProtect, which is enforced on my work laptop. I can disable it temporarily but it does not make much sense in this case the SSH server will be unavailable.

The IP assigned to me by this VPN is 10.142.6.35. Normally (when sshuttle is not connected), the DNS server used is 10.142.6.1 (as shown by nslookup).

When sshuttle is connected, the error I am getting from nslookup and dig is:
;; connection timed out; no servers could be reached

I am thinking what change the update of MacOS could bring. One my assumption is that it could somehow affect pfctl or change its configuration. According to this article, each MacOS update (even a minor one) overwrites /etc/pf.conf. Is anything required in that file?

Thank you.
Reply all
Reply to author
Forward
0 new messages