98 lines
3.7 KiB
Plaintext
98 lines
3.7 KiB
Plaintext
====== Смена 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~~
|