Назад | Перейти на главную страницу

Сервер Dante SOCKS с двумя внешними интерфейсами (например, проводной Ethernet и Wi-Fi)

Я хочу, чтобы Dante прозрачно выбирал один из двух интерфейсов enp4s0 (Проводной Ethernet) и wlp3s0 (Wi-Fi) независимо от их статуса (вверх или вниз). То есть

Теперь у меня сложилось впечатление, что следующая конфигурация должна помочь:

internal: 0.0.0.0 port=1080
external: enp4s0
external: wlp3s0
external.rotation: route

Однако, к моему удивлению, когда, например, только enp4s0 встало и wlp3s0 не работает, Данте отказывается запускаться, лает:

error: /etc/sockd.conf: problem on line ??? near token "wlp3s0": could not resolve hostname "wlp3s0": No address associated with hostname.  Please see the Dante manual for more information

Я понимаю суть этого вопроса, но нет никаких технических причин для такого ограничения. Редактировать этот файл конфигурации вручную каждый раз, когда я переключаюсь между проводным подключением и Wi-Fi, было бы обременительно и нежелательно. Есть ли умный способ решить эту проблему?

В крайнем случае, может быть, какой-нибудь скрипт-перехватчик, который изменит файл конфигурации? Примеры таких инструментов / скриптов?

Пока я пошел с goproxy, что за жемчужина! По сути,

$ goproxy socks -t tcp -p '0.0.0.0:1080'

делает трюк без каких-либо проблем с привязкой каких-либо конкретных исходящих интерфейсов.


Я получил следующий ответ от Майкла Шульдмана (сопровождающего) в официальном списке рассылки для сервера Dante sockd:

Возможно, нет никаких технических причин, но в обычных производственных настройках (т. Е. Используемых в компании) указание, что Dante должен использовать несуществующий / ненастроенный сетевой адаптер (карту сетевого интерфейса), обычно указывает на ошибку конфигурации. Например, sockd.conf, скопированный с другого сервера с другими именами сетевых адаптеров, или обновление ОС, вызвавшее переименование некоторых сетевых адаптеров.

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

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

Одна из будущих альтернатив может заключаться в том, чтобы вместо того, чтобы выводить ошибку, просто напечатайте предупреждение и продолжайте, пока в sockd.conf настроен хотя бы один работоспособный сетевой адаптер. Это, вероятно, что-то, что можно было бы реализовать довольно легко, без особого риска возникновения других проблем, поэтому я думаю, что добавлю примечание для изучения этого в более позднем выпуске.

Релиз с поддержкой 1.4.3 уже находится на стадии тестирования, поэтому, к сожалению, я не думаю, что на данный момент можно что-либо добавить, но, возможно, кто-нибудь взглянет на 1.5.0.