Отключите доступ в Интернет только если ее полученный доступ через VPN на Ubuntu 17

Существует ли способ препятствовать тому, чтобы моя система использовала регулярный Интернет и только ограничила его использованием VPN только на Ubuntu 17? К вашему сведению я уже устанавливаю protonvpn через .ovpn файлы и в настоящее время просто соединяюсь с ним путем включения его с выпадающим в меню.

Я хочу вынудить все соединения только использовать VPN, и если vpn не доступен, это должно предотвратить все типы соединений с Интернетом.

Я знаю, что это имеет некоторое отношение к установке маршрутов на разделе IPv4, но я не уверен что.

enter image description here

3
задан 6 March 2018 в 18:24

4 ответа

Решение состоит в том, чтобы использовать 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 сервера, поскольку это захватывается от пула. Я думаю (но на данный момент у меня нет времени для тестирования этого решения), которым может быть один подход:

  1. Измените ранее созданный файл (в нашем примере/root/iptables.vpn), заменив [VPN_IP] $route_vpn_gateway и [VPN_PORT] с $remote_port
  2. Создайте сценарий (например,/etc/openvpn/route.sh):
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)

  1. Измените (и затем перезагрузите), Ваше .openvpn добавление файла:

безопасность сценария 2

/etc/openvpn/route.sh

(Как я запускаю скрипт после того, как OpenVPN соединился успешно?)

Сценарий будет работать каждый раз, когда соединение с vpn устанавливается.

Как упомянуто я не протестировал это...

Не забудьте сбрасывать свой iptables после закрытия соединения VPN

5
ответ дан 1 December 2019 в 13:23

Много путей, но это зависит, на котором конкретном программном обеспечении VPN Вы используете.

Можно препятствовать тому, чтобы система получила доступ к сети если не на VPN путем редактирования интерфейсной конфигурации, любого в /etc/network/interfaces или (более вероятно, если Вы используете настольную систему) от NetworkManager. Откройте NM, выберите, "настраивают сети" или некоторых такой, затем редактируют опции для того, как каждый интерфейс заставляет свой адрес иметь статические маршруты, которые не включают маршрут по умолчанию (или добавляют маршрут по умолчанию для помещения в черный список). Затем настройте свою VPN, чтобы дать Вам, значение по умолчанию направляет через это, когда это подходит.

Без большего количества деталей о Вашей установке это - приблизительно столько же, сколько я могу сказать.

1
ответ дан 1 December 2019 в 13:23

Да. Использовать 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.

1
ответ дан 1 December 2019 в 13:23

Поскольку вы используете 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 разрешает доступ из вашей сети с прямым подключением и предназначен для компьютеров, которые не покидают безопасную и надежную локальную сеть, например вашу домашнюю сеть.

При следующем подключении функция Kill Switch будет включена.

0
ответ дан 15 April 2020 в 21:16

Другие вопросы по тегам:

Похожие вопросы: