Linux — блокировать все соединения, кроме домена динамического IP VPN

Linux — блокировать все соединения, кроме домена динамического IP VPN

У меня есть VPN, к которому я подключаюсь (OpenVPN) через доменное имя, а не через IP. IP VPN динамический, может измениться в любой момент. Я хочу, чтобы единственное соединение моей машины с интернетом было my.vpn.domain.comиничегоеще.

Я бы использовал поиск OpenDNS в качестве my.vpn.domain.comпоиска, и я считаю, что это достаточно безопасно (предполагая, что он также блокирует все IP-адреса/подключения, которые не принадлежат домену vpn), и я не вижу лучших/других вариантов на основе IP-уровня.

Моя цель — создать действительно хороший аварийный выключатель VPN (без утечек или ручного вмешательства).

После того, как я подключился к VPN через его домен, я должен иметь возможность my.vpn.domain.comснять ограничение и разрешить моему брандмауэру / iptables разрешать только соединения через tun0. Затем, если соединение VPN прервется, снова начать my.vpn.domain.comтолько через, затем подключиться к vpn, затем разрешить все tun0 и т. д.

Можно ли это сделать через файл hosts или как-то еще? Я новичок в написании скриптов для Linux.

решение1

Почему бы не попробовать что-то вроде этого:

Настройте iptables так, чтобы все DNS-запросы на вашем нетуннельном интерфейсе отклонялись, но разрешалось использовать my.vpn.domain.

iptables -A INPUT -o eth0 -p udp -s $your_dns_server --sport 53 -m state --state ESTABLISHED     -j ACCEPT
iptables -A INPUT -o eth0 -p udp --dport 53 -j DENY

iptables -A OUTPUT -o eth0 -p udp --dport 53 -m string --string my.vpn.domain --algo bm -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -d $your_dns_server --dport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 53 -j DROP

Настройте OpenVPN для отправки всего трафика по туннелю после его установки

OpenVpn по умолчанию не направляет весь трафик по туннелю, но его можно настроить так, чтобы он делал это с помощью redirect-gateway. Прочитайте раздел «Направление всего клиентского трафика (включая веб-трафик) через VPN»здесь.

Настройте OpenVPN для автоматического переподключения

поэкспериментируйте со значениями конфигурации ping-restart и keepalive.

ping 10
ping-restart 120
push "ping 10"
push "ping-restart 60"

or equivalently:

keepalive 10 60

При необходимости внесите необходимые изменения, но в идеальном мире, если вы введете настройки iptables и настройки openvpn keepalive, ваш компьютер должен иметь возможность запрашивать только my.vpn.domain, устанавливать и восстанавливать соединение openvpn и маршрутизировать это соединение только тогда, когда оно доступно.

Если вы еще не читали документацию OpenVPN оЗапуск сервера OpenVPN на динамическом IP-адресечтобы убедиться, что конфигурация вашего сервера верна.

...и если клиентская машина удаленная, убедитесь, что вы разрешаете SSH через iptables, чтобы не заблокировать себя. Будьте осторожны, если вы новичок в iptables.

Связанный контент