Как произвести настройку 3proxy для работы в качестве DNS-прокси?

Здравствуйте! <br/> <br/> У меня установлена ОС Debian 12, на которой настроен SOCKS5 прокси, поддерживающий только TCP, но не пропускающий UDP (это не 3proxy). У клиентов DNS запросы отправляются на 127.0.0.1:53 по UDP, и мне необходимо перенаправить эти запросы через прокси, при этом не осуществляя локальную резолюцию доменных имен, а только через прокси. <br/> <br/> Сначала, по всей видимости, нужно преобразовать UDP в TCP, а затем уже использовать SOCKS5 прокси. Я предполагаю использовать для этого 3proxy и, возможно, unbound или что-то подобное. <br/> <br/> Я нашел уважаемую конфигурацию 3proxy, которая, как мне кажется, может оказаться полезной, но она слишком сложна для меня: <br/> <br/> allow * <br/> parent 1000 socks5 127.0.0.1 1080 <br/> parent 250 tcp anycast.censurfridns.dk 53 <br/> parent 250 tcp unicast.censurfridns.dk 53 <br/> parent 250 tcp resolver1.dns.watch 53 <br/> parent 250 tcp resolver2.dns.watch 53 <br/> tcppm -i127.0.0.1 10052 127.0.0.1 11111 <br/> flush <br/> nserver 127.0.0.1:10052/tcp <br/> nscache 65536 <br/> nscache6 65536 <br/> dnspr -i:: -p53 <br/> <br/> Возможно, чтобы избежать локальной резолюции доменных имен DNS серверов, имеет смысл указать IP адреса вместо их имен? <br/> <br/> У меня есть несколько вопросов: <br/> <br/> 1. Достаточно ли для решения задачи одного 3proxy, или нужно добавить какой-то другой DNS сервер в конфигурацию? <br/> 2. Могли бы вы помочь мне разобраться с конфигурацией 3proxy для достижения поставленной цели? <br/> <br/> Заранее благодарю за ваши ценные ответы.
  • 28 января 2025 г. 11:24
Ответы на вопрос 2
Для настройки 3proxy в качестве DNS-прокси, который перенаправляет DNS-запросы от клиентов через SOCKS5-прокси, потребуется выполнить следующие шаги. Вам действительно может понадобиться немного дополнительного программного обеспечения для правильной работы.

### Шаг 1: Установка необходимых пакетов

Убедитесь, что у вас установлен 3proxy и любой DNS-сервер, который вы хотите использовать (например, unbound).

```bash
sudo apt update
sudo apt install 3proxy unbound
```

### Шаг 2: Настройка 3proxy

Создайте или отредактируйте файл конфигурации 3proxy. Обычно он находится по пути `/etc/3proxy/3proxy.cfg`. Вот пример конфигурационного файла для вашего случая:

```ini
# Разрешаем доступ всем
allow *

# Указываем SOCKS5 прокси
parent 1000 socks5 127.0.0.1 1080

# Указываем DNS-серверы для разрешения имен
parent 250 tcp 1.1.1.1 53
parent 250 tcp 8.8.8.8 53

# Настраиваем преобразование UDP в TCP
tcppm -i127.0.0.1 10052 127.0.0.1 11111

# Сбрасываем все предыдущие настройки
flush

# Настраиваем локальный DNS-сервер
nserver 127.0.0.1:10052/tcp
nscache 65536
nscache6 65536
dnspr -i0.0.0.0 -p53
```

**Примечания:**
- Замените `1.1.1.1` и `8.8.8.8` на IP-адреса DNS-серверов, которые вы хотите использовать, если это необходимо.
- Порт `10052` будет использоваться для перенаправленных DNS-запросов.
- Порт `53` будет использоваться вашим локальным DNS-сервером.

### Шаг 3: Настройка unbound (опционально)

Если вы хотите использовать unbound в качестве DNS-сервера, убедитесь, что он настроен на прослушивание запросов на порту 53. Конфигурация может находиться в файле `/etc/unbound/unbound.conf`. Вот пример конфигурации:

```ini
server:
    interface: 127.0.0.1
    port: 53
    access-control: 127.0.0.0/8 allow
    verbosity: 1
    # другие параметры...
```

### Шаг 4: Запуск и проверка

1. Перезапустите 3proxy и unbound, чтобы применить новую конфигурацию:

```bash
sudo systemctl restart 3proxy
sudo systemctl restart unbound
```

2. Проверьте, работает ли ваш локальный DNS-сервер, используя утилиту `dig`:

```bash
dig @127.0.0.1 domain.com
```

### Вопросы и ответы:

1. **Достаточно ли одного 3proxy?**
   - В большинстве случаев, локальный экземпляр 3proxy должен быть достаточен, если он правильно настроен для обработки DNS-запросов. Однако, если вы хотите иметь возможность работать с дополнительными DNS-серверами, можно использовать unbound в связке с 3proxy.

2. **Могу ли я указать IP-адреса вместо имен?**
   - Да, рекомендуем указывать IP-адреса, так как это предотвратит локальную резолюцию имен, т.к. вы хотите использовать прокси. Это уменьшит шанс зависания при разрешении.

Следуя этим шагам, вы сможете настроить 3proxy как DNS-прокси для ваших клиентов.
Если достаточно ходить только в google то можно 

pidfile /var/run/3proxy.pid
log /var/log/3proxy.log
allow *
parent 1000 socks5 192.168.10.100 2080
tcppm -i127.0.0.1 10052 8.8.8.8 53
flush
nserver 127.0.0.1:10052/tcp
nscache 65536
nscache6 65536
dnspr -i192.168.10.100 -p53
Похожие вопросы