讓 openvpn 用戶端透過伺服器轉送所有流量

讓 openvpn 用戶端透過伺服器轉送所有流量

我正在嘗試設定 openvpn 伺服器和客戶端,所有客戶端流量都透過伺服器路由。我目前可以透過客戶端存取伺服器,但是當我在伺服器上啟用「push「redirect-gateway def1」」時,客戶端將失去連接到網際網路、VPN 或其他方式的所有能力。此外,它無法再連接到伺服器,但 LAN 連線仍然正常。我的伺服器設定檔是:

local ***.***

port 1194

proto tcp

dev tun

ca ca.crt
cert server.crt
key server.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway local def1"

keepalive 10 120

comp-lzo

persist-key
persist-tun

status openvpn-status.log

verb 3

這是客戶:

client

dev tun

proto tcp

remote ***.*** 1194

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert laptop.crt
key laptop.key

ns-cert-type server

comp-lzo

verb 3

在伺服器上,我啟用了 ip 轉送並透過 iptables 啟用了路由:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

但用戶端仍然無法連接到 VPN 或互聯網上的任何內容。

答案1

作為參考,HOWTO 的相關部分是這裡,儘管我懷疑你已經遵循了這一點。

我嘗試的第一件事是刪除“本地”,即命令應該是

push "redirect-gateway def1"

並不是

push "redirect-gateway local def1"

只有當所有用戶端都位於同一子網路上時,本地標誌才會起作用。

其他需要注意的事情是 DNS 流量是透過 VPN 路由的,因此除非您處理過這個問題,否則您將無法解析位址。 DHCP 也可以被轉發,儘管在您的情況下看起來不會發生這種情況,因為您使用的是路由而不是橋接 VPN,但無論如何可能值得檢查。

答案2

如果您要將新網關「推送」到用戶端,那麼您還需要推送一些路由,特別是到該網關所在子網路的路由。這將使您可以透過 VPN 存取互聯網。如果網關所在的網路與 VPN 伺服器所在的網路不同,那麼您還需要額外的路由,以便用戶端可以存取這些其他網路。另外,您可能還想將 DNS 伺服器推送到用戶端,因為否則用戶端無法解析它現在連接到的網路上的任何目標的名稱。

以下是我們的 OpenVPN 伺服器設定檔的摘錄:

# 將路由推送到客戶端,將其綁定到我們本地
# 虛擬端點。
#
推送“路由 10.180.0.1 255.255.255.255”

# 推送客戶端需要進入的任何路由
# 到本地網路。
#
推送“路由 10.171.0.0 255.255.0.0”
推播“路由 10.172.0.0 255.255.0.0”
推送“路由 10.173.0.0 255.255.0.0”
推播“路由 10.174.0.0 255.255.0.0”
推送“路由 10.175.0.0 255.255.0.0”
推送“路由 10.176.0.0 255.255.0.0”
推播“路由 10.177.0.0 255.255.0.0”
推送“路由 10.181.0.0 255.255.0.0”
推送“路由 10.182.0.0 255.255.0.0”
推“路由 192.168.61.0 255.255.255.0”

# 將 DHCP 選項推送到 Windows 用戶端。
#
推“dhcp-option DOMAIN our-internal-domain.com”
推送“dhcp-選項 DNS 10.abc”
推“dhcp-選項 WINS 10.bcd”

這些都是內部網絡,我們甚至不推送新的網關(因為我們的大多數用戶都是從很遠的地方連接的,他們最好通過默認網關訪問互聯網,而且我們不是控制狂)。

答案3

實際上,問題是 NAT 設定不正確。已修復,VPN 現在可以使用。

相關內容