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-nopull
、vpn_gateway
、 net_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

