У меня проблемы с настройкой Killswitch для данного файла конфигурации OpenVPN.По сути, я хочу, чтобы все соединения вне VPN были разорваны, кроме петли и локальной подсети.
Сначала добавьте группу и измените правила iptables:
# add system group
sudo groupadd -r openvpn
# flush tables and drop all by default
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
# allow local subnet, loopback and the tunnel
sudo iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT -i eth0
sudo iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT -o eth0
sudo iptables -A INPUT -j ACCEPT -i lo
sudo iptables -A OUTPUT -j ACCEPT -o lo
sudo iptables -A OUTPUT -j ACCEPT -o tun0
# allow VPN and established connections
sudo iptables -A OUTPUT -j ACCEPT -m owner --gid-owner openvpn
sudo iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
Затем добавьте dev tun0
иgroup openvpn
в файл .ovpn
и запустите OpenVPN с sudo openvpn --config /path/to/config.ovpn
.К сожалению, я получаю следующую ошибку:
$ sudo openvpn --config file.ovpn
Tue Jul 9 04:12:03 2019 OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Oct 14 2018
Tue Jul 9 04:12:03 2019 library versions: OpenSSL 1.0.2r 26 Feb 2019, LZO 2.08
Tue Jul 9 04:12:03 2019 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Tue Jul 9 04:12:03 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]46.48.181.129:1195
Tue Jul 9 04:12:03 2019 Socket Buffers: R=[212992->212992] S=[212992->212992]
Tue Jul 9 04:12:03 2019 UDP link local: (not bound)
Tue Jul 9 04:12:03 2019 UDP link remote: [AF_INET]46.48.181.129:1195
Tue Jul 9 04:12:03 2019 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
Tue Jul 9 04:12:03 2019 write UDP: Operation not permitted (code=1)
Tue Jul 9 04:12:05 2019 write UDP: Operation not permitted (code=1)
Tue Jul 9 04:12:09 2019 write UDP: Operation not permitted (code=1)
Tue Jul 9 04:12:18 2019 write UDP: Operation not permitted (code=1)
(...)
, и Интернет вообще не работает.После некоторого понимания я обнаружил, что реализация iptables
только проверяет, является ли пользователь gid
его основной группой.Это не будет работать, если пользователь просто принадлежит (разветвляется) к такой группе.Итак, поскольку openvpn
должен быть запущен с sudo
, Killswitch будет работать правильно, как только я установлю openvpn
для основной группы root
.
Однако я очень сомневаюсь в том, чтобы использовать такую настройку., поскольку игра с основной группой root
может привести к поломке в долгосрочной перспективе.Мне не удалось заставить его работать, создав фиктивного пользователя vpnuser
, изменив его основную группу на openvpn
, а затем запустив OpenVPN с параметром --user vpnuser
или поместив запись user vpnuser
в файл .ovpn
.Он просто не работает и выдает ту же ошибку, о которой я упоминал, несмотря на правильную установку uid
.
Итак, есть ли разумный выход из этой ситуации, кроме простого ручного кодирования IP-адресов VPN для каждого * 1030?* файл один за другим?