
我正在嘗試設定 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 現在可以使用。