Рейтинг:1

Предотвратить запуск службы OpenVPN systemd дома

флаг gd

На моем ноутбуке я установил службу systemd, которая устанавливает OpenVPN-соединение с моим домом и позволяет ему автоматически запускаться при загрузке, чтобы я мог получить доступ к своему домашнему серверу в любом месте.

Беда в том, что когда я уже дома, он все равно подключается к VPN, и путает таблицу маршрутов ноута, поэтому я не могу получить доступ к серверу, когда я дома.

Есть ли способ, я могу позволить службе systemd запускаться условно?

Спасибо!

Ginnungagap avatar
флаг gu
Вы проверили справочные страницы systemd unit/service/exec? Меня нет дома, поэтому я не буду делать это за вас, но я знаю, что вы можете настроить условия, я просто никогда не пробовал что-то настолько запутанное.
Рейтинг:0
флаг gd

Я размещаю свое решение здесь, может быть, это может помочь кому-то.

Я кодирую скрипт, который попытается запросить MAC-адрес моего домашнего маршрутизатора, если он будет успешным (это означает, что я дома), остановлюсь, чтобы подключиться к VPN. Затем измените файл службы systemd (vpn-to-home.service), добавьте строку ExecStartPre=/usr/local/bin/stop-if-lan.sh.

Скрипт stop-if-lan.sh:

#!/бин/баш
/usr/bin/ping -4n -c 1 -q -W 1 IP_OF_ROUTER > /dev/null
MAC_ADDRESS=`arp -n | awk '/IP_OF_ROUTER/{print $3;exit}'`

если [ "$MAC_ADDRESS" == "MAC_OF_ROUTER" ] ; тогда
# echo "Мы уже дома."
   выход 1
фи
выход 0

Служба vpn-to-home.service systemd:

[Ед. изм]
Requisite=network-online.target
After=syslog.target network-online.target 

[Оказание услуг]
Тип = бездействие
RuntimeDirectory=openvpn-клиент
WorkingDirectory=/run/openvpn-клиент
PrivateTmp=истина
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE

ExecStartPre=/usr/local/bin/check-if-lan.sh

ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client/client-to-home.ovpn
ЛимитNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ПротектСистем=истина
ПротектХоме=истина
KillMode=процесс

[Установить]
WantedBy=многопользовательская.цель
Рейтинг:0
флаг cn

Я не эксперт по сетям, но я думаю, что это можно сделать, если вы используете Ethernet дома и WiFi в другом месте. В этом случае вы должны иметь возможность маршрутизировать свой интерфейс WiFi через VPN-соединение.

Leon avatar
флаг gd
Спасибо! Но я всегда использую WiFi, даже если дома. Кроме того, мой ноутбук не имеет интерфейса локальной сети.

Ответить или комментировать

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