Apache видит IP шлюза вместо IP клиента

B
На сайте с 22.08.2015
Offline
0
1034

Добрый день.

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

Теперь, обо всем по подробнее.

Некоторое время назад мне пришлось перенести web-сервер к себе в локалку. Почему это было сделано - отдельный разговор. Могу одно сказать, что другого выхода тогда у меня не было и делать это надо было очень быстро.

То есть в качестве сервера используется обычный комп, с Debian 7, на нем установлена связка Apache + PHP + MySQL (пока без nginx).

Сервер расположен в локалке за шлюзом. Хотя «шлюз» это очень громко сказано, так как это, всего-лишь, комп с Debian 6.6, где с помощью iptables открыт nat в локалку:

iptables -A FORWARD -i eth2 -o eth0 -s локальная сеть/24 -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

И проброшен 80 порт на сервер:

iptables -t nat -A PREROUTING -d внешний IP -p tcp -m tcp --dport 80 -j DNAT --to-destination сервер:80

iptables -I FORWARD 1 -i eth0 -o eth2 -d сервер -p tcp -m tcp --dport 80 -j ACCEPT

Здесь eth0 и eth2 сетевые карты на шлюзе, где eth0 — смотрит в инет, а eht2 — в локальную сеть. У web-сервера есть только одна сетевая карточка.

Не смотря на то, что это я делал в пожарном порядке и, возможно, допустил некоторые ошибки (по не знанию), все достаточно стабильно работает, но есть одна проблема.

Дело в том, что все адреса клиентов Apache получает как адрес шлюза смотрящий в локалку. Если войти на сервер из локалки, то Apache показывает правильный IP, но все что идет через шлюз — получаем как адрес шлюза.

Нельзя сказать, что это мне доставляет какие-то особые проблемы, но все-таки хотелось бы это исправить и сделать так, как оно должно быть.

Конечно, можно перенести LAMP на шлюз. Я уверен, что это сразу решит описываемую проблему, но, по некоторым причинам, мне бы очень не хотелось бы это делать.

Поэтому, господа гуру, подскажите что я сделал не так и как мне все исправить. Заранее благодарен.

V
На сайте с 05.08.2007
Offline
87
#1

Например, поставьте на шлюз nginx, а к апачу на сервере прикрутите mod_rpaf и будет Вам щастье.

Естественно, уберите на шлюзе проброс 80-го плрта.

---

Виктор

С уважением, Victor (http://adm-lib.ru)
B
На сайте с 22.08.2015
Offline
0
#2

Я попозже так и сделаю, но, кажется я нашел причину проблемы и сменил на шлюзе MASQUERADE на SNAT. После этого все заработало.

nginx обязательно поставлю, но веб-сервер я собирал "на скору руку" и наделал там очень много ошибок. Сейчас уже большинство из них мне очевидны, но пока я еще не выявил все возможные "подводные камни". Как только все допущенные мною ошибки выявлю, сменю сервак, сделав сразу все как положено.

Тем не менее спасибо за отклик.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий