miércoles, 14 de noviembre de 2018

Network Manager

El Network Manager es el administrador de las conexiones de Ubuntu

Su fichero de configuracion se encuentra en la ruta /etc/NetworkManager/NetworkManager.conf

----
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

----

Cada dispositivo que el Network Manager administra es configurado mediante una conexión cuyo archivo es guarda en /etc/NetworkManager/system-connections/[nombre de la conexion]

/etc/NetworkManager/system-connections/LAN en PC Cliente para la iface enp0s3
----
[connection]
id=LAN
uuid=150ada1a-6db9-3c62-b7cd-e934bc979568
type=ethernet
autoconnect-priority=-999
interface-name=enp0s3
permissions=
timestamp=1538758218

[ethernet]
mac-address=08:00:27:00:03:01
mac-address-blacklist=

[ipv4]
address1=192.168.100.11/24,192.168.100.254
dns=192.168.100.11;192.168.100.254;8.8.8.8;8.8.4.4;
dns-search=aulaser.com
method=manual

----

Configurado de manera manual con
IP 192.168.100.11
mascara /24
puerta de enlace 192.168.100.254
servidores DNS locales y de google
y dominio de busqueda el dominio local de la entidad: aulaser.com

En el caso de que se hubieran definido rutas apareceria en la seccion [ipv4] la variable routeX=bloque_IPs,via,metrica

Ejemplo: route1=10.0.116.0/24,192.168.100.116,100

Para una interfaz configurada de manera automatica por DHCP
method=auto

Y si solo queremos que nos propociones IP mascara y gateway pero no servidores DNS ademas:
ignore-auto-dns=true

Dispone de una interfaz de linea de comandos NMCLI





El comando ip

Nuevo comando para obtener informacion de nuestras interfaces.

Para ver nuestras intefaces de red y su MAC

>ip link

>ip link show enp0s3


Para ver las direcciones de red configuradas en las interfaces (links)

>ip address

>ip address show dev enp0s3
>ip address show scope link


Para ver las rutas

>ip route
>ip route list dev enp0s3



Junto con el comando tracepath

>tracepath servidor.aulaser.com
>tracepath 192.168.112.13



martes, 13 de noviembre de 2018

De ifconfig a ip en ubuntu 18

Fuentes:

https://askubuntu.com/questions/1038037/ifconfig-in-ubuntu-18-04-is-not-working

https://blog.ubuntu.com/2017/07/07/if-youre-still-using-ifconfig-youre-living-in-the-past

Configuracion mediante ficheros de las intefaces de red

Archivo /etc/network/interfaces

iface eth1 inet static
address 192.168.1.41

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255
gateway 192.168.1.1

dns-nameserver 8.8.8.8
dns-search [dominio local]



Archivo /etc/resolv.conf (no se edita, se escribe por el programa resolvconf)

search [dominio local]
nameserver [IP servidor DNS]


Aplicar la configuración reiniciando la red:

/etc/init.d/networking restart


En version 18

editar el fichero /etc/netplan/01-network-manager-all.yaml

-----------
network:
  version: 2   
  renderer: networkd
  ethernets:
    enp0s3:
       dhcp4: no
       dhcp6: no
       addresses: [192.168.100.123/24]
       gateway4: 192.168.100.254
       nameservers:
         addresses: [192.168.100.254,8.8.8.8] 

-------------

Ejecutar

>sudo netplan apply

y comprobar

>systemctl status systemd-networkd
>ip address show dev enp0s3

Para comprobar servidores DNS
>systemd-resolve --status  

Se guardan en el archivo /run/systemd/resolve/resolv.conf

Aunque en /etc/resolv.conf indica 127.0.0.53 que luego hace forward a estos primeros



Fuentes:
https://www.solusan.com/etcnetworkinterfaces-de-un-plumazo.html

https://www.todavianose.com/configurar-interface-de-red-en-versiones-de-ubuntu-17-10-o-superiores/

https://askubuntu.com/questions/1031709/ubuntu-18-04-switch-back-to-etc-network-interfaces

