Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.
Go to file
Scott Kuhl 502960d796 Intercept DNS requests sent by systemd-resolved.
Previously, we would find DNS servers we wish to intercept traffic on
by reading /etc/resolv.conf. On systems using systemd-resolved,
/etc/resolv.conf points to localhost and then systemd-resolved
actually uses the DNS servers listed in
/run/systemd/resolve/resolv.conf. Many programs will route the DNS
traffic through localhost as /etc/resolv.conf indicates and sshuttle
would capture it. However, systemd-resolved also provides other
interfaces for programs to resolve hostnames besides the localhost
server in /etc/resolv.conf.

This patch adds systemd-resolved's servers into the list of DNS
servers when --dns is used.

Note that sshuttle will continue to fail to intercept any traffic sent
to port 853 for DNS over TLS (which systemd-resolved also supports).

For more info, see:
sshuttle issue #535
https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html
https://github.com/systemd/systemd/issues/6076
2020-10-25 12:29:32 -04:00
.github/workflows Create github workflow 2020-05-21 08:12:26 +10:00
bin Auto sudoers file (#269) 2019-12-13 08:15:31 +11:00
docs Intercept DNS requests sent by systemd-resolved. 2020-10-25 12:29:32 -04:00
sshuttle Intercept DNS requests sent by systemd-resolved. 2020-10-25 12:29:32 -04:00
tests IPv6 support in nft method. 2020-10-21 17:47:07 -04:00
.gitignore Add entries to .gitignore 2018-03-16 18:10:09 +11:00
.prospector.yml Fixes some style issues and minor bugs 2017-11-13 11:58:43 +11:00
bandit.yml updated bandit config 2018-10-17 20:52:04 +11:00
CHANGES.rst Fixed typo. 2020-08-27 20:59:37 +02:00
LICENSE Change license text to LGPL-2.1 2020-08-26 12:25:36 -04:00
MANIFEST.in Fix error in requirements.rst 2017-07-09 09:08:48 +10:00
README.rst README: add Ubuntu 2020-07-24 17:38:16 +02:00
requirements-tests.txt Merge pull request #534 from sshuttle/dependabot/pip/flake8-3.8.4 2020-10-06 07:56:56 +11:00
requirements.txt Fix #494 sshuttle caught in infinite select() loop. 2020-09-07 15:46:33 -04:00
run Updated supported Python versions 2020-05-29 07:44:51 +10:00
setup.cfg Fix/pep8 (#277) 2019-02-11 09:59:13 +11:00
setup.py Add psutil as dependency in setup.py 2020-10-07 15:00:45 -05:00
tox.ini Updated supported Python versions 2020-05-29 07:44:51 +10:00

sshuttle: where transparent proxy meets VPN meets ssh
=====================================================

As far as I know, sshuttle is the only program that solves the following
common case:

- Your client machine (or router) is Linux, FreeBSD, or MacOS.

- You have access to a remote network via ssh.

- You don't necessarily have admin access on the remote network.

- The remote network has no VPN, or only stupid/complex VPN
  protocols (IPsec, PPTP, etc). Or maybe you *are* the
  admin and you just got frustrated with the awful state of
  VPN tools.

- You don't want to create an ssh port forward for every
  single host/port on the remote network.

- You hate openssh's port forwarding because it's randomly
  slow and/or stupid.

- You can't use openssh's PermitTunnel feature because
  it's disabled by default on openssh servers; plus it does
  TCP-over-TCP, which has `terrible performance`_.
  
.. _terrible performance: https://sshuttle.readthedocs.io/en/stable/how-it-works.html

Obtaining sshuttle
------------------

- Ubuntu 16.04 or later::

      apt-get install sshuttle

- Debian stretch or later::

      apt-get install sshuttle
      
- Arch Linux::

      pacman -S sshuttle

- Fedora::

      dnf install sshuttle

- NixOS::

      nix-env -iA nixos.sshuttle

- From PyPI::

      sudo pip install sshuttle

- Clone::

      git clone https://github.com/sshuttle/sshuttle.git
      cd sshuttle
      sudo ./setup.py install

- FreeBSD::

      # ports
      cd /usr/ports/net/py-sshuttle && make install clean
      # pkg
      pkg install py36-sshuttle

It is also possible to install into a virtualenv as a non-root user.

- From PyPI::

      virtualenv -p python3 /tmp/sshuttle
      . /tmp/sshuttle/bin/activate
      pip install sshuttle

- Clone::

      virtualenv -p python3 /tmp/sshuttle
      . /tmp/sshuttle/bin/activate
      git clone https://github.com/sshuttle/sshuttle.git
      cd sshuttle
      ./setup.py install

- Homebrew::

      brew install sshuttle

- Nix::

      nix-env -iA nixpkgs.sshuttle


Documentation
-------------
The documentation for the stable version is available at:
https://sshuttle.readthedocs.org/

The documentation for the latest development version is available at:
https://sshuttle.readthedocs.org/en/latest/


Running as a service
--------------------
Sshuttle can also be run as a service and configured using a config management system: 
https://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe