![如何防止客户端通过 PfSense 在 OpenVPN 中获取静态 IP(由客户端特定覆盖设置)?](https://linux22.com/image/721275/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%80%9A%E8%BF%87%20PfSense%20%E5%9C%A8%20OpenVPN%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E9%9D%99%E6%80%81%20IP%EF%BC%88%E7%94%B1%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%89%B9%E5%AE%9A%E8%A6%86%E7%9B%96%E8%AE%BE%E7%BD%AE%EF%BC%89%EF%BC%9F.png)
我在通过 PfSense 进行 OpenVPN 时遇到当前设置问题。情况如下:
我已经在网络 192.168.222.0/24 中创建了一个 OpenVPN 服务器;
创建了两个客户端证书,C1 和 C2。
C1 通过“客户端特定覆盖”选项卡将 192.168.222.2/24 作为其静态 IP。
- C2 没有特殊配置(因此其 IP 将根据其与 OpenVPN 服务器的连接顺序而动态变化)。
当将 C2 连接到 OpenVPN 服务器时,C2 获取 IP 192.168.222.2。
在 C2 连接后,将 C1 连接到 OpenVPN 服务器,C1 获取 IP 192.168.222.2(其静态 IP 地址在“客户端特定覆盖”中定义)哎呀!
我如何防止 OpenVPN 服务器将 C2 的静态定义的 IP 地址提供给 C1?
我试过@Luca Gibelli 的回答,重启服务器后,它停止工作。查看日志发现 openvpn 抛出了以下错误:
Oct 2 17:43:33 openvpn 36651 Use --help for more information.
Oct 2 17:43:33 openvpn 36651 Options error: --server already defines an ifconfig-pool, so you can't also specify --ifconfig-pool explicitly
另外,我发现了关于此问题的讨论这里但没有解决方案。
有什么办法可以绕过这个错误吗?
答案1
您正在寻找的是ifconfig-pool
OpenVPN 选项。它允许您为客户端指定动态 IP 地址的 IP 范围。如果您想分配 192.168.222.10-254 范围内的动态 IP,请使用:
ifconfig-pool 192.168.222.10 192.168.222.254 255.255.255.0
您可以Advanced configuration
在 pfSense 的 OpenVPN 选项卡下添加此选项。
更多信息:https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html
答案2
由于您使用了--server 192.168.222.0 255.255.255.0
指令,并且可能使用--topology subnet
了选项,因此您确实有办法确保其他客户端不会获取该 IP 地址。将“client-config-dir”选项添加到服务器的配置文件中并指定一个目录,如下所示:
--client-config-dir /vpn/client-configs
然后在 /vpn/client-configs 目录中,创建一个具有静态分配的 IP 的文件:
/vpn/client-configs/clientname
文件:
ifconfig-push 192.168.222.10 192.168.222.11
OpenVPN 网站上有更多信息这里
答案3
您可能误用了用户证书的 X.509 通用名称。
每个用户证书的 CN 必须是唯一的,默认情况下 pfSense 会username-as-common-name
在服务器配置中添加。
因此,在客户端特定覆盖设置页面内的通用名称字段中:
- 如果您的客户端证书的 CN 为空,请使用用户名。
- 否则,优先使用客户端证书通用名称的值。
OpenVPN 服务器
设备模式:tun
严格用户-CN 匹配:已检查
隧道:192.168.222.0/24
拓扑:子网
C1 - 客户端特定覆盖
通用名称:用户名或客户端证书的 CN
高级:ifconfig-push 192.168.222.240 255.255.255.0
C3——客户端特定覆盖
通用名称:用户名或客户端证书的 CN
高级:ifconfig-push 192.168.222.241 255.255.255.0
C2,无覆盖:应获取 192.168.222.2/24