Autor
|
Tema: No puedo acceder a wp-admin desde WAN haciendo NAT? (Leído 3,547 veces)
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
Hola, al instalar LAMP en mi servidor RPi3, creé tres VirtualHosts en apache2: - Para trabajos de HTML/CSS (80)
- Proyecto personal (puerto 8080)
- Wordpress (puerto 8000)
configuré el router para que cuando vaya a mi dominio "losheredia.ddns.net:8000" se redirija al puerto 8000 del server: Lista de Servidores Virtuales Nombre WAN IP LAN LAN Protocolo Estado Opciones .... wordpress 8000 192.168.0.2 8000 TCP Activado Modificar/Eliminar /etc/apache2/sites-enabled/000-default.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com
ServerAdmin webmaster@localhost DocumentRoot /home/webserver
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> <VirtualHost *:8080> ServerName GTE ServerAdmin webmaster@localhost #ServerAlias pruebas2.local DocumentRoot /home/gte/ ErrorLog ${APACHE_LOG_DIR}/error_gte.log CustomLog ${APACHE_LOG_DIR}/access_gte.log combined </VirtualHost> <VirtualHost *:8000> ServerName wordpress ServerAdmin webmaster@localhost DocumentRoot /home/wordpress/ ErrorLog ${APACHE_LOG_DIR}/error_wordpress.log CustomLog ${APACHE_LOG_DIR}/access_wordpress.log combined </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
/etc/apache2/sites-available/000-default.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com
ServerAdmin webmaster@localhost DocumentRoot /home/webserver
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> <VirtualHost *:8080> ServerName GTE ServerAdmin webmaster@localhost #ServerAlias pruebas2.local DocumentRoot /home/gte/ ErrorLog ${APACHE_LOG_DIR}/error_gte.log CustomLog ${APACHE_LOG_DIR}/access_gte.log combined </VirtualHost> <VirtualHost *:8000> ServerName wordpress ServerAdmin webmaster@localhost DocumentRoot /home/wordpress/ ErrorLog ${APACHE_LOG_DIR}/error_wordpress.log CustomLog ${APACHE_LOG_DIR}/access_wordpress.log combined </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
y toda la configuración de wordpress esta bién (esta instalada en /home/wordpress/), en LAN va todo bien, pero al acceder desde el exterior (WAN) e inserto en el navegador "losheredia.ddns.net:8000" me accede a la página que estoy creando pero si accedo a "losheredia.ddns.net:8000/wp-admin" se queda cargando... También pasa que me devuelve la ip local ( http://192.168.0.2:8000) al hacer http://losheredia.ddns.net:8000Temo que es alguna problematica de puertos. Mi pregunta es, ¿porque al acceder al losheredia.ddns.net:8000 puedo acceder pero al losheredia.ddns.net:8000/wp-admin no puedo?
|
|
« Última modificación: 7 Noviembre 2019, 17:04 pm por Drakaris »
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
MinusFour
|
No es error de apache, es error de tu wordpress. Tu servidor me contesta correctamente con la instalación de wordpress pero tu HTML tiene rutas apuntando a tu ip privada. Por lo que significa que tu wordpress está mal configurado.
|
|
|
En línea
|
|
|
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
No es error de apache, es error de tu wordpress. Tu servidor me contesta correctamente con la instalación de wordpress pero tu HTML tiene rutas apuntando a tu ip privada. Por lo que significa que tu wordpress está mal configurado.
Es tema de puertos o urls? Además en el colegio me redirreccionaba a http://192.168.0.2:8000/wp-admin, que es aquello que provoca que me de la ip local y no la wan?
|
|
« Última modificación: 6 Noviembre 2019, 00:45 am por Drakaris »
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
MinusFour
|
Es tema de puertos o urls?
URLs. No hay ninguna URL cuando cargo tu wordpress que apunte a "losheredia.ddns.net:8000". Todas las URLs apuntan a tu IP privada.
|
|
|
En línea
|
|
|
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
URLs. No hay ninguna URL cuando cargo tu wordpress que apunte a "losheredia.ddns.net:8000". Todas las URLs apuntan a tu IP privada.
Si y me fijé que me da una ip local Es decir, cuando hago http://losheredia.ddns.net:8000/wp-admin me da http://192.168.0.2:8000/wp-admin haciendo así que no me vaya. Pero en losheredia.ddns.net:8000 va bien.
|
|
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
Ya puede solucionarlo. El problema estaba en que, en la raiz no hay dirreccionamiento de url por la cual no afecta tanto entrar con el dominio o por ip privada pero una vez quieres entrar en wp-admin, el wp-admin redirecciona la url a la ip privada auque estes accediendo desde WAN, ya que esta configurado en el panel de wordpress, inserté esto en wp-config en mi caso (/home/wordpress/wp-config.php): define('WP_HOME','http://losheredia.ddns.net'); define('WP_SITEURL','http://losheredia.ddns.net');
Con esto le estas diciendo a wordpress que las urls sean de tipo "htttp://losheredia.ddns.net/*". También si tienes phpmyadmin modifica la base de datos de wordpress, tabla wp_options. Mas información en https://kinsta.com/es/base-de-conocimiento/cambiar-wordpress-url/Ahora si esto está configurado y el NAT esta bien configurado al acceder a http://losheredia.ddns.net:8000 podrás acceder a la web y si se cargan las imagenes significa que tienen acceso al panel de administración de wordpress. Ahora toca en LAN, ya que si accedemos a 192.168.0.2/wp-admin lo encontrará pero sin formato, así que lo que debemos de hacer es. En el ordenador donde queremos acceder por LAN a wp-admin/ debemos de modificar el archivo /etc/hosts y insertar esta linea: 192.168.0.2 losheredia.ddns.net y en el host del servidor añadir el /etc/hosts: 127.0.0.1 losheredia.ddns.net Para acceder desde LAN con esta configuración sería igual a la que si estuvieramos en WAN http://losheredia.ddns.net/wp-adminAsí puedes acceder tanto en LAN como WAN y trabajar.
|
|
« Última modificación: 6 Noviembre 2019, 14:28 pm por Drakaris »
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
WHK
|
Dos cosas: Primero, eso pasó porque instalaste wordpress usando tu ip local en ves de la externa, Wordpress no es friendly al momento de migrar de un dominio a otro, debes modificar muchas cosas incluyendo configuraciones en la base de datos, temas, serializaciones, etc, es un verdadero parto. Si tu wordpress está recien instalado entonces te recomiendo que lo elimines y lo vuelvas a instalar pero usando el dominio externo. Por otro lado tienes un problema con el servername del host virtual del apache: El ServerName en el virtualhost indica el dominio que se usará para acceder al sitio web, o sea, el apache tomará de tu cabecera http el host que quieres acceder y si existe ese host en tu host virtual entonces lo utilizará. Talves en tu caso lo usaste como traducción a tu host local. Debes dejarlo masomenos así: ServerName losheredia.ddns.net Y la próxima ves debes acostumbrarte a crear archivos específicos para host virtuales específicos, no es buena idea usar el 000 default para rutear tus sitios personales sino cuando alguien acceda por ip a tu servidor el apache no śabrá como reaciconar y mostrará tu wordpress y causará fallas en las urls o podría incluso abrir problemas de seguridad. Saludos.
|
|
|
En línea
|
|
|
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
Dos cosas: Primero, eso pasó porque instalaste wordpress usando tu ip local en ves de la externa, Wordpress no es friendly al momento de migrar de un dominio a otro, debes modificar muchas cosas incluyendo configuraciones en la base de datos, temas, serializaciones, etc, es un verdadero parto. Si tu wordpress está recien instalado entonces te recomiendo que lo elimines y lo vuelvas a instalar pero usando el dominio externo. Por otro lado tienes un problema con el servername del host virtual del apache: El ServerName en el virtualhost indica el dominio que se usará para acceder al sitio web, o sea, el apache tomará de tu cabecera http el host que quieres acceder y si existe ese host en tu host virtual entonces lo utilizará. Talves en tu caso lo usaste como traducción a tu host local. Debes dejarlo masomenos así: ServerName losheredia.ddns.net Y la próxima ves debes acostumbrarte a crear archivos específicos para host virtuales específicos, no es buena idea usar el 000 default para rutear tus sitios personales sino cuando alguien acceda por ip a tu servidor el apache no śabrá como reaciconar y mostrará tu wordpress y causará fallas en las urls o podría incluso abrir problemas de seguridad. Saludos. Ok gracias, estas diciendo, que si yo unicamente en mi VirtualHost de puerto 8000 de /etc/apache2/sites-available/000-default.conf inserto esta linea: ServerName losheredia.ddns.net Tendría acceso tanto en WAN o LAN, indiferentemente de que red pongas? (192.168.0.2 en local y losheredia.ddns.net en WAN) P.D: Y si creo otro archivo en sites-available como por ejemplo wordpress.conf y en sites-enabled funcionaría? No lo hago para no liarla y por desconocimiento. Gracias.
|
|
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
MinusFour
|
Ok gracias, estas diciendo, que si yo unicamente en mi VirtualHost de puerto 8000 de /etc/apache2/sites-available/000-default.conf inserto esta linea: ServerName losheredia.ddns.net Tendría acceso tanto en WAN o LAN, indiferentemente de que red pongas? (192.168.0.2 en local y losheredia.ddns.net en WAN) P.D: Y si creo otro archivo en sites-available como por ejemplo wordpress.conf y en sites-enabled funcionaría? No lo hago para no liarla y por desconocimiento. Gracias. Si no puedes acceder al sitio desde dentro de tu LAN con la IP externa entonces es problema de tu router. Es una medida de seguridad de los routers para evitar spoofing. Generalmente hay una opción de Nat Loopback o Hairpining o similar que simplemente redirige los paquetes de vuelta. Si no puedes hacer eso, la entrada que pusiste en /etc/hosts va muy bien. El problema es cada dispositivo LAN que quiera acceder al sitio va a necesitar usar ServerName no te va ayudar mucho en este aspecto, porque tienes los servidores haciendo matching por puerto. Es buena idea poner un ServerName si tienes un FQDN. Si no, realmente no importa. Preferiblemente, si manejas multiples sitios por instalación de Apache entonces lo recomendable es tener los sitiosi en sus archivos correspondientes. Los archivos van en sites-available, la carpeta de sites-enabled solo debería tener symlinks a los archivos en sites-available. De tal forma, puedes deshabilitar y habilitar sitios simplemente borrando los symlinks en sites-enabled. No escribas directamente sobre sites-enabled. De hecho, debian y compañia tienen scripts: "a2ensite" y "a2dissite" que hacen precisamente esto.
|
|
|
En línea
|
|
|
|
|
|