Редирект поддомена на сервер CS с помощью DNS

Сообщения
218
Реакции
63
Помог
2 раз(а)
Всем привет, как вы знаете многим как и мен в падлу копировать или запоминать ip и разные порты серверов, а вот домен example.com запоминается, но что если у вас несколько серверов? а по команде connect example.com вы попадете только на 27015 порт.
Вопрос, возможно ли сделать так чтобы к примеру при connect pod.example.com dns перенаправлял игрока на произвольный порт, к примеру 27016?
Этот же вопрос я задал чат gpt, на что получил такой ответ:

_connect._tcp.pod.example.com. 3600 IN SRV 0 5 27016 example.com.
Который не сработал. Если есть знатоки буду рад вашему ответу. Спасибо!
 

Rey

Сообщения
197
Реакции
190
Помог
5 раз(а)
Порт, как я помню, один хер писать придется через :
т.е example.com:27016
без порта куэс не сожрет
 
Сообщения
401
Реакции
113
Помог
2 раз(а)
yamusaka, это для более продвинутых сетевых служб, скорее всего кс такого не умеет. Но попробуйте поменять протокол, там будет не tcp, а udp:
_connect._udp.pod.example.com. 3600 IN SRV 0 5 27016 example.com.
 

Rey

Сообщения
197
Реакции
190
Помог
5 раз(а)
Refresh, у куэса синтаксис кмд connect ip:port
Не поймет, и будет ругаться на отсутствие порта
 
Сообщения
218
Реакции
63
Помог
2 раз(а)
SergeyShorokhov, т.е. чтобы сделать как я хочу придется купить другое айпи и уже туда направлять поддомен? И подругому никак?
 

ssx

Сообщения
289
Реакции
73
yamusaka, Смотря где хостишь сервера.
Если своя VDS/VPS то можно организовать. Думаю через iptables (вроде как в новых системах его заменили на UFW) анализ пакетов и уже там разруливать через NAT.
Для начало через анализатор трафика нужно понять или коннект на ОС идёт в виде домен:порт или клиент игры ещё на этапе коннекта домен превращает в IP и коннект в виде IP:PORT .
19 Сен 2024
Вот что выдал ChatGPT

Для реализации структуры, где несколько доменов перенаправляются на один IP с разными портами, вам нужно настроить управление DNS и, возможно, использовать дополнительные механизмы для перенаправления трафика на нужные порты. Вот подходы для решения вашей задачи:

1. Настройка DNS-записей
Для каждого домена (например, domain1.com, domain2.com, domain3.com), вам нужно указать одинаковый IP-адрес, так как все домены должны указывать на один сервер. Это на уровне DNS можно сделать следующим образом:

  • Для каждого домена (например, domain1.com, domain2.com, domain3.com), создайте A-запись, указывающую на IP вашего сервера, например:
Код:
domain1.com A 1.2.3.4
domain2.com A 1.2.3.4
domain3.com A 1.2.3.4
Все домены должны указывать на тот же IP-адрес.

2. Использование iptables для перенаправления портов
Теперь нужно перенаправить трафик с разных доменов на разные порты. Для этого можно использовать iptables на сервере для перенаправления пакетов в зависимости от того, на какой домен пришёл запрос. Однако, поскольку DNS не передаёт информацию о домене на уровне транспортного протокола (TCP/UDP), потребуется использовать порты для различения.

Так как игра не передаёт заголовок домена, стандартный способ решения — это настройка нескольких портов для одного IP. Это можно реализовать через перенаправление портов на основе комбинации доменов и портов. Пример настройки iptables для перенаправления на нужные порты:

Код:
# Перенаправление трафика с 27015 на 27016
iptables -t nat -A PREROUTING -p udp --dport 27015 -d domain2.com -j REDIRECT --to-ports 27016

# Перенаправление трафика с 27015 на 27017
iptables -t nat -A PREROUTING -p udp --dport 27015 -d domain3.com -j REDIRECT --to-ports 27017
3. Использование прокси (например, Nginx) для перенаправления по доменам
Для правильного перенаправления доменов на определённые порты можно использовать UDP-прокси-серверы, такие как Nginx или HAProxy, которые могут перенаправлять запросы на нужные порты на основе домена.

Пример настройки Nginx для работы с UDP:

  1. Установите nginx и убедитесь, что у вас включена поддержка для stream (UDP и TCP прокси).
  2. Настройте файл /etc/nginx/nginx.conf, добавив секцию stream:
Код:
stream {
    # Прокси для domain1.com на порт 27015
    server {
        listen 27015 udp;
        proxy_pass 127.0.0.1:27015;
        server_name domain1.com;
    }

    # Прокси для domain2.com на порт 27016
    server {
        listen 27015 udp;
        proxy_pass 127.0.0.1:27016;
        server_name domain2.com;
    }

    # Прокси для domain3.com на порт 27017
    server {
        listen 27015 udp;
        proxy_pass 127.0.0.1:27017;
        server_name domain3.com;
    }
}
Этот метод позволяет принять все подключения на стандартный порт (например, 27015), а затем на основе домена перенаправить трафик на нужный порт игрового сервера.
 
Сообщения
458
Реакции
263
Помог
9 раз(а)
yamusaka, пример для nginx
Код:
server {
    listen 80;
    server_name cs1.example.com;

    return 301 192.168.1.10:27016;
}
?
 
Сообщения
218
Реакции
63
Помог
2 раз(а)
ufame, кс вроде не стучится по 80 порту :-D
20 Сен 2024
ssx, интересно, надо бы попробовать
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу