我在 Netgear 无线路由器设置 (192.168.8.1) 上有一个 OpenVPN 服务器。Netgear 路由器设置在另一个连接到互联网的路由器 (192.168.7.1) 后面。我已向面向互联网的路由器添加了端口转发规则。它将 VPN 端口转发到 Netgear 路由器。
我尝试使用以下命令启动 OpenVPN 客户端:
sudo openvpn --config "client2.conf"
但我收到有关路线的错误消息。
Sun Sep 30 10:58:42 2018 us=603862 /sbin/ip route add 192.168.8.1/24 via 192.168.8.1 Error: Invalid prefix for given prefix length
我需要指定另一条路线吗?如果是的话。我该如何指定路线?
我的client2.conf
样子
client dev tap proto udp remote [MY_EXTERNAL_IP] [MY_VPN_PORT] resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key cipher AES-128-CBC comp-lzo verb 5
Netgear 路由器的设置。
面向互联网的路由器的设置。
答案1
192.168.8.1/24
您的 OpenVPN 服务器正在发送一条无意义的路由 - 它指定该路由用于 24 位前缀,但地址的位设置超出了该限制(实际上它似乎是一个完整的 32 位主机地址)。
您收到错误消息是因为这些参数相互矛盾。有效目标要么是192.168.8.1/32
单个主机,要么192.168.8.0/24
是整个网络。
192.168.8.1/24 通过 192.168.8.1
此外,它是一条循环路径,可以自行完成;例如,“为了到达 192.168.8.1,您必须先到达 192.168.8.1”。(听说过这个术语吗?第22条军规?)
在某些情况下这是有效的 - 在 tun 模式 OpenVPN 连接(点对点链接)中是可以接受的如果还指定了一个接口,因为网关将被忽略,但在这个例子中,接口不是指定,并且 VPN 无论如何都是分接模式。
如果系统已经有专门针对 192.168.8.1/32 的链接路由,它也将是有效的,但不知道在您的环境中是否有这样的路由。
但在正常情况下,路线的网关不是同一路线目的地的一部分。根据您真正想要的,更可能的路线是192.168.8.0/24 via 192.168.7.1
或相反192.168.7.0/24 via 192.168.8.1
(我必须在这里猜测)。
我需要指定另一条路线吗?
取决于您要路由什么以及路由到哪里... 假设您首先手动添加了此路由。如果它来自 Netgear 的固件,您最好的选择可能是忽略它(或尝试固件升级)。
如果希望 VPN 客户端能够访问主局域网中的设备,Netgear 的 VPN 服务器需要分发的路由是
192.168.7.0/24 via 192.168.8.1
。(请注意,分发给客户端的路由是不是一回事作为 Netgear 路由器本身使用的路由。)