Я настраиваю http-сервер (apache) под VB и перенаправляю порт с хоста с помощью доступного инструмента в VB. Моя сеть VB связана с хостом через NAT.
Однако при этом в журнале доступа http отображается только один и тот же IP-адрес для каждого соединения. (от 10.x.x.x, который является IP-адресом хоста).
Есть ли способ увидеть настоящий IP-адрес? Я попытался настроить журнал iptables на хосте, но он не показывает данные (только src, dest.ttl .. вы знаете ..)
Вы можете настроить NAT на своей виртуальной машине с помощью
vboxmanage --nataliasmode1 proxyonly
для отключения алиасинга и переключения NAT в прозрачный режим.
Подробнее см. Здесь: https://www.virtualbox.org/manual/ch09.html#nat-adv-alias
Ваша виртуальная машина находится за NAT в вашей настройке, и вы фактически получаете доступ к веб-серверу через переадресацию портов, поэтому вы не можете раскрыть IP-адреса клиентов, используя только виртуальный бокс. Одна вещь, которую вы можете сделать, - это настроить на своем хосте несколько облегченный веб-сервер (например, nginx или lighttpd), который будет прослушивать порт 80 в вашей сети, работая в режиме обратного прокси на ваш перенаправленный порт, чтобы ваша виртуальная машина работала как бэкэнд в этой настройке. Чтобы получить IP-адрес клиента, этот веб-сервер должен передать некоторые дополнительные переменные, например X-Real-IP
, Host
, X-Forwarded-For
(вот пример виртуального хоста для nginx при условии, что ваша виртуальная машина перенаправляет свой порт 80 на локальный 8080):
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_arrd;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}