我有两个 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
另一个更简单的方法是编辑客户端,而不是服务器:
编辑客户端配置文件
sudo vim /etc/openvpn/client1.conf
并硬编码所需的 tun 接口名称:
dev tun69
使用第二个 VPN 客户端配置文件重复步骤 1
重新启动服务以使更改生效:
sudo service openvpn restart
答案3
有没有办法在事后确定哪个接口与哪个配置相匹配?
您甚至可以指定通用名称:
dev-type tun
指定它是“tun”设备类型,dev myovpn
将其命名为“myovpn”。