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

Сообщения
209
Реакции
61
Помог
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

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

Rey

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

ssx

Сообщения
286
Реакции
73
yamusaka, Смотря где хостишь сервера.
Если своя VDS/VPS то можно организовать. Думаю через iptables (вроде как в новых системах его заменили на UFW) анализ пакетов и уже там разруливать через NAT.
Для начало через анализатор трафика нужно понять или коннект на ОС идёт в виде домен:порт или клиент игры ещё на этапе коннекта домен превращает в IP и коннект в виде IP:PORT .
Четверг в 20:47
Вот что выдал 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), а затем на основе домена перенаправить трафик на нужный порт игрового сервера.
 
Сообщения
457
Реакции
263
Помог
9 раз(а)
yamusaka, пример для nginx
Код:
server {
    listen 80;
    server_name cs1.example.com;

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

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

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