В рамках пилотного проекта я пытаюсь настроить среду тонкого клиента для группы разработчиков, использующих NoMachine. Каждый разработчик войдет в один и тот же Linux-сервер и будет заниматься разработкой через X-сессию. В настоящее время каждый разработчик запускает собственный демон HTTP на своей локальной рабочей станции, который прослушивает 127.0.0.1:5000. Однако, если я переведу всех на один и тот же компьютер, это, очевидно, создаст проблему с конфликтами портов.
В идеале я бы хотел, чтобы их рабочий процесс остался прежним. Если мне придется назначить каждому уникальный порт, это вызовет массу проблем и замешательства. Есть ли способ сделать это? Могут ли разные процессы связываться с одним и тем же портом для каждого пользователя? Я обнаружил способ использовать iptables для перенаправления портов для каждого пользователя, но это решает только часть проблемы:
iptables -t nat -I OUTPUT --src 0/0 --dst 127.0.0.1 -p tcp --dport 5000 -m owner --uid-owner userA -j REDIRECT --to-ports 5001
Это решение по-прежнему не позволяет различным процессам связываться с одним и тем же портом. И я даже не уверен, что нахожусь здесь на правильном пути, ища решение iptables. Какие-либо предложения? Может быть, есть хак, который можно применить в пользовательском пространстве? Спасибо!
Они не могут привязаться к одному и тому же порту.
Свяжите каждый процесс с его собственным портом, а затем отправьте порт INPUT 5000 на 5001, 5002, 5003 в зависимости от ваших условий.
Сколько у вас людей разработчиков? Если их не так много, как насчет настройки KVM (или Xen / VMware) на сервере, чтобы они использовали свою собственную виртуальную машину (каждая со своим IP, конечно).
В адрес прослушивающего TCP-сервера состоит из (IP, порт) (для IP в IPv4 или IPv6), где IP может быть IP-адресом с подстановочным знаком "*", то есть адресом 0.
Клиент TCP подключится к конкретная пара (server_IP, server_port) (здесь нет подстановочных знаков). Должно быть точно один прослушивающий сокет либо с:
Стек TCP не хочет делать произвольный выбор между сокетами, поэтому он не позволит одновременно создавать два разных прослушивающих сокета TCP, которые могут принять одну и ту же попытку подключения от клиента TCP.
Хорошая новость заключается в том, что пространство для IPv4 адреса локальных хостов довольно большой: ровно 224 - 2 = ** 16777214 различных IPv4-адресов зарезервированы для этого задания, с 127.0.0.1 до 127.255.255.254.
Вы можете использовать разные IP-адреса для каждого пользователя. Большинство программ позволяют привязать разные IP-адреса к одному и тому же порту. Вам нужно будет добавить эти IP-адреса в сетевой интерфейс.