OpenVPN:限制客户端对特定目标客户端的访问 我有两个 OpenVPN 客户端(ovpn_dest1、ovpn_dest2),它们连续运行,并且有一个私有网络(10.60.10.0/24 和 10.60.20.0/24),我想从两个 Windows OpenVPN 客户端访问它。
但是,Windows OpenVPN 客户端(ovpn_user1、ovpn_user2)只能访问其各自的网络(10.60.10.0/24 或 10.60.20.0/24)。
ovpn_user1 可以访问 ovpn_dest1 (10.60.10.0/24),而 ovpn_user2 只能访问 ovpn_dest2 (10.60.20.0/24)。
当前设置使用主机 OpenVPN server.conf 文件中的客户端到客户端指令,这是允许 Windows 客户端与 ovpn_dest1/2 及其网络设备(device1_1/device1_2/etc)通信所必需的。
不幸的是,这个客户端到客户端指令意味着 Windows 客户端也可以访问所有 ovpn_dest1/2 客户端,这是从安全角度不希望看到的。
网络和 IP 指定:
ovpn_dest1 - 10.60.10.2
device1_1 - 10.60.10.3
device1_2 - 10.60.10.4
ovpn_dest2 - 10.60.20.2
device2_1 - 10.60.20.3
ovpn_user1 - 10.60.10.0/24
ovpn_user2 - 10.60.20.0/24
/etc/openvpn/server/server.conf:
local 188.166.226.159
port 1194
proto udp
dev tun0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 67.207.67.3"
push "dhcp-option DNS 67.207.67.2"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify
log-append /var/log/openvpn.log
client-to-client
client-config-dir ccd
/etc/openvpn/服务器/ccd/ovpn_dest1
route 10.60.10.0 255.255.255.0
iroute 10.60.10.0 255.255.255.0
push "route 10.60.10.0 255.255.255.0"
/etc/openvpn/服务器/ccd/ovpn_dest2
route 10.60.20.0 255.255.255.0
iroute 10.60.20.0 255.255.255.0
push "route 10.60.20.0 255.255.255.0"
我还可以从任何 Windows OpenVPN 客户端(ovpn_user1/ovpn_user2)连接到以下所有设备:
http://10.8.0.2/ (ovpn_dest1)
http://10.8.0.3/ (ovpn_dest2)
http://10.60.10.2/ (ovpn_dest1)
http://10.60.20.2/ (ovpn_dest2)
10.60.10.3 (device1_1)
但是我想限制 Windows 客户端的访问,以便特定客户端只能访问其特定的 ovpn_destN 网络。
我尝试过使用 iptables,但我并不是这方面的专家,而且似乎 server.conf 文件中的客户端到客户端指令有效地覆盖了 iptables 中试图阻止源和目标之间路由的任何操作。(指令“客户端到客户端联网将在 OpenVPN 内部完成,而无需到达主机层”)。似乎我必须从 server.conf 中删除“客户端到客户端”以限制连接,但删除此行后我无法建立通信。
我曾考虑使用多个 OpenVPN 实例(每个 ovpn_destN、ovpn_userN 组一个),但是如果有几十个实例,这可能并不理想。尽管多个网络可能不会频繁同时访问。
将 Windows 客户端限制到特定目标网络的最佳方法是什么(以及如何)?
答案1
由于您的配置包含push "redirect-gateway def1 bypass-dhcp"
,这意味着 OpenVPN 客户端将把其默认网关设置为 OpenVPN 服务器的地址。
这意味着所有客户端流量都会转发到 OpenVPN 服务器。因此这些ccd
配置毫无意义,因为这些路由已被默认路由覆盖。
首先,确保您的客户端分配了静态 IP 地址。在客户端的ovpn_dest1
服务器目录中的文件中添加以下行:ccd
ifconfig-push 10.8.0.2 255.255.255.0
并分别ovpn_dest2
:
ifconfig-push 10.8.0.3 255.255.255.0
然后在OpenVPN服务器上配置防火墙,如下所示:
iptables -I FORWARD -s 10.8.0.2 -d 10.60.20.2 -j DROP
iptables -I FORWARD -s 10.8.0.3 -d 10.60.10.2 -j DROP
第一个阻止从客户端 1 到目的地 2 的流量,第二个阻止从客户端 2 到目的地 1 的流量。