仅允许使用 VPN 访问 LAN 上的特定 IP 地址

仅允许使用 VPN 访问 LAN 上的特定 IP 地址

我有一台运行 PiVPN 的 Raspberry PI,并且想限制可以通过 VPN 访问的 LAN IP 地址,以便只有一项服务可用。

我搜索过,但我找到的只有 PTPP VPN,我不相信它会有帮助。

答案1

在 OpenVPN 中(PiVPN 就是 OpenVPN)。

您所使用的是防火墙/iprules 和拆分隧道的组合。

  • 防火墙阻止客户端访问防火墙后面的 LAN 中的任何其他内容。

  • 分割隧道将允许客户端仅使用 VPN 来提供 VPN 后面的服务,并使用客户端的本地 LAN 来处理其余流量(否则它们将被锁定在 VPN 上的服务上,并且将无法访问其他任何内容)。

关于防火墙,最好的方法是使用专用的物理防火墙。然而,最快的方法是iptables按照以下方式在运行 OpenVPN 的服务器上进行设置:

  1. 允许已建立的流量流向 tun0<->eth0
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  1. 禁止客户端到客户端的流量
iptables -A FORWARD -i tun0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j DROP
  1. 允许流量到服务子网
iptables -A FORWARD -i tun0 -s 192.168.1.0/24 -d 192.16.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
  1. 接受到tun0适配器的流量
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT

如果需要更精细的粒度,可以使用步骤 3 将流量限制到单个服务(例如 192.16.2.231/32)

注意:根据拓扑更改 IP 地址并添加其他规则

要启用分割隧道,您需要执行以下操作:

  1. 停止默认路由重定向

    服务器将push "redirect-gateway def1"在连接设置期间推送类似内容。这会将路由 0.0.0.0 添加到已建立的 VPN,因此所有流量都将转向 VPN。您需要防止这种情况发生,因此请push从服务器脚本中删除或添加到客户端配置pull-filter ignore "redirect-gateway"以告诉客户端忽略服务器发送的内容。有关阻止路由的更多信息,请查看此回答

  2. 添加要用于 VPN 的 LAN 路由

    服务器通常会将 VPN 后面的路由发送为push "route 192.168.1.0 255.255.255.0"。将您的路由添加到服务器配置中的列表(在服务器端),或在客户端通过添加route 192.168.1.0 255.255.255.0到客户端配置来添加。

相关内容