Conocer IPv4 e IPv6 publica y privada en PHP

Iniciado por gregory90, 3 Marzo 2018, 22:19 PM

0 Miembros y 1 Visitante están viendo este tema.

gregory90

Hola,

Estoy haciendo un trabajo y a ver si alguien me echa una mano con esto.

Necesito conocer la IP publica, privada y hostname tanto en versión 4 como versión 6 sobre PHP.

Código (php) [Seleccionar]
$ip4pub = $_SERVER['REMOTE_ADDR'];
$ip6pub = ???
$hostnamepub = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$ip4loc = ???
$ip6loc = ???
$hostnameloc = gethostname();


??? = Son las que me faltarían. Ya he buscado pero no veo nada que me valga para este caso.

Gracias!

engel lex

#1
XD sin animos de hacerte sentir mal, lo que necesutas no son funciones, es conocimiento de tcp/ip XD


no puedes obtener esos datos

1- ipv4 - ipv6: solo puedes obtener uno de los 2, los paquetes van marcado con solo uno, y depende del cliente si tieneipv6 y su configuración cual use

2- ip privada: no hay razón para que la pc lo envie estose intercambia en el nat por la publica y no pasa de allí

3- hostname: tampoco hay razon para que envíe el hostname, puede que si esté configurado lo mande como en la cabecera, pero por razones de privacidad no se tiende a hacer

4- el gethostbyaddr tal vez no hace lo que quieres, esto puede ser muy lento y lo que hace es u reversedns, usualmente para los usuarios comunes, si responde algo, responderá es el nombre de esta ip según su proveedor, en tu caso #.red-#-#-#.dynamicip.rima-tde.net (donde los ## son tu ip invertida)


por js si podrías intentar obtenerlos
- hay un hack que te permite en algunos casos conocer la ip privada
- el ipv6 requeririas llamar desde js por ajax a una pagina por su ipv6 y que esta retorne el REMOTE_ADDR
- el hostname hay algunos hack en flash player para eso (si logras que el usuario active flash)

la primera y ultima pueden hacer saltar el antivirus
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gregory90

Cita de: engel lex en  3 Marzo 2018, 22:28 PM
no puedes obtener esos datos

En alguna web vi que se obtenian.

Igualmente, quizás me expliqué mal.

La ipv4 pública me la da sin problemas.
El reversedns que comentas, me vale el que me da.
En cuanto al tema ipv6 público entiendo a lo que te refieres.

En cuanto al ipv6 privado, dependerá del cliente que ejecute el código si tiene en su interface habilitado el tráfico ipv6 o solo ipv4 (por defecto están los dos habilitados) para evitarse posibles ataques tipo syn flood de ipv6 sería mejor deshabilitar este tipo de tráfico de forma internal en un red local, ya que esta no hace NAT (por que en ipv6 no existe el concepto de NAT...) y la conexión sería extremo a extremo, pero esto no es el caso de este post.

Básicamente lo que quería saber es la IPv4 IPv6 interna de un red local, de la propia máquina que ejecuta el código así como el hostname, el nombre de máquina.

Comentas que esto último se puede hacer con js no?.

engel lex

la ipv6 interna a pesar que está activa por defectos en algunas maquinas, no tiende a estar configurada (el router normalmente no tiene configuración de ello)

si, puedes por js... lo mismo, ip4 o ip6 según la configuración principal

aquí el "hack" aplicado (entre comillas porque se supone que es un feature no un bug)
http://net.ipcalf.com/
https://stackoverflow.com/questions/20194722/can-you-get-a-users-local-lan-ip-address-via-javascript
https://ourcodeworld.com/articles/read/257/how-to-get-the-client-ip-address-with-javascript-only

sobre el hostname se que existía la posibilidad con flash... pero hace tantos años de eso... XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.