Killswitch:阻止除动态 IP VPN 之外的所有连接(如果我不知道 IP,则无法使用 iptables)

Killswitch:阻止除动态 IP VPN 之外的所有连接(如果我不知道 IP,则无法使用 iptables)

我有一个通过域名连接的 VPN,而不是通过 IP。 (在 Debian 中使用 OpenVPN)

VPN 的 IP 是动态的,可以随时更改,这是设计造成的,不受我的控制。我想要我的机器仅有的与互联网的通信,除了tun0、 to be my.vpn.domain.com(我猜是通过 OpenDNS)和没有什么别的。没有泄漏。

现在,我手动检查域中的有效 VPN IP,并使用 iptables / ufw 进行适当的限制。但我需要一个全自动(重新)连接的解决方案。

我认为唯一的选择是使用应用程序层(第 7 层)解决方案,因为 iptables(第 3+4 层)无法处理域解析。看来我想要一些使用 OpenDNS 自动获取 VPN 的 IP,同时也没有像上面提到的其他泄漏的东西。

我们怎样才能做到这一点?我可以使用 PFSense 执行此操作,但无法使用 PFSense。

答案1

我想解决方案是有一个脚本

  1. 名称解析
  2. Netfilter/路由表的修改

并将此脚本集成到OpenVPN的启动程序中。这可以完成

  1. 使用 OpenVPN 内部脚本 ( --up)
  2. 在其启动脚本中的 OpenVPN 外部(例如ExecStartPre=在 systemd 中)

我不确定第一种情况,但我认为在两种情况下,有必要(至少是有用的)防止 OpenVPN 在隧道断开后重试建立连接(或至少限制重试所用的时间)。

在这两种情况下,都需要openvpn从外部重新启动,例如Restart=always在 systemd 单元文件中。

相关内容