У меня есть несколько клиентов на одном ящике, которые будут подключаться к одному домену. Каждому клиенту нужно пройти через другой порт. Я могу просто определить записи несколько раз, но есть ли более простой способ перечислить принятый последовательный диапазон портов?
# stunnel.conf
[client-1]
client = yes
accept = 127.0.0.1:5098
connect = target-domain.com:443
[client-2]
client = yes
accept = 127.0.0.1:5099
connect = target-domain.com:443
[client-3]
client = yes
accept = 127.0.0.1:5100
connect = target-domain.com:443
[client-4]
client = yes
accept = 127.0.0.1:5101
connect = target-domain.com:443
[client-5]
client = yes
accept = 127.0.0.1:5102
connect = target-domain.com:443
решение1
Я не думаю, что в stunnel
конфигурации можно иметь диапазоны.
stunnel
документация наhttps://www.stunnel.org/static/stunnel.htmlговорит:
Параметр адреса опции может быть:
Номер порта.
Пара IP-адреса (IPv4, IPv6 или доменное имя) и номера порта, разделенных двоеточием.
Путь сокета Unix (только Unix).
(примечание:аномер порта)
и:
принять = [ХОСТ:]ПОРТ
принимать соединения по указанному адресу
Возможные альтернативные решения, которые я могу придумать (список не исчерпывающий):
- автоматически генерировать
stunnel
конфигурацию из какого-либо другого источника с помощью любой системы шаблонов (что позволит простой команде цикла генерировать каждый оператор из диапазона портов), - определить один порт и использовать его
iptables
для переадресации каждого клиентского порта только на тот, который определен вstunnel
; илиredir
команду (https://linux.die.net/man/1/redir) - использовать другое программное обеспечение, например,
HAProxy
егоbind
опция специально разрешает диапазоны портов:bind [<address>]:<port_range> [, ...] [param*]
и:<port_range> is either a unique TCP port, or a port range for which the proxy will accept connections for the IP address specified above.