我有一个正在运行的 OpenVPN 服务器,其配置如下
- VPN 网络为 10.7.0.0/16
- LAN网络为192.168.100.0/24
客户端能够连接,但我无法访问位于 VPN 连接(192.168.100.*)后面的 LAN 主机。
push "route 192.168.100.0 255.255.255.0"
配置行应该可以解决这个问题,但是没有。我的错误在哪里?
分析
连接后,这是我的
netstat -rn
结果
default 10.7.0.5 UGScIg utun10
10.7/16 10.7.0.5 UGSc utun10
10.7.0.5 10.7.0.6 UHr utun10
10.7.0.5/32 link#23 UCS utun10
192.168.100 10.7.0.5 UGSc utun10
我本来期望
10.7.0.1
最后一行是网关,不是吗?
ifconfig 也许是一个线索,我的
ifconfig
客户端给了我
inet 10.7.0.2 --> 10.7.0.1
我期望它能在其他 VPN 上运行,就像我在其他环境中得到的那样。
↳ 用@lacek 的答案回答。
数据包捕获
VPN 服务器上的Atcpdump
在客户端 ping 期间给我
如果我捕获目标上的任何 ICMP 流量,则没有关于 ping 请求的日志。(我已尝试从另一个 LAN 主机进行,可以。直接从 VPN 主机进行,也可以。)
重点是 OpenVPN 服务不会将我的数据包转发到 LAN 网络。
配置
服务器配置文件会议
proto udp
ifconfig-pool-persist ipp.txt
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn.log
verb 3
mute 10
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
port 1194
dev tun
server 10.7.0.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "route 192.168.100.0 255.255.255.0 "
client-to-client
在服务器端,我在 Debian OS 上运行 OpenVPN 2.4.0。
答案1
乍一看一切都很好,所以我的猜测是防火墙阻止了从 VPN 到 LAN 的数据包,或者 LAN 上的计算机没有设置正确的路由,因此数据包无法从 LAN 传回 VPN。
关于ifconfig
输出:使用net30
拓扑(默认)时,openvpn 会设置点对点连接,其中为每个客户端分配一个 /30 网络。该网络中的一个 IP 属于客户端,另一个属于服务器。因此,您得到的输出是正确的。
答案2
感谢@Lacek,我找到了解决方案。
在 OpenVPN wiki 上,我找到了一篇关于我的具体案例的文章,其中openVpn 服务器不是 LAN 网关
所以
- 我的
push "route 10.7.0.0 255.255.0.0"
OpenVPN 服务器很好 - 但是我需要在我的 LAN 防火墙上配置路由,
10.7.0.0/24
在网关上添加此路由192.168.100.88
,其中 .88 是我在 OpenVPN 服务器上的静态 IP - 并在 OpenVPN 服务器上配置 IP 转发,输入以下命令(来自这篇维基文章)。
echo 1 > /proc/sys/net/ipv4/ip_forward
现在一切正常。