OpenVPN - Ошибка привязки сокета на локальном адресе [AF_INET] IP: 1194: Невозможно назначить запрошенный адрес

Согласно вашей ссылке на страницу, когда вы создаете каталог, gdrive печатает его id. Посмотрите на приведенный там пример:

$ gdrive mkdir gdrive-bin
Directory 0B3X9GlR6EmbnY1RLVTk5VUtOVkk created

Поэтому вы можете использовать, например, awk, чтобы сохранить только 2-е слово и затем предоставить его последующим командам загрузки:

#!/bin/bash
dir=$(drive mkdir $(date '+%d-%m-%y') | awk '$3=="created"{print $2}')
: ${dir?}
for file in /home/backup/*.tar
do   drive upload -p "$dir" "$file"
done

The : ${dir?} останавливает скрипт, если нам не удается найти id.

6
25.01.2018, 18:20
2 ответа

Удаление директивы "local" из конфигурационного файла openvpn не является правильным решением. Что, если вам требуется, чтобы демон openvpn привязывался только к одному сетевому интерфейсу, в чем и заключается смысл этой директивы?

Корень проблемы, похоже, в том, что демон openvpn пытается запуститься слишком рано, до того, как сетевые интерфейсы сервера достигнут состояния, когда можно привязаться только к одному из них. Посмотрев на стандартный сценарий инициализации openvpn, я вижу, что он настроен на ожидание, пока сеть станет доступной (как подразумевается в "network.target"):

[root@krampus ~]# grep After /usr/lib/systemd/system/openvpn\@.service
After=network.target

Доступность сети, похоже, достаточна при привязке ко всем интерфейсам (когда директива "local" удалена из конфигурации), но не при привязке к конкретному интерфейсу.

Исправление, которое сработало для меня, заключалось в изменении скрипта init для ожидания полного подключения к сети, используя "network-online.target" вместо "network.target" следующим образом:

[root@krampus ~]# grep After /usr/lib/systemd/system/openvpn\@.service
After=network-online.target
5
27.01.2020, 20:22

Если вы читаете это в 2019 году и используете Ubuntu 16.x или 18.x, особенно если вы используете несколько IP-адресов, хост libvirt/kvm или ожидаете, что ваш экземпляр OpenVPN прослушивает только один указанный порт, и возникает следующая ошибка:

Socket bind failed on local address [AF_INET]XXX.XXX.XXX.XXX:10e94: Cannot assign requested address

Все остальные ответы являются неправильными или плохими решениями, правильным решением является:

В /etc/default/openvpn

AUTOSTART="none"

В /etc/network/interfaces

iface ethX inet static
  address XXX.XXX.XXX.XX
  netmask 255.255.255.0
  openvpn my_vpn_name

Где ethX ваш интерфейс (ex, eth0 для обычного интерфейса, eth0 :1 для псевдонима интерфейса ), мой _vpn _name — это базовое имя файла без суффикса.conf вашего файла /etc/openvpn/my _vpn _name.conf .

Для пояснения, приведенное выше приводит к выполнению сценария /etc/network/if -up.d/openvpn , который, в свою очередь, выполняет systemctl --no -block start openvpn@my _vpn _name который запускает openvpn после вызова интерфейса или псевдонима.

Почему я говорю, что другие ответы плохие или неправильные? потому что они либо излишне сложны, либо требуют, чтобы ваш экземпляр openvpn прослушивал все IP-адреса, что крайне нежелательно по очевидным причинам.

0
27.01.2020, 20:22

Теги

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