Я использую сервер Ubuntu 12.10 в качестве маршрутизатора/NAT для внутренней сети к Интернету. Я также настроил сервер к порту передачи 80 к серверу, находящемуся на моей внутренней сети. Это все хорошо работает.
Что я хотел бы сделать, теперь установка дополнительные средства передачи порта к дополнительному порту использования веб-серверов 80 в моей сети. У меня есть несколько других статических интернет-адресов, которые я могу использовать внешне и просто должен установить передачу локальным серверам.
Я знаю, что мог просто создать дополнительные серверы Ubuntu, настроив каждого из них с различными интернет-адресами (а также локальные адреса на 2-м NIC) и настроив перенаправление портов.
Действительно ли это возможно сделать с единственным сервером Ubuntu?
Я попытался добавить больше виртуального NICs к своему единственному серверу Ubuntu, но столкнулся с проблемами маршрутизации, так как все эти дополнительные NICs были на той же интернет-подсети.
Настраивает отдельные серверы человечности для каждого порта вперед, я хочу сделать единственный способ выполнить это?
То, что Вы просите делать, не возможно (что я знаю о) с NAT. Нет действительно никакого пути к iptables для знания, куда отправить, какой трафик и Вы можете портировать вперед только один экземпляр сообщения 80.
Imo является более изящным решением, должен использовать nginx в качестве обратного прокси.
См.:
https://help.ubuntu.com/community/Nginx/ReverseProxy
http://bostinno.com/channels/nginx-as-a-reverse-proxy-with-wordpress/
Это работает хорошо, поскольку nginx является быстрым, легким весом, и можно передать различным серверам на основе URL ;)
Nginx раздает статическое содержание очень быстро, и апач раздает динамический контент (обычно php) очень быстро (см. вторую ссылку).
Если у вас есть определенные внешние ips для определенных внутренних http-серверов, вы можете использовать iptables для NAT на правильный, как этот.
Предположим, у вас есть внутренние http-серверы с ips 10.10.10.2, 10.10.10.3 и 10.10.10.4, и каждый раз, когда внешний ip 50.35.100.10 вызывает порт 80, вы хотите, чтобы он переходил на сервер 10.10.10.2, чтобы вы могли используйте правило DNAT, подобное этому
iptables -t nat -A PREROUTING -i eth0 -s 50.35.100.10 -p tcp --dport 80 -j DNAT --to 10.10.10.2
, и правила сохраняют то же самое для других. Теперь, если у вас нет таких спецификаций, как говорилось в bodhi.zazen, нет способа сделать это только с помощью iptables.