Skip to content

Commit

Permalink
docs: add instructions for transparent proxy on Linux for traffic ori…
Browse files Browse the repository at this point in the history
…ginating from the mitmproxy host itself
  • Loading branch information
tomsaleeba committed Aug 1, 2019
1 parent 0b0b4cc commit ba848e2
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions docs/src/content/howto-transparent.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,29 @@ The `--mode transparent` option turns on transparent mode, and the `--showhost`
Set the test device up to use the host on which mitmproxy is running as the default gateway and
[install the mitmproxy certificate authority on the test device]({{< relref "concepts-certificates" >}}).

### Work-around to redirect traffic originating from the machine itself

Follow steps **1, 2** as above, but *instead* of the commands in step **3**, run the following

Create a user to run the mitmproxy
{{< highlight bash >}}
sudo useradd --create-home mitmproxyuser
sudo -u mitmproxyuser 'cd ~ && pip install --user mitmproxy'
{{< / highlight >}}

Then, configure the iptables rules to redirect all traffic from our local machine to mitmproxy. **Note**, as soon as you run these, you won't be able to perform successful network calls *until* you start mitmproxy. If you run into issues, `iptables -t nat -F` is a heavy handed way to flush (clear) *all* the rules from the iptables `nat` table (which includes any other rules you had configured).
{{< highlight bash >}}
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
{{< / highlight >}}

This will redirect the packets from all users other than `mitmproxyuser` on the machine to mitmproxy. To avoid circularity, run mitmproxy as the user `mitmproxyuser`. Hence step **4** should look like:
{{< highlight bash >}}
sudo -u mitmproxyuser bash -c '$HOME/.local/bin/mitmproxy --mode transparent --showhost --set block_global=false'
{{< / highlight >}}



## OpenBSD
Expand Down

0 comments on commit ba848e2

Please sign in to comment.