这篇文章可能会很长,因为我想确保我没有忘记任何事情。这可能是一个微不足道的问题,但我不知道我的设置出了什么问题。
设想
我最近配置了一个运行OpenVPN,目前正在运行在 ESXi 中的 VM 内。我的安装基于本指南,一切似乎都运行正常:我可以连接到我的 VPN 服务器(通过路由器上的端口转发)并使用证书认证登录。
什么不起作用
192.168.0.0
当我通过 VPN 连接时,我无法访问本地网络 () 上的机器。
目前,通过 VPN 成功连接到我的家庭网络后,我的 LAN 上的所有机器都无法访问(我甚至无法 ping 通它们)。
网络信息
网络配置非常简单:
- 我的本地网络:
192.168.0.0
- 我的 OpenVPN IP:
192.168.0.140
- 我的网关:
192.168.0.1
- 我的 VPN 网络:
10.8.0.0
- 我的 OpenVPN VPN IP:
10.8.0.1
- 路由器在端口上配置了端口转发
1194
我到目前为止尝试过的(高水平)
我已遵循三个资源来尝试解决此问题:
- OpenVPN 路由指南,特别是部分使用路由且 OpenVPN 未在默认网关上运行
- 这篇短文关于如何使用 OpenVPN 设置路由以连接到 LAN 上的主机
- 另一篇文章如何配置 ESXi 以实现此功能因为显然,在默认配置下,ESXi 可能会导致一些问题
- 在 VPN 服务器上启用 IP 转发
- 允许所有流量通过 OpenVPN 的防火墙
我到目前为止尝试过的方法(详细)
这是 OpenVPN server.conf
:
local 192.168.0.140
topology subnet
dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/vpnserver.crt
key /etc/openvpn/easy-rsa/keys/vpnserver.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
# server and remote endpoints
ifconfig 10.8.0.1 10.8.0.2
# Add route to Client routing table for the OpenVPN Server
push "route 10.8.0.1 255.255.255.255"
# Add route to Client routing table for the OpenVPN Subnet
push "route 10.8.0.0 255.255.255.0"
# your local subnet
push "route 192.168.0.0 255.255.255.0"
# Set primary domain name server address to the SOHO Router
# If your router does not do DNS, you can use Google DNS 8.8.8.8
push "dhcp-option DNS 192.168.0.254"
# Override the Client default gateway by using 0.0.0.0/1 and
# 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of
# overriding but not wiping out the original default gateway.
push "redirect-gateway def1"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log 20
log /var/log/openvpn.log
verb 1
一个例子client.ovpn
:
client
dev tun
proto udp
remote <my_router_ip> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type server
key-direction 1
cipher AES-128-CBC
comp-lzo
verb 1
mute 20
由于我当前的路由器不支持静态路由,很遗憾我无法一次性配置路由,但我必须在通过 VPN 连接时在每个要访问的设备上进行配置。例如,在我的 Plex 服务器 ( 192.168.0.110
) 上,我已执行以下操作:
route add -net 10.8.0.0/24 gw 192.168.0.140
这样我的 OpenVPN 机器 ( 192.168.0.140
) 就可以将 VPN 网络 ( ) 上的机器10.8.0.0
与本地网络上的机器 ( 192.168.0.0
) 连接起来。
我还确保在 OpenVPN 服务器上启用了 IP 转发,但取消注释了以下行/etc/sysctl.conf
:
net.ipv4.ip_forward=1
最后,我添加了以下iptables
规则,以允许来自 VPN 网络的所有流量到达本地网络:
# Allow traffic initiated from VPN to access LAN
iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
# Allow established traffic to pass back and forth
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
最后,我已将 ESXi 上的虚拟交换机配置vSwitch
为不丢弃混杂数据包,因为上面链接的文章指出,在其默认配置下它会丢弃这些数据包,这可能会在使用 OpenVPN 尝试访问本地网络上的机器时导致问题。
除非我遗漏了什么,否则这应该就是所有需要做的事情。不幸的是,成功连接到 VPN 后,我仍然无法 ping 网络上的机器192.168.0.0
。
再说一次,这可能是一件非常琐碎的事情,但无论如何我愿意为正确答案提供一些赏金,因为我首先设置 VPN 的原因之一就是能够访问我的其他机器而不需要在路由器上转发更多端口。
客户端计算机网络信息
这是我用来连接的机器的完整输出ipconfig
(为了“假装”从远程网络连接,我将手机的 3G 连接绑定并通过 Windows 的 Wi-Fi 进行连接):
C:\Windows\System32>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::2c0e:13f0:840c:37b4%15
IPv4 Address. . . . . . . . . . . : 10.8.0.10
Subnet Mask . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . :
Wireless LAN adapter Local Area Connection* 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::a5e8:546c:e046:a246%4
IPv4 Address. . . . . . . . . . . : 192.168.43.220
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.43.1
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter VirtualBox Host-Only Network:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::1d14:52cd:fd6a:2395%10
IPv4 Address. . . . . . . . . . . : 192.168.56.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Tunnel adapter isatap.{75888664-BED0-4908-8984-4DBCF9E9BDDC}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter isatap.{6F952140-AFCD-46E4-89E3-02CDEF869C50}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter isatap.{1F6CE10F-8498-4A7B-B647-FAE7422FF030}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
输出route print
:
C:\Windows\System32>route print
===========================================================================
Interface List
15...00 ff 1f 6c e1 0f ......TAP-Windows Adapter V9
7...12 56 f2 a5 d0 53 ......Microsoft Wi-Fi Direct Virtual Adapter
4...80 56 f2 a5 d0 53 ......Killer Wireless-N 1202 Network Adapter
3...80 fa 5b 00 d7 1f ......Realtek PCIe GBE Family Controller
10...08 00 27 00 68 59 ......VirtualBox Host-Only Ethernet Adapter
1...........................Software Loopback Interface 1
8...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
9...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
11...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.43.1 192.168.43.220 25
10.8.0.4 255.255.255.252 On-link 10.8.0.6 276
10.8.0.6 255.255.255.255 On-link 10.8.0.6 276
10.8.0.7 255.255.255.255 On-link 10.8.0.6 276
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.43.0 255.255.255.0 On-link 192.168.43.220 281
192.168.43.220 255.255.255.255 On-link 192.168.43.220 281
192.168.43.255 255.255.255.255 On-link 192.168.43.220 281
192.168.56.0 255.255.255.0 On-link 192.168.56.1 276
192.168.56.1 255.255.255.255 On-link 192.168.56.1 276
192.168.56.255 255.255.255.255 On-link 192.168.56.1 276
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.56.1 276
224.0.0.0 240.0.0.0 On-link 10.8.0.6 276
224.0.0.0 240.0.0.0 On-link 192.168.43.220 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.56.1 276
255.255.255.255 255.255.255.255 On-link 10.8.0.6 276
255.255.255.255 255.255.255.255 On-link 192.168.43.220 281
===========================================================================
Persistent Routes:
None
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
1 306 ::1/128 On-link
10 276 fe80::/64 On-link
15 276 fe80::/64 On-link
4 281 fe80::/64 On-link
10 276 fe80::1d14:52cd:fd6a:2395/128
On-link
15 276 fe80::2c0e:13f0:840c:37b4/128
On-link
4 281 fe80::a5e8:546c:e046:a246/128
On-link
1 306 ff00::/8 On-link
10 276 ff00::/8 On-link
15 276 ff00::/8 On-link
4 281 ff00::/8 On-link
===========================================================================
Persistent Routes:
None
答案1
好的,问题出在客户端。我不知道根本原因是什么,但基本上我的客户端由于某种原因不会从 OpenVPN 服务器接收静态路由。卸载并重新安装 OpenVPN 客户端解决了这个问题 :/
因此,上述配置是完全正确的。
答案2
我认为你所问的分割隧道。如果您使用的是 Windows 的原生 VPN 客户端,请转到控制面板->网络和 Internet->网络连接->您的 VPN 连接->属性->网络->IPv4 属性->高级->取消选中“在远程网络上使用默认网关”
如果您正在使用其他软件,只需查找拆分隧道即可。您可能还需要在服务器端启用它。
答案3
您没有以管理员身份运行 Windows 客户端。这是一个已知问题,OpenVPN 客户端配置了接口地址,但无法操作路由表。顺便说一句,这是从它的日志中推断出来的。
去阅读(例如):https://uwnthesis.wordpress.com/2013/03/25/how-to-run-openvpn-with-administrator-rights-windows-7/