OpenVPN:连接到服务器的客户端=防火墙;但无法访问局域网内的数据库
我有 5 个 VLAN:
vlan 2: 192.168.12.0/24
vlan 3: 192.168.13.0/24
vlan 4: 192.168.14.0/24
vlan 5: 192.168.15.0/24
vlan 6: 192.168.100.0/24
所有LAN都已连接到交换机cisco 3650三层。交换机Layer3连接防火墙(CentOS 6.2安装了squid和shorewall 4);
防火墙有 eth0: 172.16.1.101 连接到调制解调器:172.16.1.1; eth1:192.168.99.99 连接到交换机第 3 层:192.168.99.100 无交换机端口。
VPN 客户端连接并具有 IP 类别:192.168.10.0/24。现在从LAN到Internet的所有流量都正常,没有问题。
当客户端使用 openvpn 成功连接到服务器但无法 ping 或访问 LAN 中的任何计算机时。我做错了什么?
答案1
这可能是路由或防火墙问题。首先,您应该检查是否可以从 VPN 客户端 ping 服务器/防火墙。检查是否可以 ping 通 eth1 和 tun1 地址。
如果这些检查失败,您可能缺少路线。也许openVPN不会强制客户端设置内部子网的路由。
在客户端上,假设它是 Linux 客户端,您必须运行route -n
并检查它是否有远程 LAN 的网关。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.99.0 192.168.10.## 255.255.255.0 UG 0 0 0 tun1
...
192.168.10.##应该是服务器/防火墙上tun1接口的地址。
如果有路由,您应该至少能够 ping 通 tun1 iface 地址。
为了更快地调试,您可以禁用 shorewall,顺便说一句,您应该检查您的防火墙规则,您必须启用从 vpn tun 接口到 LAN 的转发,反之亦然。
使用 IPTables 应该是这样的:
# iptables -A FORWARD -i tun+ -o eth1 -j ACCEPT
# iptables -A FORWARD -i eth1 -o tun+ -j ACCEPT
tun+ 代表“any tun”,你应该使用真正的 tun 设备,用 ifconfig 检查它。