Я хочу, чтобы одна из моих внутренних машин была Web-сервером


Очень просто! Однако для этого вам надо иметь статический IP-адрес, чтобы использовать эти советы. Если же у вас динамический IP-адрес, то вам понадобятся дополнительные скрипты, меняющие IP-адреса в командах переназначения портов.

Вам также надо помнить, что переназначение внешнего порта на внутреннюю машину делает вашу "внутреннюю" машину менее "внутренней", но это можно сделать достаточно просто без потери производительности. Одним из побочных эффектов IP-маскарадинга, встроенного в ядро Linux, является возможность вносить достаточно веселые изменения в пакеты, проходящие по сети - этим занимается утилита ipmasqadm.

По каким-то причинам ipmasqadm не поставляется в комплекте Red Hat и Mandrake, поэтому вам придется взять его с веб-сайта создателя -- существует и RPM-пакет, и исходный текст.

После того, как вы получите RPM, установите его и добавьте следующие строки в скрипт /etc/rc.d/rc.local:

/usr/sbin/ipmasqadm portfw -f /usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80

Первая команда очищает таблицу правил переназначения портов, а вторая добавляет переназначение порта 80 с внешнего интерфейса на порт 80 внутренней машины. Заметьте, что вместо x.x.x.x надо подставить внешний статический IP-адрес, а вместо 192.168.1.x.- IP-адрес внутренней машины.

Теперь внешние запросы на порт 80 будут переназначаться на порт 80 внутренней машины. Вы можете проверить эту настройку следующим образом: используйте команду telnet или ей подобную на внешний IP-адрес вашего шлюза: код переназначения портов обрабатывает только запросы, идущие с внешнего интерфейса.

Now external requests for port 80 will be transparently sent to port 80 of the internal machine. Note that you cannot test this by telnetting or connecting to your gateway's port 80 from one of your inside machine: the port forwarder only honors requests coming in on the external interface.



Содержание раздела