howto-db/data/pages/yggdrasil/startup_ip_change.txt
2024-02-16 01:00:04 +00:00

98 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Смена IP-адреса в Yggdrasil при старте сервиса ======
Захотелось внести в [[yggdrasil:yggdrasil|Yggdrasil]] немножко анонимности. Если у вас на ПК нет никаких сервисов, привязанных к IP-адресу то его смена при каждой загрузке может не помешать.
Пример будет приведен для сервиса yggdrasil который управляется через systemctl.
===== Скрипт =====
Сам скрипт очень прост.
<code>
sed -i "s/$(cat \/etc\/yggdrasil.conf | grep 'PrivateKey')/$(yggdrasil -genconf | grep 'PrivateKey')/" /etc/yggdrasil.conf
</code>
Разберем этот скрипт.
Ищем строку с приватным ключом:
<code>
cat \/etc\/yggdrasil.conf | grep 'PrivateKey'
</code>
Генерируем новый конфиг с новым приватным ключом и грепаем строку с ключом:
<code>
yggdrasil -genconf | grep 'PrivateKey'
</code>
Далее подставляем результаты в sed.
===== systemctl =====
Теперь нам нужно поместить этот скрпит в файл сервиса yggdrasil.
Отредактируем файл сервиса yggdrasil:
<code>
systemctl edit yggdrasil.service
</code>
У вас в редакторе откроется подобный текст:
<code>
### Editing /etc/systemd/system/yggdrasil.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file
### Edits below this comment will be discarded
...
</code>
Добавьте наш override:
<code>
### Editing /etc/systemd/system/yggdrasil.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file
[Service]
ExecStartPre=/bin/bash -c '''sed -i "s/$(cat \/etc\/yggdrasil.conf | grep 'PrivateKey')/$(yggdrasil -genconf | grep 'PrivateKey')/" /etc/yggdrasil.conf'''
### Edits below this comment will be discarded
</code>
Сохраните изменения и выполните команду для обновления файлов конфигураций:
<code>
systemctl daemon-reload
</code>
===== Проверка =====
Теперь проверим, что наш override для файла сервиса применился. Выполним команду:
<code>
systemctl show --no-pager yggdrasil.service | grep -i 'ExecStartPre='
</code>
В выводе будет определение нашей команды, которая записана через override, и основной команды, которая была по умолчанию.
<code>
ExecStartPre={ path=/sbin/modprobe ; argv[]=/sbin/modprobe tun ; ignore_errors=yes ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
ExecStartPre={ path=/bin/bash ; argv[]=/bin/bash -c sed -i "s/$(cat \/etc\/yggdrasil.conf | grep PrivateKey)/$(yggdrasil -genconf | grep PrivateKey)/" /etc/yggdrasil.conf ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
</code>
Теперь проверим, что IP-адрес меняется, посмотрим наш текущий адрес:
<code>
ip -br a | grep tun0
tun0 UNKNOWN 202:f108:1d85:56cb:5ed1:5edc:7a5:df05/7
</code>
Перезапустим сервис:
<code>
systemctl restart yggdrasil.service
</code>
Проверим еще раз наш IP-адрес:
<code>
ip -br a | grep tun0
tun0 UNKNOWN 200:babe:dada:ffff:5ed1:5edc:7a5:ffff/7
</code>
Адрес изменился.
~~DISCUSSION~~