OpenVPN:仅通过 VPN 路由特定子网 - 适用于单个 IP 地址

OpenVPN:仅通过 VPN 路由特定子网 - 适用于单个 IP 地址

我尝试仅通过开放 VPN 路由特定子网/单个子网。

我在超级用户上读过几个类似的问题,甚至发现 好答案我的问题。

所以我现在能够通过 vpn 路由单个 ip 地址。为此,我添加了类似以下内容/etc/openvpn/client.conf

route-nopull

route 1.2.3.4 255.255.255.255
route 5.6.7.8 255.255.255.255
route 9.10.11.12 255.255.255.255

然而,这只解决了我问题的一半,因为我想要做的是通过 vpn 路由特定子网,而不仅仅是单个地址。

我曾尝试过

route x.y.19.178 255.255.255.0

我相信它应该通过 vpn 将整个流量路由到 xy19.178/24 子网,但事实并非如此。相反,我在 syslog 中看到以下错误:

Dec 18 16:11:01 wi-dev ovpn-client[31421]: /sbin/ip route add x.y.19.178/24 via z.a.0.1
Dec 18 16:11:01 wi-dev ovpn-client[31421]: ERROR: Linux route add command failed: external program exited with error status: 2 

知道我的客户端(或服务器)配置可能有什么问题吗?

答案1

您的网络掩码对于您使用的 IP 地址无效。具体来说,如果您获取 IP 地址并将其转换为二进制,您将获得:

IP   = x.y.19.178            = XXXXXXXX.YYYYYYYY.00010011.10110010
MASK = 255.255.255.252 (/30) = 11111111.11111111.11111111.11111100

为了使 IP 地址对子网有效,IP 必须位于子网的开头,或者用二进制表示,IP 只能在1子网掩码有 s 的地方有 s 。因此,如果我们从 IP 中1删除最后一个,我们得到:1

IP   = x.y.19.176            = 00001010.00000000.00010011.10110000

因此,子网的起始地址实际上应该是x.y.19.176。如果您想要一个不同于 的子网,则必须计算适当的 IP /30。我使用了此工具做一些计算。

另请注意:如果你只是在命令行运行日志中给出的命令

/sbin/ip route add x.y.19.178/24 via z.a.0.1

您将收到错误。在我的计算机上,我收到“无效参数”,而此命令成功:

/sbin/ip route add 192.168.19.176/24 via 192.168.0.1

答案2

如果你有服务器端(Openvpn服务器)访问,通常位于 /etc/openvpn/server/server.conf/etc/openvpn/server.conf 评论此配置

#######push "redirect-gateway def1 bypass-dhcp" 

只需输入您想要的网站 IP 地址即可

push  "route 96.6.31.216 255.255.255.255"

保存此文件并重新启动 openvpn 服务systemctl restart [email protected]

相关内容