Напишите набор правил брандмауэра для сервера, на котором работает клиент OpenVPN, который работает как killswitch, то есть разрешает доступ в Интернет только через VPN IP. Обратите внимание, что подключение к VPN на сервере сделает его невосприимчивым к соединениям SSH, поэтому включите в правила брандмауэра исключение для SSH, чтобы SSH-соединение с сервером все еще возможно, когда сервер подключен к VPN.
У меня есть сервер, на котором я пытаюсь настроить клиент OpenVPN . Это само по себе не сложная задача - команда для соединения - это просто sudo openvpn configuration_file.ovpn.
Что было труднее было сделать killswitch, то есть программу, которая предотвращает соединение, выполняемое с помощью IP-адреса, отличного от VPN, в случае, если туннели VPN отключены по какой-либо причине. Я нашел этот скрипт на рабочем столе и протестировал его на рабочем столе:
sudo ufw default deny outgoing
sudo ufw default deny incoming
sudo ufw allow out on tun0 from any to any
sudo ufw allow in on tun0 from any to any
sudo ufw allow out from any to VPN.SERVER.IP.ADDRESS
sudo ufw enable
Однако на сервере возникает другая проблема - если сервер подключается к VPN, он перестает отвечать на SSH. Я нашел этот скрипт, протестировал его на сервере, и он сработал - он поддерживал реакцию сервера через SSH, когда он был подключен к VPN:
echo "201 novpn" >> /etc/iproute2/rt_tables
ip rule show | grep fwmark
ip rule add fwmark 65 table novpn
ip route add default via GATEWAY.IP.ADDRESS dev eth0 table novpn
ip route flush cache
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65
Теперь мне нужно объединить эти два сценария (или написать новый с нуля), т. е. имеют набор правил брандмауэра, которые реализуют killswitch для клиента OpenVPN, работающего на сервере, а также разрешают соединения SSH с сервером / с сервером. Как выглядит такой скрипт?