Openvpn:服务器无法 ping 忽略重定向网关的客户端
Openvpn: Server cannot ping a client which ignore redirect-gateway
我在从我的 vpn 服务器 ping 客户端时遇到问题(而不是其他方式)。
我有一个 openvpn 服务器:10.8.0.1/16.
我有一个 客户端 1,其中所有流量都通过 VPN 路由:10.8.1.9/16。此客户端 1 没问题:一切正常。
我有一个 客户端 2 (10.8.1.3/16),我希望流量不通过 VPN 路由,但是可访问的机器。
这个client 2,10.8.1.3,可以ping通server -> 10.8.0.1 ping ok。
但是,服务器无法 ping 通客户端 2...:(
我找了 2 天,尽管阅读了文档和其他帖子,但还是找不到。
有人有想法吗?
这是我的配置。
服务器:
server 10.8.0.0 255.255.0.0
dev tun
topology subnet
cipher AES-256-GCM
auth SHA256
verb 3
# keys here
# ...
###
key-direction 0
keepalive 10 60
persist-key
persist-tun
proto udp
# Rely on Docker to do port mapping, internally always 1194
port 1194
dev tun0
status /etc/openvpn/openvpn-status.log
user nobody
group nogroup
#comp-lzo no
### Route Configurations Below
### Push Configurations Below
push "block-outside-dns"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 172.8.0.1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Pour indiquer le chemin des fichiers config des clients
client-config-dir /etc/openvpn/ccd
# Pour interdire la connexion de client sans fichier config
ccd-exclusive
# Pour autoriser openvpn-monitor
management 0.0.0.0 5555
ifconfig-pool-persist ipp.txt
explicit-exit-notify 1
路线table:
default via 10.255.255.1 dev ens192
10.8.0.0/16 via 172.8.0.2 dev br-2222222222
10.255.255.1 dev ens192 scope link
172.8.0.0/24 dev br-2222222222 proto kernel scope link src 172.8.0.1
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
正如您在此路由 table 中所见,VPN 流量 (10.8.0.0/16) 通过 172.8.0.2 路由。事实上,我的 openvpn 运行 在 docker.
我的客户端 2 (10.8.1.3) VPN 配置:
client
nobind
dev tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
remote my-server-vpn.com 1194 udp
key-direction 1
# To not consider the server redirect-gateway in order to avoid all traffic through VPN Gateway
pull-filter ignore "redirect-gateway"
路由 table 客户端 2 (10.8.1.3)(当客户端 vpn 为 运行ning 时):
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.3 metric 100
10.8.0.0/16 dev tun0 proto kernel scope link src 10.8.1.3
<my-server-vpn-ip> via 192.168.1.1 dev eth0
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-1111111111 proto kernel scope link src 172.18.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.3 metric 100
192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.3 metric 100
从 10.8.1.3 ping 到 10.8.0.1 成功
从 10.8.0.1 ping 到 10.8.1.3 KO
希望有人能帮助我
非常感谢!
我找到了解决方案:
# From my client2, to see the ping request
tcpdump icmp
# From my server, exec the ping
ping 10.8.1.3
在我的客户端 2 上,此命令告诉我 ping 到达地址 172.8.0.1。因此,我在 client2 配置文件中添加了以下行:
route 172.8.0.1 255.255.255.0
这解决了我的问题,现在我可以从服务器 ping client2。
我在从我的 vpn 服务器 ping 客户端时遇到问题(而不是其他方式)。
我有一个 openvpn 服务器:10.8.0.1/16.
我有一个 客户端 1,其中所有流量都通过 VPN 路由:10.8.1.9/16。此客户端 1 没问题:一切正常。
我有一个 客户端 2 (10.8.1.3/16),我希望流量不通过 VPN 路由,但是可访问的机器。 这个client 2,10.8.1.3,可以ping通server -> 10.8.0.1 ping ok。 但是,服务器无法 ping 通客户端 2...:(
我找了 2 天,尽管阅读了文档和其他帖子,但还是找不到。
有人有想法吗?
这是我的配置。 服务器:
server 10.8.0.0 255.255.0.0
dev tun
topology subnet
cipher AES-256-GCM
auth SHA256
verb 3
# keys here
# ...
###
key-direction 0
keepalive 10 60
persist-key
persist-tun
proto udp
# Rely on Docker to do port mapping, internally always 1194
port 1194
dev tun0
status /etc/openvpn/openvpn-status.log
user nobody
group nogroup
#comp-lzo no
### Route Configurations Below
### Push Configurations Below
push "block-outside-dns"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 172.8.0.1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Pour indiquer le chemin des fichiers config des clients
client-config-dir /etc/openvpn/ccd
# Pour interdire la connexion de client sans fichier config
ccd-exclusive
# Pour autoriser openvpn-monitor
management 0.0.0.0 5555
ifconfig-pool-persist ipp.txt
explicit-exit-notify 1
路线table:
default via 10.255.255.1 dev ens192
10.8.0.0/16 via 172.8.0.2 dev br-2222222222
10.255.255.1 dev ens192 scope link
172.8.0.0/24 dev br-2222222222 proto kernel scope link src 172.8.0.1
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
正如您在此路由 table 中所见,VPN 流量 (10.8.0.0/16) 通过 172.8.0.2 路由。事实上,我的 openvpn 运行 在 docker.
我的客户端 2 (10.8.1.3) VPN 配置:
client
nobind
dev tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
remote my-server-vpn.com 1194 udp
key-direction 1
# To not consider the server redirect-gateway in order to avoid all traffic through VPN Gateway
pull-filter ignore "redirect-gateway"
路由 table 客户端 2 (10.8.1.3)(当客户端 vpn 为 运行ning 时):
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.3 metric 100
10.8.0.0/16 dev tun0 proto kernel scope link src 10.8.1.3
<my-server-vpn-ip> via 192.168.1.1 dev eth0
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-1111111111 proto kernel scope link src 172.18.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.3 metric 100
192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.3 metric 100
从 10.8.1.3 ping 到 10.8.0.1 成功 从 10.8.0.1 ping 到 10.8.1.3 KO
希望有人能帮助我
非常感谢!
我找到了解决方案:
# From my client2, to see the ping request
tcpdump icmp
# From my server, exec the ping
ping 10.8.1.3
在我的客户端 2 上,此命令告诉我 ping 到达地址 172.8.0.1。因此,我在 client2 配置文件中添加了以下行:
route 172.8.0.1 255.255.255.0
这解决了我的问题,现在我可以从服务器 ping client2。