VPN的運作原理 - daniel-qa/Network GitHub Wiki

VPN的運作原理

  • VPN 種類

VPN 有兩種,一種是 Site to Site 網段對網段的 VPN,另一種叫 Remote Acccess VPN 遠端存取 VPN

  • 復習:私有 IP 包含

1個 A,10 開頭的

16個 B,172開頭的,172.16 到 172.31

256個 C,192.168.0 到 192.168.255

Private的特性;只要 ISP 看到 Private IP, 就會把這個封包擋掉,所以公司內部的 Private 無法連上 Internet,Internet 也無法連上公司內部的 Private IP

相對,Private IP 比較安全,假如你想要讓 Private IP 可以連上 Internet,就需要 NAT 這種設備,俗稱 IP 分享器,封包就會把 Private IP 換成 Public IP, 這個封包就可以上 Internet

  • 範例-專線架構圖

有兩間分公司,一間在台北,一間在高雄,內網都規劃為 192.168

今天我們要讓台北一百台電腦和高雄一百台電腦能互通,我們常用的有兩種作法

第一種,是向中華電信申請一條專線,你看圖裡真的有一條線,從台北辦公室一直串到高雄辦公室,這邊並沒有提到 Internet,所以我們全部都用 Private IP,兩邊的電腦就可以互通, 也是因為沒有透過 Internet,所以兩邊的資料相對比較安全

專線的缺點,它的價錢很貴,速度又慢,這條線的月租費,會跟這條線的速度和距離成正比

若要省錢,我們可以使用 Site To Site VPN

VPN 和專線的差別,就是中間走 Internet,優點就是便宜,以中華電信的光世代,月租費800多,速度就有100M,

但台北的 Private IP 要透過中華電信 ISP上Internet,ISP看到 Private IP,就直接幫你擋掉,這時候,兩邊就需要有 VPN 這種設備

VPN 它是一種封裝的技術;

左邊台北 10.2 要連高雄 20.3,這兩個都是 Private IP, 10.2 要到20.3,會先經過 10.1,VPN 也是一台 Router,VPN 收到這個封包,來源是 10.2 ,目的是 20.3

因為這個是 Private IP, VPN 會在這個封包的前面,再封包一個 Public IP, 這樣子,這個封包才能連上 Internet, 因為 VPN 這個介面有連線中華電信 ISP,不管是固接或是撥接

這個介面都會有一個 Public IP,同樣的,高雄VPN 這個介面,也有連接 ISP,它也會拿到一個 Public IP

當封包要出去時,台北這台VPN,它就會用這個介面的Public IP 當來源,1.1.1.1,用高雄這個介面的 Public IP 當目的,2.2.2.2,封裝在這個封包的前面,

這時候,這個封包就會有兩個表頭,前面是 Public IP, 後面是 Private IP, 當中華電信ISP收到這個封包,它看到你的目的是 2.2.2.2 這個 Public IP,

它就會往下,一直幫你傳到高雄這個 VPN,當高雄這台 VPN 收到之後,再把粉紅色這個表頭抹掉,剩下橘色這個表頭,你的目的是要到 20.3,再把這個封包丟到 20.3

這樣子,我兩邊的 Private IP, 中間透過 Internet , 就可以互通

VPN 透過 Internet,用租費 800多,頻寬 100M,優點省錢,簡單講 VPN 就是一種封裝的技術,它在 Private IP 的表頭,前面再包了一個 Public IP 的表頭,

我想比較一下前面講的 NAT, NAT 是把前面的 Private IP 換成 Public IP, NAT 它只有一個表頭,它沒有兩個表頭,

  • VNP Tunnel

我們常常把 VPN 比喻成 Tunnel 隧道,雖然它是透過 Internet,但是它可以模擬出一條專線,就類似於一條隧道,讓兩邊的電腦可以互通

而中間是透過 Internet,省錢,我自己是把 Tunnel 定義成 封裝,加密,這就是 Tunnel

VPN 透過封裝,就可以把 Tunnel 模擬成一條隧道,讓兩邊會通,因為中間會通過 Internet,比較不安全,所以它還會把傳輸中的封包加密,好比專線一樣安全

  • Tunnel Example

左邊是台北的網段,192.168.10.2,右邊是高雄的網段,192.168.30.2,兩邊都是 Private IP

台北這台 VPN,這個介面 有接中華電信ISP,所以會拿到一個 Public IP, 200.100.10.2,

高雄這台 VPN,這個介面 也有接中華電信ISP,所以會拿到一個 Public IP, 200.100.20.2,

左邊台北 10.2 要 ping 高雄 30.2,首先封包會先經過台北的 VPN, 台北的 VPN 會在前面封裝一個 Public IP,

來源是 200.100.10.2,目的是 200.100.20.2,傳到高雄的 VPN,高雄的 VPN 會把前面的 Public IP 剖掉,剩下 Private IP, 再傳給 30.2

  • 觀察封包經過台北VPN 時的 Outbound

有兩個標頭,一個 Private IP, 一個 Public IP

  • 封包跑到高雄的 VPN,觀察 Outbound,只有 Private IP,它再把封包傳給 30.2

Inbound 前面有Public IP,後面有 Private IP

  • Tunnel 就是一種封裝的技術,它可以應用在各種情況,下面是 IPv6 範例

左邊台北是 IPv6 的網段 200.1.1.1.10::/64,右邊高雄是 IPv6 的網段 200.1.1.1.30::/64,但是 Internet 是走 IPv4,

那我怎麼能夠讓兩邊 IPv6 的電腦互通,這時候,我們就可以用 Tunnel 封裝的技術,

10::2 要傳給 20::2,這是 IPv6 的表頭,當它傳到台北的 Router, 要從這個介面出去的時候,再包一個 IPv4 的表頭,

這個封包就會從台北到高雄這個 Router, 高雄這台 Router 收到後,再把前面的 IPv4 的表頭剖掉,剩下 IPv6 的表頭,再傳30::2

  • 左邊這台10::2 要去 ping 這台 30::2

Out bound 會在前面再包一層 IPv4 的表頭

  • 封包到第二台 VPN,觀察 Inbound 和 Outbound

Inbound 時,有 IPv4 和 IPv6 的表頭,Outbound 時,已經剖掉 IPv4 的表頭,只剩下 IPv6, 再把這個封包傳給30::2