一段時間以來,我基本上忽略了 STUN 協議,將其視為噪音,但我總是時不時地遇到它,我想知道它的一般可用性。
addr:port
如果我理解正確的話,STUN 僅當最外層 NAT 允許從對發送的資料包比建立映射時使用的來源資料包時才有用。
我有一個明顯妄想的理解,即健全的 NAT 只允許來自addr:port
已建立連接的同一對的資料包(端點相關過濾)。不強制執行這一點本身似乎就是一個嚴重的安全問題。在此之上建立整個協定和 RFC 似乎很瘋狂。
問題:
- 是否真的有很多 NAT 只進行端點無關過濾?
- 除了懶惰、危及背後的系統以及為「p2p 友好」功能收取額外費用之外,在 NAT 上進行端點獨立過濾還有什麼好的理由嗎?
答案1
NAT 並不是一種安全功能 - 它是一種避免 IPv4 位址耗盡的駭客手段,作為 IPv6 完全部署之前的權宜之計。因此,以最大化實用性而不是安全性的方式來實現它是有意義的。
因此,您的問題 2 的前提是錯誤的,因為 NAT 並不旨在作為安全設備。如果強制遠端端點始終相同甚至會破壞一個應用程序,那麼考慮到該技術的目標,我認為不強制使用相同的遠端端點更為明智。
點對點 IP 電話(例如 Skype)將是合法應用程式的一個顯著範例,如果沒有在 NAT: 中打孔的能力,無論是透過 STUN 還是利用 NAT 行為的類似技術,該應用程式都無法正常運作。 :或透過UPnP 等技術。