https://www.administradortotal.net/sistemas/linux/configurar-la-red-ubuntu-18-04-derivados/

https://aprendiendoavirtualizar.com/configurar-ip-estatica-en-ubuntu-server/

https://aprendiendoavirtualizar.com/configurar-ip-estatica-en-ubuntu-server-18-04/

https://websiteforstudents.com/configure-static-ip-addresses-on-ubuntu-18-04-beta/

https://www.techrepublic.com/article/how-to-set-dns-nameservers-in-ubuntu-server-18-04/


Network Manager Comand Line Interface - nmcli

Terminos:

Dispositivo: Interfaz de red (link o device)

Conexión: Conjunto de opciones de configuración establecidas (connection)


Ver informacion general de las intefaces de red
>nmcli

>nmcli device show [nombre de interfaz]

>nmcli device show enp0s3



Averiguar las conexiones disponibles

>nmcli connection show


Obtener detalles de una conexión especifica

>nmcli connection show [nombre_conexión]


Obtener información del estado de los dispositivos (si están administrador o no por networkmanager)

>nmcli device status


Añadir una conexión

1.  Automatica por DHCP

nmcli connection add con-name "[nombre-conexión]" type [ethernet | loopback] ifname [nombre_dispositivo]

2. Estatica

nmcli connection add con-name "[nombre-conexión]" type [ethernet | loopback] ifname [nombre_dispositivo] autoconect no ip4 x.y.z.w gw4 x.y.z.w


Modificar una conexión

1. Indicar un DNS
nmcli connection modify "[nombre_conexion] ipv4.dns 8.8.8.8


1. Añadir un DNS (ademas del que había)
nmcli connection modify "[nombre_conexion] +ipv4.dns 8.8.4.4

3. Añadir otra dirección IP
-ip4.addresses x.y.z.w



Aplicar los cambios en una configuración de una conexión

nmcli connection update [nombre_conexion]


Ejemplos:

1. Modificar el hostname de una conexión enp0s3 (nombre de con y de dispositivo)

nmcli con modify enp0s3 ipv4.dhcp-hostname 'hostname'


ffvfvf

Fuentes:

https://www.unixmen.com/basics-networkmanager-command-line-tool-nmcli/

https://bbs.archlinux.org/viewtopic.php?id=195388


Evitar que NM controle una interfaz de red

El NetworkManager es un servicio que se encarga de administrar las conexiones de red del equipo. Pero solamente se encargá de aquellas que le dejemos que administre.

Cuando una conexión de red está administrada por NetworkManager su configuración no se obtiene de los ficheros de configuración estándares del sistema. Para configurar la tarjeta de red tendremos que hacerlo mediante el applet del NetworkManager, o es su defecto mediante la CLI con el comando nmcli


Existen varias maneras para indicar al NetworkManager que no queremos que una conexión sea administrada por este.

Una de ellas consiste en definir la configuración de la interfaz en el fichero de configuración de las interfaces de red /etc/network/interfaces



Fuentes:

https://websetnet.net/disable-network-manager-linux/

http://support.qacafe.com/knowledge-base/how-do-i-prevent-network-manager-from-controlling-an-interface/

https://askubuntu.com/questions/266767/how-to-stop-networkmanager

https://people.freedesktop.org/~lkundrak/nm-docs/nmcli-examples.html

https://enavas.blogspot.com/2016/07/evitar-que-network-manager-controle.html

Cliente de DHCP

El cliente de DHCP se invoca mediante la orden dhclient.

El comportamiento del cliente de DHCP se puede configurar mediante el fichero de configuración /etc/dhcp/dhclient.conf.

Si comentamos con un # la linea

#send host-name = gethostname();

El cliente no enviará su hostname y será la configuración del servidor DHCP la que tendrá que proporcionarlo.


>sudo dhclient -v
>sudo dhclient -r

No obstante, NetworkManager creará un archivo en /var/lib/NetworkManager con nombre dhclient-enp0sN.conf con una mezcla de sus opciones más las de el fichero estandar.



