
附註:我發現我們的 OpenVPN 伺服器確實是為分割隧道設定的,但我們的客戶正在推送他們自己的網關:
redirect-gateway def1 bypass-dhcp bypass-dns
這樣做是為了存取一些外部世界無法存取的內部服務。一個更合適的問題是:在不推送透過 VPN 路由整個流量的網關的情況下存取 VPN 內部服務的正確方法是什麼,儘管我認為這相當本身就是一個不同的問題。
我在家庭辦公室,雖然我透過網路管理器建立了穩定的 VPN 連接,但其速度非常有限。我家裡有 1 GBit 連接,而 VPN 連接目前僅提供 10 MBit。
雖然某些服務必須透過 VPN 連接,但大多數流量可以繞過它,因為 VPN 所做的只是減慢速度。 (我特別關注公共資料密集型服務,例如從官方 docker hub 或 npm 註冊表下載映像。但是,為了進行設置,讓我們採用像 fast.com 這樣的服務。)
如何將某些網站列入白名單以使用 VPN 連線或將其他網站列入黑名單以不使用 VPN 連線?
答案1
與為您設定 VPN 的人員討論。
這通常稱為分割路由,其中 VPN 隧道將用於公司網路內部的資源,而預設網關將用於其餘資源。這通常比按服務過濾更容易。一般情況下,公司會有一些網路上的一種內部計劃,可以輕鬆提供分割路由。
您應該檢查您的組織是否允許這樣做。並非所有組織都允許分割路由,因為他們希望對您的流量進行資料遺失防護。
答案2
以下是一些可以嘗試的替代方案:
- 省略更改預設網關:
在設定指令中將“redirect-gateway”選項變更為redirect-private
- 僅透過 VPN 路由 VPN 流量:(
如果伺服器將明確路由推送到客戶端,則有效)
選取 VPN 設定 -> IPV4 -> 下的複選框
“僅將此連接用於其網路上的資源”
如果他們推送明確路由,則只有該流量才會通過 VPN。
- 推送非 VPN 流量外部隧道的:
連接到您的 VPN,然後在終端中:
host www.sl.se # host you want outside tunnel
194.68.78.65 # the ip of the host above
sudo ip route add 194.68.78.65 dev eth0 # route traffic outside VPN
這會將流量路由到 VPN 外部的 www.sl.se
- 推送 VPN 流量裡面逐一主機的隧道
連接到您的 VPN,然後在終端中:
host your-vpn-onlyhost.com # host you want inside of tunnel
1.1.1.1.1 # the ip of the host above
sudo ip route add 1.1.1.1 dev tun0 # route traffic inside VPN
所有範例均假設 VPN 介面名稱為 tun0,而您的網路卡名稱為 eth0。且 DNS 名稱可以在 Internet 上解析。
答案3
你想要的是所謂的分割隧道。
您可以執行的操作取決於您在客戶端電腦上的使用者類型。如果您不是 sudoer,則必須由此類使用者(通常是系統管理員)來修復此問題。
如果您是 sudoer(並且假設您的組織可以進行這樣的更改;這取決於您來了解),您可以按照本指南。
筆記:
16.04 和 18.04 之間發生了一些更改,因此較舊的指南可能不完整。
我不知道 18.04 和 19.10 之間是否有任何變化導致該指南不起作用。
有關的: