| | woodyfon 
 Full Member
 | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Имеется следующая система:
 HOST: windows 7 sp1 x86
 Имеет белый IP
 
 GUEST: debian jessie x86
 Настроено и работает на сетевых интерфейса eth0 (внешняя сеть), eth1 (внутренняя).
 Интерфейс eth0 сетевые настройки получает автоматически (В ВМ выбран NAT)
 Интерфейс eth1 настроен вручную. Применяется для простого обращения к серверу debian через терминал. На guest развернут тестовый web-сервер, работающий в связке tomcat + nginx.
 Через утилиту arno-iptables-firewall осуществлен доступ по 80 порту извне.
 Сделан проброс портов  (80) на ip-адрес гостя. Если заходить с других машин - то все вроде как бы работает. Но в логах nginx указывается не внешний ip-адрес (адрес хоста), а ip-адрес роутера, который является по сути шлюзом для интерфейса eth0.
 Как и что сконфигурировать, чтобы логах nginx был реальный host пользователя. То же самое наблюдается при подключении через putty. Указан не удаленный ip-адрес, а адрес шлюза виртуальной машины.
 +
 Сам спросил сам и отвечу. Возможно, это будет полезно и другим.
 Конечно, можно было построить мост, но еще одного внешнего ip-адреса нету. Это тот случай, когда гугл не помог и пришлось обратиться к документации (п. 9.11.7 Configuring aliasing of the NAT engine), вспоминая свой собачий английский язык.
 По умолчанию натирование происходит полное: т. е. реальные адреса заменяются на ip-адрес шлюза ВМ. Чтобы такого не происходило, необходимо выполнить команду
 1. Остановить виртуальную машину.
 2. Запустить команду:
 
 Код:
 | VBoxManage modifyvm "VM name" --nataliasmode1 proxyonly | 
 где VM name - имя виртуальной машины
 Здесь также расскажу как настроить томкат, чтобы в лог писались реальные хосты, а не локальный хост. Понимаю, что это для опытных администраторов тривиальная задачка, но пост расчитан на новичков-админов.
 
 Настройка конфигурационного файла tomcat8
 
 Код:
 | <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For"
 requestAttribtesEnabled="true"
 internalProxies="127.0.0.1" />
 
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 prefix="localhost_access_log" suffix=".log"
 requestAttributesEnabled="true"
 pattern="%h %l %u %t "%r" %s %b" />
 | 
 
 Здесь обязательно необходимо указывать requestAttributesEnabled="true" в AccessLogValve, иначе запись в лог будет происходить без изменений.
 
 nginx
 
 Код:
 | location / { proxy_pass  http://127.0.0.1:8080/;
 proxy_redirect off;
 proxy_set_header Host $host;
 proxy_set_header X-Real_IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 | 
 
 |  | Всего записей: 417 | Зарегистр. 03-08-2007 | Отправлено:  16:53 27-05-2015  | Исправлено: woodyfon,   02:56 28-05-2015
 | 
 |