El archivo /var/lib/dhcp/dhclient.leases contiene la informacion de las últimas concesiones realizadas por el servidor para que el que cuando el cliente se inicia pida renovarlas al servidor.

El network manager no usa este achivo de configuracion directamente, usa sin embargo este otro:

/var/lib/NetworkManager/dhclient-[conection.uuid]-enp0sN.lease


Mediante este comando podremos hacer que se envie el hostname o no si estamos usando Networkmanager

>nmcli con modify "LAN" ipv4.dhcp-send-hostname FALSE

y con este ver los resultados


Si no queremos que el nm administre nuestra interfaz debemos editar el archivo de configuración de las interfaces de red  /etc/network/interfaces.

Si lo que queremos es que la configuración de red sea automática por dhcp entonces el archivo debe contener la siguiente línea:

iface enp0s3 inet dhcp


Además debemos reiniciar el servicio network-manager mediante el comando

/etc/init.d/network-manager restart


Fuentes:
https://askubuntu.com/questions/151958/how-to-make-dhclient-forget-its-last-dhcp-lease

https://wiki.gnome.org/Projects/NetworkManager

https://bbs.archlinux.org/viewtopic.php?id=195388







Configurar Webmin para la version 4.4.3 del servidor DHCP de ISC

El boton de start del módulo de configuración para DHCP de Webmin parece no funcionar, pero en realidad el problema está en que  en el módulo no está bien configurada la ruta al fichero PID del proceso dhcpd

Por lo tanto, hay que cambiarlo por

/run/dhcp-server/dhcpd.pid



Podemos averiguar el estado actual en el que se encuentra el servicio DHCP mediante el comando

/etc/inid.d/isc-dhcp-server status

y comprobar si el servicio se encuentra en ejecución o por el contrario, se encuentra detenido.

jueves, 18 de octubre de 2018

Reenvio de puertos (Port forwarding) en Ubuntu mediante iptables

El reenvío de puertos permite acceder a equipos que están situados detrás de la interfaz LAN o interna de un router. Este router está realizando traducción de direcciones IP origen (NAT) porque las direcciones IP del segmento interno usan direccionamiento IP privado. Gracias a ello los equipos con dirección IP privado pueden establecer conexiones con equipos externos en la Internet, dado que el equipo remoto contactado responde a la IP Publica de la interfaz WAN o externa del router.

La finalidad del Port Forwarding es justo la contraria, permitir que sea un equipo exterior el que pueda contactar con algún servicio de un equipo del segmento interno de la red. Para ello, el equipo externo intentará establecer una conexión usando la IP publica del router y especificando un puerto (externo). El router debe redirigir este trafico que ha recibido en dicho puerto. Esto se hará especificando la IP del equipo donde está el servicio y el puerto (interno) en el que escucha el servicio dentro de esa máquina.

Para configurar el equipo que hace de router en un sistema Linux se realiza mediante IP Tables.
La regla se debe aplicar a la tabla NAT en la cadena PREROUTING. La condición de los paquetes es que lleguen por la interfaz WAN y que vengan dirigidos al puerto externo que queremos redirigir. La acción a realizar se especifican mediante una acción de tipo DNAT indicando la IP destino (la del equipo destino de la redirección) y el puerto de destino.

Ejemplo:

Permitir una conexión a Webmin de un equipo interno que tiene IP 192.168.1.2

Redirigir el trafico que llegue al puerto 3000 del router al puerto 10000 (Webmin) de la maquina con IP 192.168.1.2

Explicar con iptables

Tambien se puede hacer mediante ssh

Asi:

https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding


Fuentes:

https://askubuntu.com/questions/751467/forward-port-to-local-ip-port

Esta podria ser util tambien
https://askubuntu.com/questions/320121/simple-port-forwarding

viernes, 19 de enero de 2018

Instalación de Apache Web Server

Podemos instalar el servidor web Apache desde webmin. Para ello, desplegaremos la opción Unused modules>Apache Webserver


y hacemos click en el enlace para iniciar la instalación


o desde la linea de comandos

>sudo apt-get update
>sudo apt-get install apache2

