如何強制所有流量通過VPN?
我在伺服器上設置了一個 openVPN,我正在為我的客戶端使用 openVPN 連接。我有一些需要訪問的內部網站,其中一些無法正常工作。我想確保當流量通過 VPN 而不是通過正常的網際網路連接時。我的網路的網關 ip 是 192.168.0.1,openVPN 的網關是 10.8.0.1。我已經完成了跟踪路由,它顯示不工作的網站訪問的是 192.168.0.1 而不是 10.8.0.1。我將如何強制所有流量通過 vpn?我執行 Windows 7 作為客戶端,執行 ubuntu 10.04 作為伺服器。
執行
將以下指令添加到伺服器配置文件:
推送“重定向網關 def1”
如果您的 VPN 設置是通過無線網路進行的,其中所有客戶端和伺服器都在同一個無線子網上,請添加本地標誌:
推送“重定向網關本地 def1”
將重定向網關選項推送到客戶端將導致源自客戶端電腦的所有 IP 網路流量通過 OpenVPN 伺服器。需要將伺服器配置為以某種方式處理此流量,例如通過 NAT 將其連接到 Internet,或通過伺服器站點的 HTTP 代理對其進行路由。
在 Linux 上,您可以使用如下命令將 VPN 客戶端流量 NAT 到網際網路:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
此命令假定 VPN 子網是 10.8.0.0/24(取自 OpenVPN 伺服器配置中的 server 指令)並且本地乙太網介面是 eth0。
當使用重定向網關時,OpenVPN 客戶端將通過 VPN 路由 DNS 查詢,而 VPN 伺服器將需要處理它們。這可以通過將 DNS 伺服器地址推送到連接的客戶端來完成,這將在 VPN 處於活動狀態時替換其正常的 DNS 伺服器設置。例如:
push “dhcp-option DNS 10.8.0.1” 將配置 Windows 客戶端(或具有一些額外伺服器端腳本的非 Windows 客戶端)使用 10.8.0.1 作為其 DNS 伺服器。可以從客戶端訪問的任何地址都可以用作 DNS 伺服器地址。