我尝试仅通过开放 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]