如何使用 OpenVPN 访问远程网络?

如何使用 OpenVPN 访问远程网络?

我目前正在尝试配置 OpenVPN 以远程访问我们的公司网络。

我能够建立连接并 ping 配置地址(10.8.0.1)上的服务器,但是我无法从客户端访问服务器端的网络。

该服务器配置为使用以下方式推送路由到服务器:

push "route 155.0.0.0 255.255.0.0 10.8.0.1 1"

其中 155.0.0.0/16 是服务器端网络。

这没有用所以我添加了

push "route 155.0.0.68 255.255.255.255 net_gateway 1"

因为我读到过一些文章说,如果所有数据包(包括发往服务器 (155.0.0.68) 的数据包)都通过隧道路由,那么就会出现问题,但这仍然不起作用。我无法 ping 通服务器网络上的任何地址。甚至 155.0.0.68 上的服务器本身也无法 ping 通。

我究竟做错了什么?

附加信息:客户端和服务器运行 Windows,OpenVPN 以 tun 模式运行,使用 udp 协议。客户端和服务器上的防火墙均已关闭。

我已经在网络工程上问过这个问题,但有人告诉我 ServerFault 是解决此类问题的更好的地方。

答案1

需要 VPN 隧道两侧的路由。

此外,服务器上还必须启用 IP 路由。例如在 Windows 7 上:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPEnableRouter"=dword:00000001

假设以下 IP 和子网:

  • 客户端子网192.168.0.0/24
  • 客户端 IP192.168.0.2
  • 客户端 VPN IP10.8.0.2
  • 服务器端子网155.0.0.0/16
  • 服务器 IP155.0.0.68
  • 服务器 VPN IP10.8.0.1

按键

为服务器和客户端创建一组密钥。查看 OpenVPN 安装目录中的 README..\OpenVPN\easy-rsa\README.txt以获取有关如何生成这些密钥的说明。

服务器端配置

将以下行添加到服务器配置文件:

port 1194
proto udp
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir C:\\OpenVPN\\config\\ccd
route 192.168.0.0 255.255.255.0 10.8.0.2
ca C:\\OpenVPN\\config\\ca.crt
cert C:\\OpenVPN\\config\\server.crt
key C:\\OpenVPN\\config\\server.key
dh C:\\OpenVPN\\config\\dh1024.pem
keepalive 10 60
comp-lzo
persist-key
persist-tun
status C:\\OpenVPN\\config\\openvpn-status-tun.log 20
log C:\\OpenVPN\\config\\openvpn-tun.log
verb 3

将路径替换为相应的安装目录。

在服务器上添加自定义客户端配置文件:

ccd在与服务器配置文件相同的目录中创建一个目录,并在其中创建一个以中国通用名称) 的客户端证书。

检查客户端证书并查找此行(CN=<client_name>):

Subject: C=CH, ST=State, L=City, O=org, OU=unit, CN=client1/name=EasyRSA/emailAddress=root@localhost

在此示例中,文件将被命名client1(不带扩展名),将以下行添加到文件:

ifconfig-push 10.8.0.2 255.255.255.0
push "route 155.0.0.0 255.255.0.0 10.8.0.1"
iroute 192.168.0.0 255.255.255.0
  • ifconfig-push将为该客户端提供静态 IP
  • push "route ..."将到达服务器端子网的路由推送到客户端
  • iroute在 OpenVPN 中生成到客户端子网的内部路由

客户端配置

将以下行添加到客户端配置文件:

client
dev tun
proto udp
remote 155.0.0.68 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ca C:\\OpenVPN\\config\\client1.crt
cert C:\\OpenVPN\\config\\client1.crt
key C:\\OpenVPN\\config\\client1.key
remote-cert-tls server

用您的安装目录替换路径。

附加航线

如果运行 OpenVPN 的服务器也是路由器,并且将其设置为default-gateway服务器端子网上的所有客户端,则此设置有效。

如果存在专用路由器,则向其添加以下静态路由(或在所有客户端上添加它们)以到达 VPN 子网和 子网client1

静态服务器端子网路由:

Destination        Gateway             Genmask
192.168.0.0        155.0.0.68          255.255.255.0
10.8.0.0           155.0.0.68          255.255.255.0

有关此主题的更多提示,请参阅这个答案

答案2

因为您的清洁不知道如何到达另一边,所以您需要这样的东西:

VPN 客户端:

route add -net 192.168.0.0/24 gw 10.8.0.1 1 #in this way, the client knows, how to reach the other side.

远程局域网(服务器端),如果我想访问我的 VPN 服务器端的一台电脑:

route add -net 10.0.0/16 gw "192.168.0.100(local lan ip of my vpn server)"` #in this way, the other pc knows, where to route the traffic for the vpn network

抱歉,对于命令,但我不使用 Windows

答案3

如果您的客户端运行的是 Windows 7,那么您必须以管理员权限运行开放式 VPN 客户端,否则路由表将不会被填充,并且您可能无法 ping 服务器网络上的主机。

相关内容