OpenVPN: 設定路由讓特定 IP Address 通過 VPN

OpenVPN: 設定路由讓特定 IP Address 通過 VPN

在預設情形 OpenVPN 會把全部的網路流量用 VPN 來傳輸,這樣對於我們在使用外網上多多少少會造成速度上的影響,在有些情況下我們只需要將特定 IP Address 透過 VPN 傳輸即可,這樣不僅可以讓我們能透過 VPN 去訪問一些 VPN 內網的服務,也不會影響到我們平常使用的流量。

先說結論

如過要達成這個設定可以在 OpenVPN Client 進行設定,需要編輯我們連線對應的 ovpn 檔進行編輯 (在 Windows10 系統預設位置應該為 C:\Users\[UserName]\AppData\Roaming\OpenVPN Connect\profiles ),在該檔案末端增加以下內容即可。

# 令 openvpn 連線後不會增加路由,不會有任何網路請求通過 OpenVPN
route-nopull

# 設定 某個網段要過 VPN,ex: 192.168.1.1 ~ 192.168.1.255
route 192.168.1.0 255.255.255.0 vpn_gateway

也因為是在 Client 設定,因此當你更換不同裝置時需要依據你的需求重新設定,或是複製以上設定喔。

相關參數介紹

這邊主要有3個相關參數來決定路由的策略 (route-nopullvpn_gatewaynet_gateway)。

route-nopull

在 Clinet 端加入這個參數後,openvpn 連線後不會增加路由,不會有任何網路請求通過 OpenVPN。

vpn_gateway

當我們增加了 route-nopull ,讓所有的連線預設都不會從 OpenVPN 通過,需要額外增加 vpn_gateway ,來讓設定的 IP Address 可以通過 OpenVPN 出去。

route-nopull

# 只有 192.168.2.1 ~ 192.168.2.254 會通過 VPN 連線
route 192.168.2.0 255.255.255.0 vpn_gateway

net_gateway

vpn_gateway 相反,預設全部的網路流量都會通過 OpenVPN 時 (預設狀況,也就是為增加 route-nopull 時),令某些 IP Address 不會透過 OpenVPN 。

# 只有 192.168.2.1 ~ 192.168.2.254 不會通過 VPN 連線
route 192.168.2.0 255.255.255.0 net_gateway

max-route

該參數代表可以增加路由的數量,預設只能允許增加 100 條 route,也就是如果你的 route 少於 100 可以不用增加此參數。

建議

在多數時候,較為建議在 Client 設定中加上 route-nopull ,再使用 vpn-gateway 去一一增加需要通過 VPN 的 IP Address,確保只有你允許的網路流量通過 VPN,也是一個比較安全保險的作法。

Reference

OpenVPN: Only route a specific IP addresses through VPN?
On a remote private network there are two servers -- a file server and a database server (these are both Win machines, in case it matters). The file server has its own fairly robust authentication
Openvpn 客户端路由配置
介绍 Openvpn 是个非常强大的工具,默认的参数已经足够对付大多数场景了。由于某些原因,我只需要某些 ip 走 Openvpn 的线路,这就需要自定义路由了。 Openvpn 路由 配置 主要由
自訂OpenVPN客戶端路由
緣由OpenVPN在正常情況下會將所有網路傳輸優先以VPN通道來做傳輸,但這樣會造成外網的上網速度緩慢(等於多繞一個彎從VPN那邊連到外網)。在某些使用場景中顯得不必要,像是連回公司辦公。因此是否可以設定只有訪問某些IP才走VPN通道呢? 設定幸好這部份在client端中就可以做設定,用文字編輯器打開我們連線時用的.ovpn檔在檔案尾端加入 12345# 設定openvpn連線後也不會走vpn通道