為什麼具有靜態 (vpn)-IP 的 OpenVPN 客戶端無法 ping 伺服器而具有 DHCP (vpn)-ip 的客戶端可以?
我正在建立一個 OpenVPN 網路。這個想法是連接到 VPN 的伺服器獲得一個固定的 IP,而客戶端(使用伺服器的服務)獲得 dhcp ip。
- 伺服器應該獲得一個IP
10.10.0.1 - 10.10.0.254
- 客戶端應該獲得一個IP
10.10.1.1 - 10.10.255.254
我目前的設置如下所示:
- OpenVPN 伺服器 10.10.0.1
- 應用程序伺服器 10.10.0.20 <- 通過 ccd 靜態
- 客戶端 10.10.1.2 <- DHCP
我實現了我的客戶獲得正確範圍內的 DHCP 地址。他們還能夠 ping OpenVPN 伺服器,反之亦然。
我還能夠為伺服器配置客戶端特定配置,以便它們獲得靜態 IP,但由於某種原因,它們無法 ping OpenVPN 伺服器,我也無法從 OpenVPN 伺服器 ping 客戶端。
有人可以幫我找出我配置錯誤的地方嗎?
OpenVPN 配置文件
OpenVPN 伺服器配置:
port 3194 proto udp dev tun mode server ca server_cert/ca.crt cert server_cert/ovpn-server.crt key server_cert/ovpn-server.key # This file should be kept secret dh server_cert/dh.pem tls-server cipher AES-256-CBC ifconfig 10.10.0.1 255.255.0.0 ifconfig-pool 10.10.1.1 10.10.255.254 route 10.10.0.0 255.255.0.0 push "route-gateway 10.10.0.1 255.255.0.0" push "route 10.10.0.0 255.255.0.0" ifconfig-pool-persist ipp.txt client-config-dir ccd client-to-client duplicate-cn keepalive 10 120 persist-key persist-tun status openvpn-status.log log-append /var/log/openvpn.log verb 6 explicit-exit-notify 1
我的應用程序伺服器的客戶端特定配置:
ifconfig-push 10.10.0.20 10.10.0.1
我的 client.conf(在應用伺服器上使用)
client dev tun proto udp port 3194 remote vpn.domain.com 3194 nobind cipher AES-256-CBC ca keys/ca.crt cert /etc/openvpn/keys/ngin-web01.crt key /etc/openvpn/keys/ngin-web01.key log-append /var/log/openvpn.log verb 6
路線
OpenVPN 伺服器 (10.10.0.1):
root@ovpn-srv01:/home/axxmin# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.128.20.1 0.0.0.0 UG 0 0 0 ens18 10.10.0.0 255.255.0.0 255.255.0.0 UG 0 0 0 tun0 10.128.20.0 0.0.0.0 255.255.255.0 U 0 0 0 ens18 255.255.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 root@ovpn-srv01:/home/axxmin# routel target gateway source proto scope dev tbl 10.10.0.0/ 16 255.255.0.0 tun0 255.255.0.0 10.10.0.1 kernel link tun0 10.10.0.1 local 10.10.0.1 kernel host tun0 local default 10.128.20.1 static ens18 10.128.20.0/ 24 10.128.20.6 kernel link ens18 10.128.20.0 broadcast 10.128.20.6 kernel link ens18 local 10.128.20.6 local 10.128.20.6 kernel host ens18 local 10.128.20.255 broadcast 10.128.20.6 kernel link ens18 local 127.0.0.0 broadcast 127.0.0.1 kernel link lo local 127.0.0.0/ 8 local 127.0.0.1 kernel host lo local 127.0.0.1 local 127.0.0.1 kernel host lo local 127.255.255.255 broadcast 127.0.0.1 kernel link lo local ::1 kernel lo fe80::/ 64 kernel ens18 fe80::/ 64 kernel tun0 ::1 local kernel lo local fe80::1083:7fff:fedd:70c0 local kernel ens18 local fe80::b24c:97a4:281:de41 local kernel tun0 local ff00::/ 8 ens18 local ff00::/ 8 tun0 local
應用伺服器 (10.10.0.20)
root@ovpn-srv01:/home/axxmin# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.128.20.1 0.0.0.0 UG 0 0 0 ens18 10.10.0.0 255.255.0.0 255.255.0.0 UG 0 0 0 tun0 10.128.20.0 0.0.0.0 255.255.255.0 U 0 0 0 ens18 255.255.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 root@ovpn-srv01:/home/axxmin# routel target gateway source proto scope dev tbl 10.10.0.0/ 16 255.255.0.0 tun0 255.255.0.0 10.10.0.1 kernel link tun0 10.10.0.1 local 10.10.0.1 kernel host tun0 local default 10.128.20.1 static ens18 10.128.20.0/ 24 10.128.20.6 kernel link ens18 10.128.20.0 broadcast 10.128.20.6 kernel link ens18 local 10.128.20.6 local 10.128.20.6 kernel host ens18 local 10.128.20.255 broadcast 10.128.20.6 kernel link ens18 local 127.0.0.0 broadcast 127.0.0.1 kernel link lo local 127.0.0.0/ 8 local 127.0.0.1 kernel host lo local 127.0.0.1 local 127.0.0.1 kernel host lo local 127.255.255.255 broadcast 127.0.0.1 kernel link lo local ::1 kernel lo fe80::/ 64 kernel ens18 fe80::/ 64 kernel tun0 ::1 local kernel lo local fe80::1083:7fff:fedd:70c0 local kernel ens18 local fe80::b24c:97a4:281:de41 local kernel tun0 local ff00::/ 8 ens18 local ff00::/ 8 tun0 local
客戶端(10.10.1.2):
root@client-device:/home/pi# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.128.60.1 0.0.0.0 UG 202 0 0 eth0 10.10.0.0 10.10.1.1 255.255.0.0 UG 0 0 0 tun0 10.10.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.128.60.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0 root@client-device:/home/pi# routel target gateway source proto scope dev tbl 10.10.0.0/ 16 10.10.1.1 tun0 10.10.1.1 10.10.1.2 kernel link tun0 10.10.1.2 local 10.10.1.2 kernel host tun0 local default 10.128.60.1 10.128.60.33 dhcp eth0 10.128.60.0/ 24 10.128.60.33 dhcp link eth0 10.128.60.0 broadcast 10.128.60.33 kernel link eth0 local 10.128.60.33 local 10.128.60.33 kernel host eth0 local 10.128.60.255 broadcast 10.128.60.33 kernel link eth0 local 127.0.0.0 broadcast 127.0.0.1 kernel link lo local 127.0.0.0/ 8 local 127.0.0.1 kernel host lo local 127.0.0.1 local 127.0.0.1 kernel host lo local 127.255.255.255 broadcast 127.0.0.1 kernel link lo local ::1 kernel lo fe80::/ 64 kernel eth0 fe80::/ 64 kernel tun0 ::1 local kernel lo local fe80::20d4:6b14:ff16:e230 local kernel tun0 local fe80::65cf:ce3:fc9f:20fa local kernel eth0 local ff00::/ 8 eth0 local ff00::/ 8 tun0 local
由於您沒有在伺服器配置文件中指定拓撲,因此 Openvpn 在
net30
預設模式下工作。在這種模式下,每個客戶端都將被分配一個來自 /30 子網的 IP,子網中的另一個可用 IP 將被分配給該隧道的 p2p 地址。ifconfig
該模式下和命令的參數route
是“local-ip peer-ip”,而不是“local-ip netmask”。為了使您的配置工作,您需要包括
topology subnet
行在您的伺服器配置中,因此
ifconfig
androute
命令將大部分都可以。唯一的例外是客戶端的靜態地址分配,應該是ifconfig-push 10.10.0.20 255.255.0.0
而且您不需要推送
route 10.10.0.0 255.255.0.0
命令,因為網路遮罩和 IPifconfig-push
已經設置了該路由。 編輯/更正:您確實需要傳播路線,僅當您server
在配置中使用該指令時它才會自動發生。我的錯。您可能還需要更改
ifconfig-pool
指令,原因有兩個。首先,10.10.1.1
地址不應該是池的一部分,因為它是 VPN 伺服器的 IP。其次,由於您不使用預設的 /24 網路遮罩,因此最好也指定它:ifconfig-pool 10.10.1.2 10.10.1.254 255.255.0.0