[asterisk-users] Why Nat=yes Nat=no Option?

Alex Balashov abalashov at evaristesys.com
Wed Nov 12 17:57:28 CST 2008


Steve Totaro wrote:

> I believe that if you are speaking of code and Asterisk's implementation 
> of the SIP RFC it is already very borked in many many ways.  I speak 
> from what I see in userspace, real-world, although, as I said, I am 
> going from memory and could be wrong.

Yeah, I know.  But deciding whether to elevate a hack to default 
behaviour status is a question that cannot be governed purely by 
someone's perceived "real-world" use cases, because not all use cases 
are universal.  That's typically not how questions of standards 
compliance (alleged existing noncompliance therewith by Asterisk 
notwithstanding) are settled.

If we did things this way, we would constantly be arguing about whose 
"real-world" is more "real" or more "importantly" real than the others'.

For instance, there are a variety of setups that your suggested approach 
would break, uncommon as they may be.  What if the requests come from an 
internal subnet fronted by a NAT device but to which the Asterisk host 
also has a direct route that the return path or the media path should 
take?  Or what if the user agents are configured for near-end NAT 
traversal fixups (sort of like Asterisk's 'externip' option) for which 
overriding them to the received IP information would present problems?

I realise that's probably not the sort of thing you see in the 
deployments you are leveraging as part of the claim to "real world" 
insight, but the point is that many people reside in many different 
kinds of "real world."  Default configuration options should implement 
standard behaviour as much as possible.  If I am a new user of Asterisk 
unfamiliar with the 'nat' option, I shouldn't have to explicitly set it 
to 'no' (because the default behaviour is 'yes') in order to get 
Asterisk to behave in a more standards-compliant way;  it should be the 
other way around.  The package shouldn't come with a hack enabled 
out-of-the-box.  The standards are the reasonable, pragmatic departure 
point for the common denominator, and the standards say that Contact 
URIs and SDP endpoint attributes are to be believed and mandatorily used.

>>     Also, I am curious - what is the definition of "LAN device" as you are
>>     using it here?  Is it a network with 1) an RFC1918 address and 2) a
>>     network on which the system running Asterisk has a physical interface
>>     binding?  If so, what about other routed subnets also on a LAN?
>  
> I define a LAN based on layer 2 and more recently layer 3 (layer 3 aware 
> switches) of the OSI reference model.  Call me old school but I got my 
> CCNA in the nineties. 

I know how you define a LAN;  it's how I'd define a LAN too.

Asterisk, however, is not Layer 2-aware, so the question is how IT 
defines a LAN.  If, hypothetically, the behaviour you suggested (nat=yes 
behaviour is not applied to requests originating from LAN endpoints), 
then Asterisk would have to know that the source address is a LAN 
address.  How?  What are the criteria?

> "If so, what about other routed subnets also on a LAN?", sorry, I do not 
> understand what you are asking......

It's related to the above.  In other words, perhaps Asterisk can 
conceivably know if a request originated from a LAN address if it comes 
from the subnet of one of the host's IP interfaces and is off a private 
range, but what if the address is off a private range but not on a 
subnet to which the Asterisk host is directly connected.  Is it a LAN 
endpoint then?

-- 
Alex Balashov
Evariste Systems
Web    : http://www.evaristesys.com/
Tel    : (+1) (678) 954-0670
Direct : (+1) (678) 954-0671
Mobile : (+1) (706) 338-8599



More information about the asterisk-users mailing list