Каким образом можно настроить аналог Smart DNS или ControlD на своем виртуальном частном сервере (VPS)?

Добрый день! На протяжении трех дней я ищу ответ на свой вопрос в Google, но, к сожалению, не могу найти необходимую информацию. У меня складывается впечатление, что это невозможно. Однако меня интересует, как работают коммерческие сервисы, такие как Smart DNS и Control D, в частности DNS от Comss. 

У меня есть VPS на Ubuntu, и мне нужно выяснить, каким образом я могу установить и настроить DNS-сервер на этой машине. Я хочу, чтобы трафик с определенных доменов, указанных в хост-листе, проходил через этот сервер как через прокси, в то время как запросы к остальным доменам обрабатывались бы обычным образом, как если бы они шли через стандартный DNS, например, Cloudflare.
  • 27 октября 2024 г. 11:32
Ответы на вопрос 2
Настройка аналогов Smart DNS или ControlD на вашем виртуальном частном сервере (VPS) может быть выполнена с использованием различных инструментов и технологий для управления DNS-запросами и направлением трафика. Вот общие шаги, чтобы создать подобный сервис на основе вашего VPS с Ubuntu:

### 1. Установите и настройте DNS-сервер

Для начала вам нужно установить DNS-сервер. Вы можете использовать `Bind9` или `Unbound`. В этом примере я покажу вам, как сделать это с помощью `Bind9`.

#### Установка Bind9:

```bash
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
```

#### Настройка Bind9

1. **Создайте конфигурацию для вашего DNS-сервера.** Измените файл `/etc/bind/named.conf.local`:

   ```bash
   zone "yourdomain.com" {
       type master;
       file "/etc/bind/db.yourdomain.com";
   };
   ```

2. **Создайте файл зоны для вашего домена.** Скопируйте стандартный файл зоны в новый файл:

   ```bash
   sudo cp /etc/bind/db.local /etc/bind/db.yourdomain.com
   ```

   Обновите файл `/etc/bind/db.yourdomain.com`:

   ```bash
   ;
   $TTL    604800
   @       IN      SOA     ns.yourdomain.com. admin.yourdomain.com. (
                             2         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
   ;
   @       IN      NS      ns.yourdomain.com.
   ns      IN      A       YOUR_VPS_IP
   www     IN      A       YOUR_PROXY_IP
   ```

   Не забудьте заменить `YOUR_VPS_IP` и `YOUR_PROXY_IP` на реальные IP-адреса.

3. **Перезапустите сервис Bind9:**

   ```bash
   sudo systemctl restart bind9
   ```

### 2. Настройка прокси-сервера

Теперь вам нужно настроить прокси-сервер. Вы можете использовать `Squid` для создания прокси-сервера.

#### Установка Squid:

```bash
sudo apt install squid
```

#### Настройка Squid

1. Откройте конфигурационный файл Squid:

   ```bash
   sudo nano /etc/squid/squid.conf
   ```

2. Добавьте правила для обработки трафика. Например:

   ```conf
   acl allowed_sites dstdomain .example.com .example2.com
   http_access allow allowed_sites
   http_access deny all
   ```

   В этом случае замени информацию в `allowed_sites` на домены, которые нужно проксировать.

3. Сохраните изменения и перезапустите Squid:

   ```bash
   sudo systemctl restart squid
   ```

### 3. Настройка маршрутизации запросов

Теперь, когда у вас есть настроенный DNS-сервер и прокси, вам нужно настроить маршрутизацию для определенных запросов к вашему прокси. Используйте `ip route` или `iptables` для перенаправления трафика к прокси по определенным доменам.

### 4. Использование вашего DNS-сервера

Теперь вы можете использовать свой DNS-сервер, указывая его IP-адрес в настройках DNS на устройствах, которые будут использовать этот сервис.

### 5. Дополнительные настройки и безопасность

- Рассмотрите возможность использования HTTPS для вашего прокси-сервера.
- Настройте дополнительные меры безопасности, такие как аутентификация пользователей для Squid.
- Возможно, стоит изучить возможность использования `dnsmasq`, чтобы упростить управление DNS-запросами и прокси.

Эта инструкция является базовой и может потребовать дополнительных настроек в зависимости от конкретных нужд и задач. Не забывайте также о мониторинге и поддержке вашего сервера.
Как вы собираетесь сделать, чтобы "трафик с определенных в хостлисте доменов шел через нее как через прокси"?  И со стороны этих сайтов, и со стороны пользователя. 

Вообще описано непонятно. Можете переформулировать более подробно?

Если вам надо, чтобы DNS-сервер резолвил как-то по-особому определённые домены - добавляйте в любое ПО, bind9/dnsmasq/unbound и т. д. эти зоны со своими записями, а остальное пусть форвардится от какого-нибудь публичного сервера.
Похожие вопросы