diff --git a/mitmproxy/proxy/protocol/base.py b/mitmproxy/proxy/protocol/base.py index 783d1cc8d..c535a1a38 100644 --- a/mitmproxy/proxy/protocol/base.py +++ b/mitmproxy/proxy/protocol/base.py @@ -109,12 +109,14 @@ class ServerConnectionMixin: super().__init__() self.server_conn = None - if self.config.options.spoof_source_address: + if self.config.options.spoof_source_address and self.config.options.upstream_bind_address == '': self.server_conn = connections.ServerConnection( server_address, (self.ctx.client_conn.address.host, 0), True) else: self.server_conn = connections.ServerConnection( - server_address, (self.config.options.upstream_bind_address, 0)) + server_address, (self.config.options.upstream_bind_address, 0), + self.config.options.spoof_source_address + ) self.__check_self_connect() diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py index 4be107a8e..34f1c08f7 100644 --- a/mitmproxy/tools/cmdline.py +++ b/mitmproxy/tools/cmdline.py @@ -485,7 +485,8 @@ def proxy_options(parser): group.add_argument( "--spoof-source-address", action="store_true", dest="spoof_source_address", - help="Use the client's IP for server-side connections" + help="Use the client's IP for server-side connections. " + "Combine with --upstream-bind-address to spoof a fixed source address." ) group.add_argument( "--upstream-bind-address",