У меня есть 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.