在單純的網路環境下,設定 LAN-to-LAN VPN 並不是什麼難事,當你的兩個網段都各只有一個預設閘道時真的是很容易設定,照著設備的說明手冊應該就能設定成功,但我前幾天在設定 LAN-to-LAN VPN 時卻遇到一個棘手的問題,在一個網段內有些電腦能夠與另一個網段內的電腦互通,有些電腦卻不能連線,還有些只有單向的連線,研究了好一段時間後才釐清在細節中潛藏的魔鬼。
以下是我的網路環境,狀況有點複雜,要認真看才能釐清真相:
-----------------------------------------------------------
LAN1 – VPN Server ( WAN Interface )
- 網路位址:203.64.18.221
- 網路閘道:203.64.18.222
- 網路遮罩:255.255.255.224
LAN1 – VPN Server ( LAN Interface )
- 網路位址:172.16.124.42
- 網路閘道:n/a
- 網路遮罩:255.255.255.0
LAN1 – PC ( WAN Interface )
- 網路位址:203.64.18.199
- 網路閘道:203.64.18.222 ← 這就是本次的魔鬼!這是 LAN1 – PC 的預設閘道。
- 網路遮罩:255.255.255.224
LAN1 – PC ( LAN Interface )
- 網路位址:172.16.124.51
- 網路閘道:n/a
- 網路遮罩:255.255.255.0
-----------------------------------------------------------
LAN2 – VPN Client ( WAN Interface )
- 網路位址:59.12.34.110
- 網路閘道:59.12.34.254
- 網路遮罩 : 255.255.255.0
LAN2 – VPN Client ( LAN Interface )
- 網路位址:192.168.100.1
- 網路閘道:n/a
- 網路遮罩 : 255.255.255.0
LAN2 – PC ( 只有一個 LAN Interface )
- 網路位址:192.168.100.83
- 網路閘道:192.168.100.1
- 網路遮罩 : 255.255.255.0
-----------------------------------------------------------
設定 LAN1 的 VPN 撥入連線
- 基本設定
- 允許的撥入模式: IPSec通道 ( 註: LAN-to-LAN VPN 可以用 IPSec Tunnel 的方式建立 )
- 撥入設定
- 指定 遠端 VPN 閘道
- 對方 VPN 伺服器 IP : 59.12.34.110
- IKE 驗證方式 : 預先共用金鑰 (Preshared Key)
- 輸入預先共用金鑰!
- IPSec 安全防護方式
- 中級 (AH) -- 這個可以不用勾選
- 高級 (ESP) -- 請勾選這個比較安全
- 通常內建三種加密方式 : DES , 3DES , AES
- TCP/IP 網路設定
- 遠端網路 IP : 192.168.100.0 ( 遠端的 LAN 網段 )
- 遠端網路遮罩 : 255.255.255.0
設定 LAN2 的 VPN 撥出連線
- 撥出設定
- IKE 驗證方式 : 預先共用金鑰 (Preshared Key)
- 輸入預先共用金鑰!
- IPSec 安全防護方式: 選 ESP ( 高級 ) -- 註: 有些 VPN 設備無法讓你選取加密方式
- NAT Traversal : Disabled
- 本地閘道
- Network IP / Subnet Mask : 192.168.100.0/24 ( 本地端的 LAN 網段 )
- 遠端閘道
- Security Gateway : 203.64.18.221 ( 遠端的 WAN IP , LAN2 VPN 會連到此 IP 位址 )
- 遠端網路 IP : 172.16.124.0 ( 遠端的 LAN 網段 )
- 遠端網路遮罩 : 255.255.255.0
-----------------------------------------------------------
註:以上設定會隨不同的 VPN 設備,專有名詞的命名也會有所不同,不過觀念都是一樣的。
設定完成後你會發現 LAN1 – PC 要連到 LAN2 – PC 沒問題,但是 LAN2 – PC 卻無法連到 LAN1 – PC,所有封包都只能連接到 VPN Gateway 而已,封包都無法抵達遠端的 LAN1 – PC 電腦,這是因為 LAN2 – PC 發送 TCP/IP 封包到 LAN1 – PC 時出了網路問題。
LAN2 – PC 連到 LAN1 – PC 的封包傳送步驟描述如下:
- LAN2 – PC ( 192.168.100.83 ) 封包先傳到預設閘道 ( 192.168.100.1 )
- 由於預設閘道知道 172.16.124.0/24 這個目標 (因為已經建立VPN通道),所以能把封包傳過去
- 封包傳達至 VPN 的遠端閘道 ( 172.16.124.42 )
- 遠端閘道將封包轉送給 LAN1 – PC ( 172.16.124.51 )
- 由於 TCP 封包需要 handshaking,所以 LAN1 – PC 必須回應要求給 192.168.100.83
- 但因為本機路由並沒有定義 192.168.100.83 這個網路目標,因此封包會走本機的預設閘道出去 ( 203.64.18.222 )
- 由於 203.64.18.222 並無法將封包傳達 192.168.100.0/24 網段,因而發生 TCP handshaking 失敗,自然 TCP 連線就無法被建立!
所以為了能讓 LAN2 – PC ( 192.168.100.0/24 ) 正常的與 LAN1 – PC ( 172.16.124.51 ) 互通網路,只要在 LAN1 – PC 新增以下路由就能夠讓從 LAN1 – PC 回到 192.168.100.0/24 的封包走向 172.16.124.42 這個閘道,網路也就能通了:
route add 192.168.100.0 mask 255.255.255.0 172.16.124.42
魔鬼總在細節裡,狂賀又再次驅魔成功!哈哈~ XD
相關連結