Добрый день! На протяжении трех дней я ищу ответ на свой вопрос в Google, но, к сожалению, не могу найти необходимую информацию. У меня складывается впечатление, что это невозможно. Однако меня интересует, как работают коммерческие сервисы, такие как Smart DNS и Control D, в частности DNS от Comss. У меня есть VPS на Ubuntu, и мне нужно выяснить, каким образом я могу установить и настроить DNS-сервер на этой машине. Я хочу, чтобы трафик с определенных доменов, указанных в хост-листе, проходил через этот сервер как через прокси, в то время как запросы к остальным доменам обрабатывались бы обычным образом, как если бы они шли через стандартный DNS, например, Cloudflare.
Настройка аналогов 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 и т. д. эти зоны со своими записями, а остальное пусть форвардится от какого-нибудь публичного сервера.