Иногда адрес ipv4 вместо адреса ipv6

На моем веб-сайте, который работает с apache2 на сервере debian с записью aaa, я проверяю с помощью php, использует ли пользователь IPv6 или нет. Для этого я получаю IP-адрес пользователя со следующим кодом:

if (isset($_SERVER['HTTP_CLIENT_IP'])){
   $ip = $_SERVER['HTTP_CLIENT_IP'];
}else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
   $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else if(isset($_SERVER['HTTP_X_FORWARDED'])){
   $ip = $_SERVER['HTTP_X_FORWARDED'];
}else if(isset($_SERVER['HTTP_FORWARDED_FOR'])){
   $ip = $_SERVER['HTTP_FORWARDED_FOR'];
}else if(isset($_SERVER['HTTP_FORWARDED'])){
   $ip = $_SERVER['HTTP_FORWARDED'];
}else if(isset($_SERVER['REMOTE_ADDR'])){
   $ip = $_SERVER['REMOTE_ADDR'];
}else{
   echo "ERROR";
}

Все работает нормально. Но иногда я получаю адрес IPv4, даже если у меня есть соединение Ipv6. И это не может быть ошибкой моего подключения к Интернету, потому что при посещении веб-сайта проверки IP (например, этот ) он показывает мне адрес IPv6. Я также могу пинговать свой сервер с помощью ping -6 server_ip . Значит, должна быть проблема с моей aaa-записью, или с apache2, или, возможно, с php. Надеюсь, кто-нибудь сможет мне помочь.

0
задан 22 October 2020 в 20:02
1 ответ

В этом нет ничего плохого. Поскольку ваш веб-сайт разрешает адреса как IPv4, так и IPv6, браузер (или любой другой HTTP-клиент) на другом конце может выбрать адрес в случайном порядке или предпочесть IPv6, а не IPv4 (или наоборот). Иногда он вполне может подключаться через IPv4, а иногда через IPv6. Поведение должно зависеть от браузера, и реализация будет сильно различаться от одного программного обеспечения к другому. Возможно, этот пост тоже поможет.

1
ответ дан 22 October 2020 в 19:40

Теги

Похожие вопросы