Существует ли способ препятствовать тому, чтобы моя система использовала регулярный Интернет и только ограничила его использованием VPN только на Ubuntu 17? К вашему сведению я уже устанавливаю protonvpn через .ovpn файлы и в настоящее время просто соединяюсь с ним путем включения его с выпадающим в меню.
Я хочу вынудить все соединения только использовать VPN, и если vpn не доступен, это должно предотвратить все типы соединений с Интернетом.
Я знаю, что это имеет некоторое отношение к установке маршрутов на разделе IPv4, но я не уверен что.
Решение состоит в том, чтобы использовать iptables для отклонения всего исходящего трафика кроме тех случаев, когда трафик проходит через туннель.
Если туннель повреждается, доступ к Интернету больше не возможен, пока туннель не устанавливается снова.
Я предполагаю, что Вы используете ОСНОВАННУЮ НА БОЧКЕ маршрутизацию для соединения с сервером OpenVPN и что Вы используете шлюз перенаправления клиентская опция OpenVPN.
Создайте файл где угодно (например,/root/iptables.vpn), необходимо измениться [VPN_IP] и [VPN_PORT] с ip:port vpn сервера
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Set a default DROP policy.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# Allow basic INPUT traffic.
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
# Allow basic OUTPUT traffic.
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
# Allow traffic to the OpenVPN server and via the tunnel.
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -p udp -m udp -d [VPN_IP] --dport [VPN_PORT] -j ACCEPT
# Reject everything else.
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
После того, как соединение с vpn сервером устанавливается, необходимо включить правила:
iptables-restore < /root/iptables.vpn
Весь трафик теперь будет направленной канавкой туннель.
ОТРЕДАКТИРУЙТЕ Как запись автора, он выполняет соединение с помощью администратора сети как подход, таким образом, проблема состоит в том, что он не знает удаленный IP сервера, поскольку это захватывается от пула. Я думаю (но на данный момент у меня нет времени для тестирования этого решения), которым может быть один подход:
while read line do eval "echo ${line}" done < /root/iptables.vpn | /sbin/iptables-restore -v
(https://stackoverflow.com/questions/5289665/use-external-file-with-variables)
безопасность сценария 2
/etc/openvpn/route.sh
(Как я запускаю скрипт после того, как OpenVPN соединился успешно?)
Сценарий будет работать каждый раз, когда соединение с vpn устанавливается.
Как упомянуто я не протестировал это...
Не забудьте сбрасывать свой iptables после закрытия соединения VPN
Много путей, но это зависит, на котором конкретном программном обеспечении VPN Вы используете.
Можно препятствовать тому, чтобы система получила доступ к сети если не на VPN путем редактирования интерфейсной конфигурации, любого в /etc/network/interfaces
или (более вероятно, если Вы используете настольную систему) от NetworkManager. Откройте NM, выберите, "настраивают сети" или некоторых такой, затем редактируют опции для того, как каждый интерфейс заставляет свой адрес иметь статические маршруты, которые не включают маршрут по умолчанию (или добавляют маршрут по умолчанию для помещения в черный список). Затем настройте свою VPN, чтобы дать Вам, значение по умолчанию направляет через это, когда это подходит.
Без большего количества деталей о Вашей установке это - приблизительно столько же, сколько я могу сказать.
Да. Использовать ufw
.
Когда Вы соединяетесь с VPN, она создает виртуальное устройство. Беря, который Ваше имя Ethernet enp3s0
и Ваш сервер VPN слушает порт 1194, используйте те команды.
# Default policies
ufw default deny incoming
ufw default deny outgoing
# Openvpn interface (adjust interface accordingly to your configuration)
ufw allow in on tun0
ufw allow out on tun0
# Local Network (adjust ip accordingly to your configuration)
ufw allow in on enp3s0 from 192.168.1.0/24
ufw allow out on enp3s0 to 192.168.1.0/24
# Openvpn (adjust port accordingly to your configuration)
ufw allow in on enp3s0 from any port 1194
ufw allow out on enp3s0 to any port 1194
Если Вы connecto сервер по имени, не IP-адресом, необходимо позволить утечку DNS за пределами VPN. Добавьте те команды:
# DNS
ufw allow in from any to any port 53
ufw allow out from any to any port 53
Затем используйте ufw enable
включать те правила. ufw disable
если что-то идет не так, как надо, или Вы хотите прямой доступ.
Любезность ArchWiki.
Поскольку вы используете ProtonVPN, имейте в виду, что теперь они выпустили клиент командной строки, выполняющий большинство функций, включая настройку и управление подключением.
Самое главное, что касается вашего вопроса, этот клиент включает функцию KILL SWITCH. Я протестировал его, и он отлично работает. Одно предостережение: вам нужно отключиться и снова подключиться, чтобы активировать любые изменения, которые вы внесли в конфигурацию аварийного выключателя (включение, отключение и разрешение или запрет локальной подсети). Мой личный упрек этому инструменту заключается в том, что он не позволяет проверить, в каком состоянии конфигурации переключателя уничтожения вы находитесь. Так что, надеюсь, ваше использование не требует частых изменений конфигурации.
Подробности об установке и использовании см. на сайте protonVPN.com: Инструмент командной строки ProtonVPN для Linux
Для справки здесь копия раздела о переключателе отключения:
ProtonVPN-CLI имеет встроенный переключатель отключения, который защищает ваши данные в случае, если ваше VPN-соединение прерывается или прерывается неожиданно.
Включение Kill Switch
Чтобы включить Kill Switch, откройте меню конфигурации с помощью protonvpn configure
, затем выберите 5 для Kill Switch и подтвердите активацию, нажав 1 или 2, в зависимости от ваших предпочтений.
1 заблокирует доступ из вашей сети с прямым подключением (например, общедоступного Wi-Fi) и рекомендуется для ноутбуков, которые могут подключаться к ненадежным сетям.
2 разрешает доступ из вашей сети с прямым подключением и предназначен для компьютеров, которые не покидают безопасную и надежную локальную сеть, например вашу домашнюю сеть.