У меня локальная машина работает как веб-сервер, ее IP-адрес 192.168.1.xxx. На моем маршрутизаторе ADSL я создал порт перенаправления "NAT" на эту машину, он работает нормально, но зарегистрированные IP-адреса посетителей из Интернета на моем веб-сервере всегда назначаются моим общедоступным IP-адресам, а не их IP-адресам.
Я попытался создать DMZ для IP-адреса локального сервера и изменить настройки NAT с ADSL на NAPT на Full Cone NAT.
Обновление 1:
Веб-сервер Apache на Ubuntu 16.04, и я использую следующий php- код для отслеживания IP-адреса пользователя:
public function handle(Login $event)
{
//Perform login tracking
$log = new Loginlog();
$log->created_at = date('Y-m-d H:i:s');
$log->user_id = \Auth::user()->id;
$log->ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$log->est_ip = $ip;
$log->save();
$nowDate = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'));
$deletedRows = \App\Loginlog::where('created_at','<', $nowDate->subDays(config('fox.clearBeforeDays')))->delete();
// dd(\Auth::user()->id,$_SERVER['REMOTE_ADDR']);
}
Обновление 2:
После удаления всех ролей NAT, показанных на втором снимке экрана, и сохранения только DMZ, показанного на третьем снимке экрана, приведенный выше код PHP успешно перехватил IP-адрес клиента правильно!
Вопрос: что не так в NAT, который мешал серверу или, по крайней мере, скрипту, выполняющемуся на нем, перехватывать IP-адрес клиента, в то время как DMZ это только разрешал. Проблема с использованием DMZ в том, что порты машины моего сервера открыты для всего входящего интернет-трафика!
Ниже приведены снимки экрана конфигурации моего маршрутизатора: