
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 檢查它。