我在 Debian 12 bookworm
我正在尝试通过接口 tun9 转发来自(和到)组中用户的所有流量watchers
,并阻止他们使用 enp2s0。
我已经使用 openvpn 建立了一个隧道,使用 protonvpn 的设置,使用免费层(一个 IP 地址 - 这就是我所需要的)。
但我遇到了问题...
我在以下位置建立了一项服务/etc/systemd/system/proton.service
:
[Unit]
Description=ProtonVPN for Watchers
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/protonvpn/<file-location>.ovpn
ExecStartPost=/etc/openvpn/protonvpn/routing.sh
[Install]
WantedBy=multi-user.target
/etc/openvpn/protonvpn/routing.sh
这是上面的服务文件中引用的内容。
#!/bin/bash
# Flush existing rules
iptables -F
NET=192.168.0.0/24
GROUP=watchers
IFACE_INTERNAL=enp2s0
IFACE_VPN=tun9
ALLOW_PORT_FROM_LOCAL=2000
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner ! --uid-owner $GROUP -m owner --gid-owner $GROUP -j REJECT
iptables -A INPUT -i $IFACE_VPN -j ACCEPT
iptables -A INPUT -i $IFACE_INTERNAL -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -m owner /! --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A FORWARD
以下是.ovpn
client
dev tun9
proto tcp
remote <ip address removed> 8443
remote <ip address removed> 7770
remote <ip address removed>
remote-random
resolv-retry infinite
nobind
cipher AES-256-GCM
setenv CLIENT_CERT 0
tun-mtu 1500
mssfix 0
persist-key
persist-tun
reneg-sec 0
remote-cert-tls server
auth-user-pass /etc/openvpn/protonvpn/creds.txt
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
and all my certs below....
我尝试了许多 iptables 规则,但似乎都不起作用。
我启动该服务并且它似乎运行正常。
当我运行 时curl --interface tun9 icanhazip.com
,我获得了 VPN 的正确 IP 地址。此外,当我运行 时,sudo -u watchers curl icanhazip.com
我还会获得 VPN 的正确 IP。
但是,当我curl icanhazip.com
从不在观察者组(任何其他用户)中的用户运行时,我也会获得 VPN IP。
我能够获取非 VPN IP 的唯一方法是在 curl () 中强制执行curl --interface enp2s0 icanhazip.com
。
任何帮助,将不胜感激。