diff -rN -u old-python-sipsimple/sipsimple/account/__init__.py new-python-sipsimple/sipsimple/account/__init__.py
--- old-python-sipsimple/sipsimple/account/__init__.py	2014-11-02 13:52:38.276370538 +0200
+++ new-python-sipsimple/sipsimple/account/__init__.py	2014-11-02 13:52:39.512376672 +0200
@@ -29,7 +29,7 @@
 from sipsimple.account.xcap import XCAPManager
 from sipsimple.core import Credentials, SIPURI, ContactURIFactory
 from sipsimple.configuration import ConfigurationManager, Setting, SettingsGroup, SettingsObject, SettingsObjectID
-from sipsimple.configuration.datatypes import AudioCodecList, MSRPConnectionModel, MSRPRelayAddress, MSRPTransport, NonNegativeInteger, Path, SIPAddress, SIPProxyAddress, SRTPEncryption, STUNServerAddressList, VideoCodecList, XCAPRoot
+from sipsimple.configuration.datatypes import AudioCodecList, MSRPConnectionModel, MSRPRelayAddress, MSRPTransport, NonNegativeInteger, Path, SIPAddress, SIPProxyAddress, SRTPEncryption, STUNServerAddressList, VideoCodecList, XCAPRoot, IPAddress
 from sipsimple.configuration.settings import SIPSimpleSettings
 from sipsimple.payloads import ParserError
 from sipsimple.payloads.messagesummary import MessageSummary
@@ -61,6 +61,7 @@
     video_codec_list = Setting(type=VideoCodecList, default=None, nillable=True)
     srtp_encryption = Setting(type=SRTPEncryption, default='disabled')
     use_srtp_without_tls = Setting(type=bool, default=False)
+    media_ip = Setting(type=IPAddress, default=None, nillable=True)
 
 
 class NATTraversalSettings(SettingsGroup):
diff -rN -u old-python-sipsimple/sipsimple/application.py new-python-sipsimple/sipsimple/application.py
--- old-python-sipsimple/sipsimple/application.py	2014-11-02 13:52:38.320370757 +0200
+++ new-python-sipsimple/sipsimple/application.py	2014-11-02 13:52:39.504376628 +0200
@@ -154,6 +154,7 @@
                        tls_privkey_file=None,
                        # rtp
                        rtp_port_range=(settings.rtp.port_range.start, settings.rtp.port_range.end),
+                       media_ip = settings.rtp.media_ip,
                        # audio
                        codecs=list(settings.rtp.audio_codec_list),
                        # video
diff -rN -u old-python-sipsimple/sipsimple/session.py new-python-sipsimple/sipsimple/session.py
--- old-python-sipsimple/sipsimple/session.py	2014-11-02 13:52:38.516371728 +0200
+++ new-python-sipsimple/sipsimple/session.py	2014-11-02 13:52:39.508376647 +0200
@@ -1008,9 +1008,11 @@
                     wait_count -= 1
             try:
                 contact_uri = self.account.contact[PublicGRUUIfAvailable, self.route]
-                local_ip = host.outgoing_ip_for(self.route.address)
-                if local_ip is None:
+                if settings.rtp.media_ip is None:
+                    local_ip = host.outgoing_ip_for(self.route.address)
                     raise ValueError("could not get outgoing IP address")
+                else:
+                    local_ip = str(settings.rtp.media_ip)
             except (KeyError, ValueError), e:
                 for stream in self.proposed_streams:
                     notification_center.remove_observer(self, sender=stream)
@@ -1276,7 +1278,10 @@
 
             remote_sdp = self._invitation.sdp.proposed_remote
             sdp_connection = remote_sdp.connection or (media.connection for media in remote_sdp.media if media.connection is not None).next()
-            local_ip = host.outgoing_ip_for(sdp_connection.address) if sdp_connection.address != '0.0.0.0' else sdp_connection.address
+            if settings.rtp.media_ip is None:
+                local_ip = host.outgoing_ip_for(sdp_connection.address) if sdp_connection.address != '0.0.0.0' else sdp_connection.address
+            else:
+                local_ip = str(settings.rtp.media_ip)
             if local_ip is None:
                 for stream in self.proposed_streams:
                     notification_center.remove_observer(self, sender=stream)
