运行 openvpn 时 tun 接口的名称?

运行 openvpn 时 tun 接口的名称?

我有两个 OpenVPN 客户端设置,由 systemd 服务openvpn.foo和控制openvpn.bar。它们连接到不同的 VPN,并且在任何时间点都可能处于活动状态,也可能不处于活动状态。

我想为它们设置不同的 iptables 防火墙规则。问题是第一个 OpenVPN 进程似乎会抓取接口tun0,无论它是配置 foo 还是 bar。问题是我无法将 iptables 规则附加到接口,因为我目前不知道它是与 VPN foo 还是 bar 配合使用。

问题:

  • 有没有办法让 OpenVPN 始终为给定的配置发出相同的接口名称?我在配置文件中寻找一个选项,但找不到。persist-tun似乎不够,因为它似乎无法在重启后继续存在。
  • 有没有办法在事后确定哪个接口与哪个配置相匹配?
  • 由于我获得的 IP 地址也不是完全可预测的,我也无法将规则附加到这些地址上。有人能想出一个技巧来将它们附加到哪里吗?

谢谢!

答案1

您可以在.ovpn配置文件中给出tun设备名称:

编辑文件/etc/openvpn/server-vpngw.conf并添加以下行:

dev tun3
client-config-dir /etc/openvpn/ccd

然后创建以下文件/etc/openvpn/ccd/vpn-name并进行如下编辑:

ifconfig-push 10.8.2.202 10.8.2.201
push "route 172.16.12.0 255.255.255.0"
push "route 10.2.4.0 255.255.255.0"

答案2

另一个更简单的方法是编辑客户端,而不是服务器:

  1. 编辑客户端配置文件

    sudo vim /etc/openvpn/client1.conf

并硬编码所需的 tun 接口名称:

dev tun69
  1. 使用第二个 VPN 客户端配置文件重复步骤 1

  2. 重新启动服务以使更改生效:

sudo service openvpn restart

答案3

有没有办法在事后确定哪个接口与哪个配置相匹配?

您甚至可以指定通用名称:

  • dev-type tun指定它是“tun”设备类型,
  • dev myovpn将其命名为“myovpn”。

相关内容