Данте блокирует некоторые подключения к локальному хосту

Вопрос или проблема

Я подключаюсь через туннель к Dante. Он работает, но все еще блокирует два приложения, которые мне нужно использовать через SOCKS-прокси.

Вот что говорится в журналах. Моя конфигурация:

# Где мы будем записывать все эти полезные сообщения об ошибках?
logoutput: /var/log/dante.log

# На каком IP и порту должен слушать Dante,
# так как я собираюсь использовать это только через SSH
# я хочу разрешить подключения только через локальный интерфейс
internal: 127.0.0.1 port = 1080

# Привязка к интерфейсу eth0
external: eth0

# Поскольку я принимаю подключения только через локальный интерфейс,
# единственными, кто МОЖЕТ подключиться,
# будут уже аутентифицированные пользователи,
# нет необходимости дополнительно аутентифицировать dante
method: username none

# Какого непривилегированного пользователя будет представлять Dante, если нужно?
user.notprivileged: nobody

# Кто может получить доступ к этому прокси?
# Принимать только подключения с локального интерфейса, все порты
client pass {
from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}

# Заблокировать все другие попытки подключения
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

# После подключения, куда они могут идти?
block {
from: 0.0.0.0/0 to: 127.0.0.0/8
log: connect error
}

# Пропускать с внутреннего IP куда угодно
pass {
from: 192.168.0.0/16 to: 0.0.0.0/0
protocol: tcp udp
}

# Пропускать с локального интерфейса куда угодно
pass {
from: 127.0.0.0/8 to: 0.0.0.0/0
protocol: tcp udp
}

# Заблокировать все остальное
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

Вы знаете, что здесь происходит? Я довольно сбит с толку.

Вы должны прочитать документацию.

Правила Dante обрабатываются по принципу первого совпадения, и все адреса соответствуют 0.0.0.0/0. Поэтому перепишите эти правила так, чтобы они выполняли то, что вы хотите, оставив правило блокировки в конце.

У нас нет информации о том, для чего он работает, но мне пришлось бы предположить, что те вещи, на которые он работает, не находятся на локальном хосте или не проксируются.

Также стоит помнить, что когда вы получаете доступ к localhost через прокси, конечная точка будет локальным интерфейсом прокси, а не вашим. Тем не менее, поскольку вы запускаете прокси на том же компьютере, на котором вы получаете доступ и хостите данные (по какой-то причине), это не имеет значения в данном случае. Однако именно поэтому блокировка локального интерфейса на прокси является распространенной практикой.

Вы блокируете трафик с любого IP на локальный IP. Исправьте ваше первое заявление “block”.

Ответ или решение

Блокировка подключений localhost в Dante: разбор проблемы

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

Анализ логов

Из логов видно, что Dante блокирует TCP-соединения с localhost. Примеры блокировок:

block(1): tcp/connect [: 127.0.0.1.51519 -> 127.0.0.1.30000
block(1): tcp/connect [: 127.0.0.1.51527 -> 127.0.0.1.6112

Это указывает на то, что всякий раз, когда приложения пытаются установить соединение с портами 30000 и 6112 через прокси, Dante его блокирует. Причина такого поведения кроется в правилах, прописанных в конфигурации.

Конфигурация

Рассмотрим основные правила конфигурации:

  1. Клиентские правила:
    • Прописано, что клиенты могут подключаться только с 127.0.0.0/8 (localhost), что является нормальным.
    • Однако существует правило, блокирующее все подключения к 127.0.0.0/8 из других источников.
client pass {
  from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}

client block {
  from: 0.0.0.0/0 to: 0.0.0.0/0
  log: connect error
}
  1. Правила блокировки:
    • Наиболее критично: блокировка всех попыток доступа к локальным адресам из внешних источников.
block {
  from: 0.0.0.0/0 to: 127.0.0.0/8
  log: connect error
}

Эта часть конфигурации указывает на то, что если любое устройство пытается подключиться к маршрутам на 127.0.0.1, оно будет заблокировано. Таким образом, любое соединение с локального хоста также будет заблокировано, если оно не соответствует правилам "pass".

Решение проблемы

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

# Пропустить подключения из localhost
pass {
  from: 127.0.0.0/8 to: 0.0.0.0/0
  protocol: tcp udp
}

# Пропустить другие локальные/внутренние подключения
pass {
  from: 192.168.0.0/16 to: 0.0.0.0/0
  protocol: tcp udp
}

# Блокировать все остальные подключения
block {
  from: 0.0.0.0/0 to: 0.0.0.0/0
  log: connect error
}

Заключение

Изменив конфигурацию и порядок обработки правил, можно разрешить приложениям на локальном хосте проходить через прокси-сервер Dante без блокировок. Также важно помнить, что Dante обрабатывает правила по принципу «первого совпадения», поэтому правильная последовательность и структура правил критичны для достижения необходимой функциональности.

Таким образом, корректировав настройки, вы сможете успешно работать с необходимыми приложениями через SOCKS-прокси.

Оцените материал
Добавить комментарий

Капча загружается...