穿隧協議
網際網路協定套組 |
---|
應用層 |
傳輸層 |
網路層 |
連結層 |
穿隧協議(英語:Tunneling Protocol)[1]是一種網路協定,在其中,使用一種網路協定(傳送協定),將另一個不同的網路協定,封裝在負載部份。使用隧道的原因是在不相容的網路上傳輸資料,或在不安全網路上提供一個安全路徑。
隧道則是對比分層式的模型,如OSI模型或TCP/IP。穿隧協議通常(但並非總是)在一個比負載協定還高的層級,或同一層。要了解協定堆疊,負載和傳送協定都須了解。傳統的分層式協定,如OSI模型或TCP/IP模型,HTTP協定 ,並不被認為是穿隧協議。隧道是在相隔甚遠的客戶端和伺服器兩者之間進行中轉,並保持雙方通訊連接的應用程式。
通用路由封裝是一種跑在 IP (IP 號碼為 47)的協定,身為網路層上的網路層的例子,通常是用帶有公開位址的 IP 封包來攜帶帶有 RFC 1918 私用位址的 IP 封包來穿越網際網路。在此例上,傳送和負載協定是相容的,但負載位址和傳送網路是不相容的。
穿隧協議可能使用資料加密來傳送不安全的負載協定。
常見穿隧協議
- IPsec
- 一般路由封裝(GRE),支援多種網路層協定和多路技術
- IP in IP[2],比GRE更小的負載頭,並且適合只有負載一個IP流的情況。
- L2TP(資料連結層穿隧協議)[3]
- MPLS (多協定標籤交換)
- GTP
- PPTP(對等穿隧協議) [4]
- PPPoE(基於乙太網路的對等隧道)
- PPPoA(基於ATM的對等隧道)
- IEEE 802.1Q (乙太網路VLANs)
- DLSw(SNA負載網際網路協定)
- XOT(X.25資料片負載TCP)
- IPv6 穿隧:6to4、6in4、Teredo
- Anything In Anything (AYIYA,例如:IPv6 over UDP over IPv4, IPv4 over IPv6, IPv6 over TCP IPv4等)
- TLS
- SSH
- SOCKS
- HTTP CONNECT命令
- 各式的電路層級的代理伺服器協定,如Microsoft Proxy Server的Winsock Redirection Protocol或WinGate Winsock Redirection Service.
SSH
SSH隧道可以通過加密頻道將明文流量匯入隧道中。為了建立SSH隧道, SSH客戶端要設定並轉交一個特定本地埠號到遠端機器上。一旦SSH隧道建立,使用者可以連到指定的本地埠號以存取網路服務。本地埠號不用與遠地埠號一樣。
SSH隧道提供一個繞過防火牆,從而連到某些被禁止的網際網路服務的的方法。例如,一個組織可能會禁止使用者不通過組織的代理伺服器過濾器,而直接存取網頁(埠號 80 ),用於監視或控視使用者瀏覽網頁。使用者可能不希望讓他們的網頁流量被組織的代理伺服器過濾器所監控或阻擋。如果使用者能連到一個外部的 SSH 伺服器,就有可能建立 SSH 通道,將某個本地端埠號連到遠端網頁伺服器的埠號:80。要連到遠端網頁伺服器,使用者可以將他們的網頁瀏覽器指到http://localhost/。
SSH支援動態埠傳送,允許使用者建立SOCKS代理伺服器。使用者可以設定他的應用程式去使用他們的區域SOCKS代理伺服器。這比建立一個連到單一埠號的SSH隧道更有彈性。使用SOCKS,使用者可以不被限制只能連到事先定義的埠號和伺服器。
作用
規避防火牆
一個被防火牆阻擋的協定可被包在另一個沒被防火牆阻擋的協定裡,如HTTP。如果防火牆並沒有排除此種包裝,這技巧可用來逃避防火牆政策。隧道可按要求建立起一條與其他伺服器的通訊線路,屆時使用 SSL 等加密手段進行通訊。
另一種基於 HTTP 的穿隧方法使用超文字傳輸協定的 CONNECT 方法:
客戶端送出 HTTP 的 CONNECT 命令給代理伺服器,代理伺服器會建一個 TCP 連線到特定的 伺服器埠,並轉送伺服器埠和客戶端連線之間的資料。因為這會製造安全漏洞,HTTP 代理伺服器通常會限制 CONNECT 命令。通常只允許基於 TLS/SSL 的 HTTPS 服務。隧道本身不會去解析 HTTP 請求。也就是說,請求保持原樣中轉給之後的伺服器。隧道本身是透明的,客戶端不用在意隧道的存在。
加密網路流量
另見
參考資料
- ^ Tunneling在台灣譯為「穿隧」VPN 虛擬私有網路技術概說 (頁面存檔備份,存於網際網路檔案館)
- ^ IP Encapsulation within IP (頁面存檔備份,存於網際網路檔案館),RFC2003, C. Perkins,October 1996
- ^ Layer Two Tunneling Protocol "L2TP" (頁面存檔備份,存於網際網路檔案館),RFC 2661, W. Townsley et al.,August 1999
- ^ Point-to-Point Tunneling Protocol (PPTP) (頁面存檔備份,存於網際網路檔案館),RFC 2637, K. Hamzeh et al.,July 1999
外部連結
- (英文)以範例解釋 SSH 隧道
- (英文)設定 Windows SSH 穿隧用於 VNC (頁面存檔備份,存於網際網路檔案館)
- (英文)詳細解釋 SSH 轉送和穿隧
- (简体中文) SSH隧道技术应用. (原始內容存檔於2010-04-07).