Al instalar se crean:
- Los archivos de configuración.
- El usuario www-data dentro del grupo tambien llamado www-data.
- La carpeta /var/www

Comprobar que se ha creado el usuario www-data y el grupo del mismo nombre.

>cat /etc/passwd | grep www-data

y el grupo

>cat /etc/group| grep www-data

Mediante el usuario y el grupo www-data se ejecutan los procesos hijos de apache que se encargan de atender peticiones.

Comprobar que
Se ha creado el directorio /var/www
Su propietario es root y grupo root

Este es el directorio raiz del "servidor virtual por defecto".

>ls -l /var/www


Iniciar el servidor apache

Para iniciar el servicio, como cualquier otro servicio de ubuntu utlizamos el siguiente comando:

>/etc/init.d/apache2 start  (o service apache2 start)

y para comprobar el estado

>>/etc/init.d/apache2 status

El servidor se iniciará correctamente, podemos comprobarlo leyendo el fichero de registro de eventos des sistema, aunque nos dará un pequeño error, el cual consiste en que no puede determinar el nombre del equipo.

>cat /var/log/syslog | grep apache2




La opción Others>System and Server Status de Webmin también nos permite saber el estado en que se encuentran nuestros servicios, entre ellos Apache.


Para iniciar y detener el servidor apache tambien podemos usar el script apachectl de la siguiente manera

>sudo apachectl start
>sudo apachectl stop

Haciendolo de esta manera obtenemos información que apache envia al syslog, pues también no saca esta misma infomacion directamente por el terminal.




Podemos apreciar el error antes comentado y la forma de solucionarlo (más tarde)

Comprobamos que se han creado los directorios y archivos de configuración en la carpeta /etc/apache2



Consultamos su contenido

/etc/apache2/apache2.conf





/etc/apache2/ports.conf



/etc/apache2/envars

Comprobar los subdirectorios

Directorios de configuración de módulos disponibles y habilitados

/etc/apache2/mod-available
/etc/apache2/mods-enabled

Directorios de configuración de sitios (o servidores) virtuales

/etc/apache2/sites-available
/etc/apache2/sites-enabled

Directorios de configuraciones
/etc/apache2/conf-available
/etc/apache2/conf-enabled




Comprobar que el proceso está en ejecución, es decir, que el servidor esta iniciado.

>ps -ef \ grep apache

Las opciones utilizadas corresponden a:
-e para ver todos los procesos
-f (full) para ver la informacion completa de cada proceso






Desde Webmin también podemos visualizar procesos en ejecución desde la opción System>Running Processes

Para buscar  procesos tenemos varias opciones dependiendo de la caja de texto que seleccionemos marcado el boton de radio a su lado.



Por ejemplo, matching y escribiendo "apache" o Using Port y escribiendo 80.




Observar que existen varios procesos iniciados por apache2
Uno de ellos es el proceso padre cuyo propietario es root, y el resto son los procesos hijos o trabajadores, creados para atender peticiones y su propietario es www-data.

Podemos saber que son procesos hijos fijandonos en la tercera columna, que nos dice su PPID, el ID de proceso del proceso padre y vemos que coincide con el PID del primero proceso de la lista.

Tambien mediante Wemin podemos hacer click en el PID de un proceso hijo para ver una pagina de detalle del proceso y fijarnos donde dice parent process. A continuación, hacer click en este enlace y ver que nos lleva a lainfo del proceso padre.



Comprobar que el servidor está escuchando en el puerto TCP 80.

>netstat -ltn

En este caso las opciones utilizadas son las siguientes:
-l para mostrar los sockets que estan a la escucha (listening)
-t para quedanos con aquellos que usan el protocolo TCP
-n para que no resuelva nombres y nos muestre numeros (IPs, puertos, etc)

Podemos ver la diferencia entre el uso de la opcion -n o no.




En este caso, como webmin no tiene una opción específica para ver esta información debemos hacer uso de la opción general que permite ejecutar un comando en el servidor. La opcion está ubicada en Others>Command Shell. Una vez ahí, introducir los comandos.



Hasta aqui todas las comprobaciones necesarias.

---