OpenVPN 通过隧道路由到服务器本身

OpenVPN 通过隧道路由到服务器本身

我想使用 OpenVPN 连接访问我的本地资源。我已iptables设置为允许从192.168.1.0/24子网连接。当我从手机或 Windows 机器连接时,一切都运行正常。但当我尝试从 Ubuntu 连接时,却不行。

检查tcpdump并阅读大量日志后,我发现来自 Ubuntu 的数据包SRC=real white ip适用于手机或 Windows SRC=local tunnel ip,并且它可以按预期工作。

然后,我在连接到 VPN 时检查了我的路由,发现以下内容(假设77.77.77.77- OpenVPN 服务器,192.168.8.1- 我的路由器):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.255.5   0.0.0.0         UG    50     0        0 tun0
0.0.0.0         192.168.8.1     0.0.0.0         UG    600    0        0 wlp2s0
77.77.77.77     192.168.8.1     255.255.255.255 UGH   600    0        0 wlp2s0
192.168.8.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0
192.168.8.1     0.0.0.0         255.255.255.255 UH    600    0        0 wlp2s0
192.168.255.1   192.168.255.5   255.255.255.255 UGH   50     0        0 tun0
192.168.255.5   0.0.0.0         255.255.255.255 UH    50     0        0 tun0

我认为我的问题的根源是:

77.77.77.77     192.168.8.1     255.255.255.255 UGH   600    0        0 wlp2s0

因为它说要使用我的路由器作为网关来访问 VPN 服务器本身。结果,我看到的是我的真实 IP 地址,而不是隧道 IP 地址。

但我不知道如何解决这个问题。我已经尝试手动修改路由以通过隧道将流量路由到服务器,但这没有帮助:

77.77.77.77     192.168.255.5   255.255.255.255 UGH   600    0        0 tun0

因此,如果我的所有调查都正确理解了,那么为了解决问题,我需要通过隧道而不是默认网关将流量路由到 vpn 服务器本身。我认为redirect-gateway def1指令应该重定向全部VPN 上的流量,包括它本身。但看起来并非如此。

我的服务器配置文件

server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/vpn.example.com.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/vpn.example.com.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun
proto udp
port 1194
dev tun0
status /tmp/openvpn-status.log
user nobody
group nogroup
route 192.168.254.0 255.255.255.0
push "block-outside-dns"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DOMAIN lan"

我的客户端.ovpn

client
nobind
dev tun
remote-cert-tls server
remote vpn.example.com 1194 udp
...certificates...
key-direction 1
redirect-gateway def1

相关内容