Cisco IOS (originalmente Internetwork Operating System) es el software utilizado en la gran mayoría de routers (encaminadores) y switches (conmutadores) de Cisco Systems (algunos conmutadores obsoletos ejecutaban CatOS). IOS es un paquete de funciones de enrutamiento, conmutamiento, trabajo de internet y telecomunicaciones que se integra estrechamente con un sistema operativo multitarea.
La interfaz de línea de comandos de IOS (IOS CLI) proporciona un conjunto fijo de comandos de múltiples palabras. El conjunto disponible se determina mediante el "modo" y el nivel de privilegios del usuario actual. El modo "Global configuration" proporciona comandos para cambiar la configuración del sistema y el modo "interface configuration" a su vez, proporciona comandos para cambiar la configuración de una interfaz específica. A todos los comandos se les asigna un nivel de privilegios, de 0 a 15, y pueden ser accedidos por usuarios con los privilegios necesarios. A través de la CLI, se pueden definir los comandos disponibles para cada nivel de privilegio.
Arranque
Al arrancar un dispositivo de Cisco este realiza una comprobación de hardware.
Después intentará cargar una imagen IOS desde la memoria Flash o desde un servidor TFTP. En el caso de no hallarla ejecutará una versión reducida de la IOS ubicada en la ROM.
Tras el arranque del sistema localizará la configuración del mismo, generalmente en texto simple. Puede estar ubicada en la memoria NVRAM o en un servidor de TFTP. En el caso de no encontrarla iniciará un asistente de instalación (modo Setup).

Sistema de Archivos
IOS File System (IFS) puede acceder y almacenar distintos tipos de datos en:
Bootflash
Flash se usa para almacenar imágenes completas del software cisco IOS. Guarda copia del sistema operativo.
Flh ASI
Nvram es uno de los componentes de configuración interna de un router. Se usa para almacenar un archivo de configuración de respaldo/inicio
RCP
Slo
Slot1
System
TFTP
Modos de configuración
+Modo USER EXEC: Modo sin privilegios en el que no podemos modificar ni leer la configuración del equipo. Básicamente, solo podemos utilizar: show, ping, telnet, traceroute.
Debemos escribir “enable” en el terminal, para acceder al siguiente modo.
Debemos escribir “enable” en el terminal, para acceder al siguiente modo.
+Modo PRIVILEGED EXEC: Modo de visualización con privilegios.
Debemos escribir “configure terminal” en el terminal, para acceder al siguiente modo.
Debemos escribir “configure terminal” en el terminal, para acceder al siguiente modo.
+Modo de Configuración Global o CONFIGURE: Permite configurar aspectos simples del equipo como pueden ser el nombre, alias de comandos, reloj, etc.
Escribiremos en el terminal : “interface, line, router…” dependiendo de lo que queramos configurar.
Escribiremos en el terminal : “interface, line, router…” dependiendo de lo que queramos configurar.
+Modos de configuración específicos: Permiten configurar protocolos, interfaces o en general aspectos más complejos del equipo.
Imagen explicativa:
Ejemplos de configuración
+Creación de Vlans
Switch#config te
Switch(config)#vlan 3
Switch(config-vlan)#name verde
Switch(config-vlan)#exit
Switch(config)#exit
Switch#
De este modo hemos creado la vlan 3 con nombre verde.
+Eliminación de Vlans
Switch#
Switch(vlan)#no vlan 3
De este modo hemos eliminado la vlan 3.
+Asignando ip a VLANs
Switch#enable
Switch#configure terminal
Switch(config)#interface vlan 3
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
+Puerto de acceso (switchport mode access)
El puerto solo pertence a una VLAN asignada de forma estática (VLAN nativa). Modo por defecto. Inicialmente, todos asignados á VLAN 1
*Asignando Vlan a un puerto
Switch#configure terminal
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport access vlan to (Asegurarse de que el puerto está configurado como vlan access y sino ejecut)
Switch#configure terminal (De este modo el puerto fastEthernet 0/1 pertenece ah)
+Puerto trunk (switchport mode trunk)
Puerto miembro de múltiples VLANs. Por defecto es miembro de todas, pero la lista de VLANs permitidas es configurable.
*Cambiar un puerto a modo trunk
Switch>enable
Switch#configure terminal
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport mode trunk
Podemos modificar un puerto en modo trunk para elegir que vlans pasan a través de éste.
*Quitar vlan de un puerto Vlan trunk
Switch>enable
Switch#configure terminal
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport trunk allowed vlan remove 1
*Añadir Vlan a un puerto Vlan trunk
Switch>enable
Switch#configure terminal
Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport trunk allowed vlan add 1
Seguridad y vulnerabilidades
Cisco IOS ha demostrado ser vulnerable a desbordamientos de buffer y otros problemas que han afectado a otros sistemas operativos y aplicaciones.
Debido a que el IOS tiene que saber la contraseña de texto para determinados usos (por ejemplo, la autenticación CHAP), las contraseñas de entrada en la línea de comandos por defecto son débilmente codificado como "Tipo 7" ,texto cifrado. Esto está diseñado para evitar la ataques "shoulder-surfing" durante la visualización de configuraciones del router y no es seguro - que son fáciles de descifrar utilizando un software llamado "getpass", disponible desde 1995, aunque las contraseñas pueden ser decodificados por el router usando el "key-chain" de comandos y entrando como la llave, y luego utilizando el comando “show-key”.