У меня есть довольно сложная серия серверов, подключенных к маршрутизатору с DD-WRT. Я склонен перемещать всю установку довольно часто, поэтому я попытался сделать ее "мобильной". Я сделал это, настроив маршрутизатор DD-WRT, на котором мои серверы используются в качестве типа моста. Когда я переезжаю, я просто меняю беспроводную сеть, с которой маршрутизатор связывается с Интернетом, и назначаю маршрутизатору DD-WRT статический IP-адрес, а также перенаправляю все порты нового маршрутизатора на маршрутизатор DD-WRT. Маршрутизатор DD-WRT уже имеет свою собственную подсеть, статические IP-адреса для всех серверов, которые я хочу в моей сети, и все правильные конфигурации переадресации портов.

Проблема, с которой я сталкиваюсь, заключается в том, что функция Hairpin-Routing не будет работать в этой конфигурации, потому что, даже если она включена на маршрутизаторе DD-WRT, новый маршрутизатор обычно представляет собой стандартный модем / маршрутизатор «все в одном» от Century Link или что угодно. (То есть он не предназначен для настройки конечным пользователем, поэтому я не могу включить маршрутизацию шпилек.)

Я "решил" эту проблему с помощью правил DNSMasq. Это то, что у меня сейчас ...

address=/odroid.example.com/10.0.0.101
address=/example.com/10.0.0.102

Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу, чтобы определенные порты на example.com перенаправлялись на разные серверы. Например, я бы хотел, чтобы 587 , 993 и 25 перешли на 10.0.0.101 и я бы хотел, чтобы 80 , 8080 и 3000 перешли на 10.0.0.102 .

Есть ли способ достичь этой конфигурации БЕЗ настройки общего маршрутизатора? (ТОЛЬКО на маршрутизаторе DD-WRT.)

1 ответ1

1

Это не то, что может сделать dnsmasq, потому что это не то, что может сделать сама DNS. TCP-порты включаются только после поиска адреса. Поэтому, какой бы ни разрешил один из ваших хостов example.com , он должен иметь возможность обрабатывать все эти соединения - возможно, используя обратный прокси-сервер HTTP, где это возможно, или еще один уровень переадресации портов (iptables, pf redirect и т.д.).


Однако некоторые конкретные приложения имеют свои собственные механизмы. Для порта 25 (сервер-SMTP) создайте запись MX которая указывает на другой домен. Если отправляющий почтовый сервер найдет один, он будет использовать только серверы, перечисленные в записи MX. (Вот так почти все домены перенаправляют свою почту на выделенный почтовый сервер или даже в Почту Google.)

example.com.         MX 10 smtp-in.example.com.
smtp-in.example.com. A  10.0.0.25

Для IMAP и client-SMTP (143, 993, 587) вам может повезти с созданием записей SRV для каждой службы. Они похожи по назначению, но могут указать приложению, какой хост и какой порт использовать:

_imap._tcp.example.com.       SRV 10 0 143 mail.example.com.
_imaps._tcp.example.com.      SRV 10 0 993 mail.example.com.
_submission._tcp.example.com. SRV 10 0 587 mail.example.com.
mail.example.com.             A   10.0.0.143

Или то же самое в извращенном синтаксисе dnsmasq:

mx-host=example.com,smtp-in.example.com,10
address=/smtp-in.example.com/10.0.0.25

srv-host=_imap._tcp.example.com,mail.example.com,143
srv-host=_imaps._tcp.example.com,mail.example.com,143
srv-host=_submission._tcp.example.com,mail.example.com,587
address=/mail.example.com/10.0.0.143

Обратите внимание, что только некоторые программы заботятся о записях SRV. В то время как выше _imap & c. примеры являются технически стандартными, они все еще очень редко используются в реальных почтовых приложениях. (Практически единственными распространенными пользователями SRV являются Kerberos, LDAP, SIP, XMPP и Minecraft.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .