Каким будет предпочтительное решение для размещения нескольких физических серверов за NAT с одним внешним IP-адресом? Я знаю, что Apache может реверсировать прокси HTTP, но хочу ли я сделать то же самое с FTP? Squid, кажется, упоминается много, но я немного смущен, будет ли он работать с моей настройкой: несколько физических компьютеров, работающих под Ubuntu с Virtualmin, и все они находятся за NAT. В каждом физическом блоке работает обычный стек LAMP и размещается несколько виртуальных серверов с полным доменным именем. Мне нужно иметь доступ к HTTP, но также, по крайней мере, к FTP и возможному SSH через это решение.
Для веб-серверов я могу порекомендовать Varnish в качестве внешнего узла, который является обратным прокси-сервером для вашего apache. Затем вы можете различать полное доменное имя (и ускорять работу своих веб-серверов с помощью кеша)
Что касается FTP, это другой зверь, и вы застряли с использованием разных портов. Кроме того, вы должны быть уверены, что ваш сервер за NAT также использует перенаправленные порты для PASV.
Frontend <-> NAT <-> FTP1 (port 21, + PASV: 20000-21000)
Frontend <-> NAT <-> FTP2 (port 10021, + PASV: 21000-22000)
Единственный вариант иметь один интерфейс ip / port для ftp - разместить его на внешнем узле (с внешним ip) и смонтировать (nfs / samba) ваши другие папки, которые вам нужны, доступные на ftp.
Для SSH у меня был бы только один SSH-сервер, активный для внешнего мира. Вы подключаетесь к этому серверу, и теперь, когда вы находитесь внутри своей сети NAT, вы можете получить оттуда доступ к другим серверам через локальный IP-адрес или имя для целей администрирования.
Однако не могу помочь вам с веб-сайтами. Я знаю, как это сделать в IIS, но я не очень хорошо разбираюсь в Apache. Возможно, вы сможете настроить записи VirtualHost в файле conf Apache на одной из машин, которые указывают доменное имя, которое они слушают, и перенаправить на соответствующий внутренний сервер, но опять же, я не очень разбираюсь в Apache.