You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

pfSense中如何基于用户账户配置防火墙规则限制OpenVPN访问指定IP

pfSense中如何基于用户账户配置防火墙规则限制OpenVPN访问指定IP

Hey there! 你遇到的问题其实挺常见的——pfSense的防火墙规则默认是基于IP地址或别名来识别源的,直接填用户账户名foo.extern当然会报错啦,咱们来一步步解决这个问题:

为什么会报错?

防火墙规则的「源地址」字段只接受IP地址、子网或者预先定义的别名,不支持直接输入用户账户名称,所以你直接填foo.extern才会收到那个提示。

解决方案一:给用户绑定固定OpenVPN IP,再基于IP做规则

这是最稳妥且通用的方法,不管你用的是证书认证还是用户名密码认证都适用:

  1. 给用户分配固定VPN IP
    进入pfSense后台,依次打开 VPN > OpenVPN > Client Specific Overrides,点击「Add」新建一条覆盖规则。
    • 在「Common Name」栏填写foo.extern(如果是证书认证,这里要和用户证书里的通用名完全一致;如果是用户名密码认证,就填用户账户名)。
    • 在「IPv4 Tunnel Network」栏指定一个固定IP,比如10.8.0.10(要确保这个IP在你的OpenVPN隧道网段里,比如你的隧道网段是10.8.0.0/24,就选这个网段里未被占用的IP)。
    • 保存并应用配置。之后这个用户每次连接OpenVPN都会拿到这个固定IP。
  2. 创建防火墙规则
    回到Firewall > Rules > [你的OpenVPN接口],新建规则:
    • 动作设为「Pass」
    • 接口选你的OpenVPN接口
    • 地址家族选「IPv4」
    • 协议选「Any」
    • 源地址类型选「Single host or alias」,填入刚才给用户分配的固定IP(比如10.8.0.10
    • 目标地址类型选「Single host or alias」,填入192.168.56.20
    • 保存并应用规则,这样就只有这个用户的VPN连接能访问目标IP了。

解决方案二:用用户组配合防火墙规则的用户匹配(适合新版pfSense)

如果你的pfSense版本比较新(2.5+以上),可以直接基于用户/用户组来做规则:

  1. 创建用户组
    进入System > User Manager > Groups,点击「Add」新建一个组,比如命名为VPN_Restricted_Access,然后把foo.extern添加到这个组里,保存应用。
  2. 创建基于用户组的防火墙规则
    Firewall > Rules > [你的OpenVPN接口]新建规则:
    • 动作设为「Pass」
    • 接口、地址家族、协议按你的需求设置
    • 源地址类型选「User Group」,然后选择刚才创建的VPN_Restricted_Access
    • 目标地址填192.168.56.20
    • 保存应用规则即可。

注意事项

  • 如果用的是用户名密码认证的OpenVPN,要确保你的OpenVPN服务器配置里的「Authentication Method」选择了Local Database或者对应的认证源,这样pfSense才能识别到连接的用户身份。
  • 防火墙规则的顺序很重要!要把这条允许规则放在「拒绝所有」的规则前面,否则会被先匹配到拒绝规则而无法生效。

备注:内容来源于stack exchange,提问作者Yaegaki2

火山引擎 最新活动