OpenWrt

  • Iniciador del tema Miembro eliminado 481556
  • Fecha de inicio
Aria2 ha agregado en su paquete a aria2ng una interfaz web hecha completamente en html & javascript, la cual no requiere un entorno de compilacion como pasaba con aria2 webui, siendo mas rapida y amigable ademas de no tener tantos errores comparandolo con webui

1634409330791.png


Todavia sirve con la configuracion de aria2 que deje en un post atras

Despues agregare un tutorial basico para que puedan compilar su propia imagen agregando parches que no esten en el arbol de desarrollo, entre otras cosas

Saludos.
 
Hola muchachos he estado modificando mi firewall script para etiquetar los paquetes DSCP, y he cambiado algunas prioridades, quisiera saber como se comporta este script con DOCSIS y con FTTH con protocolo PPPoE, ya que no puedo por este lado

Gracias
Script
Código:
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

# Internal uci firewall chains are flushed and recreated on reload, so
# put custom rules into the root chains e.g. INPUT or FORWARD or into the
# special user chains, e.g. input_wan_rule or postrouting_lan_rule.

# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

# Internal uci firewall chains are flushed and recreated on reload, so
# put custom rules into the root chains e.g. INPUT or FORWARD or into the
# special user chains, e.g. input_wan_rule or postrouting_lan_rule.

iptables -t mangle -N dscp_mark
ip6tables -t mangle -N dscp_mark

iptables -t mangle -F dscp_mark
ip6tables -t mangle -F dscp_mark

iptables -t mangle -A FORWARD -j dscp_mark
ip6tables -t mangle -A FORWARD -j dscp_mark

## Shorten
ipt (){
    iptables -t mangle -A dscp_mark "$@"
    ip6tables -t mangle -A dscp_mark "$@"
}


## Limpieza de paquetes entrantes
ipt -j DSCP --set-dscp 0

## icmp
ipt -p icmp -j DSCP --set-dscp-class CS5
ipt -p icmpv6 -j DSCP --set-dscp-class CS5

## WEB
ipt -p tcp -m multiport --ports 80,591,8008,8080,443 -j DSCP --set-dscp-class CS3 -m comment --comment "HTTP/S CS3 TCP"

## ALL
ipt -p udp -m multiport ! --ports 80,591,8008,8080,443 -j DSCP --set-dscp-class CS5 -m comment --comment "CS5 (UDP)"
ipt -p tcp -m multiport ! --ports 80,591,8008,8080,443 -j DSCP --set-dscp-class CS3 -m comment --comment "CS3 (TCP)"
Configuracion sqm ( porfavor cambiar overhead por los valores ej DOCSIS. Gracias)
Código:
config queue 'wan'
    option ingress_ecn 'ECN'
    option egress_ecn 'ECN'
    option enabled '1'
    option debug_logging '0'
    option verbosity '5'
    option qdisc 'cake'
    option qdisc_advanced '1'
    option qdisc_really_really_advanced '1'
    option squash_dscp '0'
    option squash_ingress '0'
    option download '0'
    option script 'layer_cake.qos'
    option linklayer 'ethernet'
    option linklayer_advanced '1'
    option tcMTU '2047'
    option tcTSIZE '128'
    option upload '105000'
    option tcMPU '0'
    option linklayer_adaptation_mechanism 'cake'
    option interface 'eth1'
    option eqdisc_opts 'diffserv8 nat dual-srchost mpu 64'
    option overhead '39'

config queue
    option debug_logging '0'
    option verbosity '5'
    option qdisc 'cake'
    option qdisc_advanced '1'
    option ingress_ecn 'ECN'
    option qdisc_really_really_advanced '1'
    option enabled '1'
    option squash_dscp '0'
    option squash_ingress '0'
    option egress_ecn 'ECN'
    option script 'piece_of_cake.qos'
    option download '0'
    option linklayer 'ethernet'
    option linklayer_advanced '1'
    option tcMTU '2047'
    option tcTSIZE '128'
    option tcMPU '0'
    option linklayer_adaptation_mechanism 'cake'
    option interface 'eth0'
    option eqdisc_opts 'diffserv8 dual-dsthost ingress nat mpu 64'
    option overhead '40'
    option upload '106500'
 
QoSify es un servicio que utiliza el algoritmo CAKE con el famoso Extended Berkeley Packet Filter el cual va a permitir ejecutar CAKE dentro del kernel aumentando su eficiencia y compatibilidad ademas que ya no se requerira de iptables para marcar los DSCP dentro de los protocolos

Lo malo es que requiere que las herramientas de compilacion (GCC Y Binutils) "habilite" LLVM para agegar eBPF al kernel que se utiliza en OpenWrt

Esto me motiva mas para tener un espacio de tiempo y explicar como se compila OpenWrt para agregar LLVM y asi utlizar QoSify

Y lo de "gestionar las conexiones según la potencia de la señal ?" que seria gestionar?
 
Última edición:
Gracias por la explicacion lanero, con respecto a gestionar quiero es que si la potencia intensidad de señal es baja en 5 GHz, por ejemplo que llegue a -65dBm se pase a la red de 2.4 GHz, y quiero es que cuando este dentro de un umbral de intensidad de señal este conectado y cuando este por debajo de una desconecte al cliente para que este se conecte a otro equipo u otra red.
Seria jugar con las potencias de cada banda y agregar " option noscan '1' " a la interface de la banda 2,4 GHz,

Por otro lado he probado QoSify y es un alivio total diferente a sqm-scripts ya que no se requiere de ipset o iptables para asignar prioridad a los paquetes por capas, se volvio mas simple de configurar y tambien no se requiere saber que rango de IPs tienen los servicios de streaming entre otros, simplemente se integra con dnsmasq para usar los hostnames de los servicios y agregarles marcas DSCP

Aqui dejo mi configuracion (como es un paquete nuevo puede sufrir cambios y es experimental)

Código:
config defaults
    list defaults /etc/qosify/*.conf
    option dscp_prio CS5
    option dscp_icmp CS5
    option dscp_bulk CS0
    option dscp_default_udp    CS5
    option bulk_trigger_timeout 5
    option bulk_trigger_pps    100
    option prio_max_avg_pkt_len 500

config interface wan
    option name wan
    option disabled 0
    option bandwidth_up 100mbit
    option bandwidth_down 101mbit
    # defaults:
    option ingress 1
    option egress 1
    option mode diffserv8
    option nat 1
    option host_isolate 1
    option autorate_ingress 1
    option ingress_options "dual-dsthost ingress mpu 64 overhead 40"
    option egress_options "dual-srchost mpu 64 overhead 39"
    option options ""

config device wandev
    option disabled 1
    option name wan
    option bandwidth 105mbit
 
Pille el Redmi AC2100, medianamente barato me llamó la atencion y veo que es compatible con OpenWrt, no tengo ni idea de que beneficios puede traer, recomiendan cambiar el Firmware, ps juego bastante videojuegos, a veces streams y demás, y en general me interesa la máxima velocidad por wifi, y tener señal estable, Si le cambio el firmware puedo dejar el de claro en modo Bridge?, ah otra cosa muy importante, actualmente tengo una red mesh de claro, que en 3 días la devuelvo y por ahí desde mi pc comparto carpetas de Series y Anime en mi red local, los reproduzco por VLC en mi Chromecast y Celular, podría seguir haciéndolo?, y si me recomiendan, alguien me puede guiar en una manera facil de poder cambiar el Firmware?
 
De lo que hablamos solo falta lo del SQM, le dejo el link para que usted mire bien como configurar bien el sqm


Para Cablemodems seria Ethernet con un rango entre 18 y 22 Bytes siendo 22 lo recomendado, esto es lo que dijo el lanero @Fil010, pero es mejor que haga el calculo usted y haga varias pruebas si quiere tener el mejor rendimiento, puede que no lo note mucho pero en juegos si son competitivos eso se nota, unos 40 ms hacen bastante diferencia, en un juego, no soy de jugar mucho pero si se lo que el lago y se que esto puede desesperar bastante, si tiene dudas, pregunta y si sabe ingles y aprende a usar bien openwrt, seria bueno que contribuyera al hilo.
Muchas gracias Lanero @Thundercat por la ayuda en la instalacion del Firmware

Ya he seguido cacharreando y organice el SQM, con Per packet overhead 22 y 21, los resultados no varian mucho, pero lo dejaré en 22
1638293927254.png

Voy a tratar de instalar el Adguard, aunque no se si sea muy recomendable si no se tiene disco duro en el router
 
No lanero, le recomiendo que no instale el adguard si requiere el mejor ping posible, porque le esta añadiendo mas carga al procesador, si habilita varias listas o configura muchas reglas, va a cargar la cpu, este router puede manejar sin problemas casi 800 megas de velocidad, pero si le pone mas carga al procesador, va a tener problemas de latencia o de reinicios con el router, yo he llevado al limite un asus y simplemente me tiraba la conexión y en ocasiones se quedaba congelado varios minutos, le acosnsejo que no le instale mas paquetes, ya que entre mas ancho de banda maneja el router consume mas cpu y el sqm también consume cpu, ese router es un dualcore, para poder tener un router potente que le pueda correr mas paquetes, como el adguard, el sqm, un vpn, un monitor o algo así, sin tener bajones de rendimiento, mínimo con un quad core, de los mas modernos y por ahí a 2 GHz, como le dije el router es un computador con sistema operativo y todo, que maneja redes, el hardware es muy importante, para su caso de uso no necesita mas paquetesinstalados dentro del router, porque lo estaría cargando de mas trabajo del que puede manejar fluidamente.
Yo hice pruebas y por eso lo estoy diciendo, mi router tiene corriendo adguard y cuando tenia claro notaba que se ponía lento y probé a dejarle solo un filtro y corrió mejor, probé activando 10 y se sentía super lento todo y en ocasiones ni para ingresar por ssh al router podía, así que deje quieto el tema del adguard con 7 filtros y como tengo adsl, pues no estreso mucho al router, pero en su caso se que le va andar molestando si le deja varios filtros, por lo tanto le digo que evite ese problema, si ya logro el A+ en bufferbloat deje quieto y disfrute, en el pc ublock origin, sponsor block, tamper moneky o grease monkey y algunos scripts, tiene para bloquear publicidad, o podria intentar con una raspberry pi con pihole, pero al router no le instale nada mas, yo aprendi bastante jugando con el router lo brickie como 3 veces, lo llene de paquetes, use la vpn, y cada vez que el router esta corriendo varios procesos se vuelve mas lento.
Listo, ahora a hacer pruebas de stream y juego a la vez, ver como se comporta, gracias por la ayuda.
 
Hola muchachos aprovechando que tengo un poco de tiempo libre les dejo aqui el procedimiento para que ustedes puedan compilar la imagen de OpenWrt desde sus maquinas las cual tiene las siguientes ventajas

  1. No depender del servidor de descarga oficial, ya que algunos commits que suben a la rama principal rompe a veces el procedimiento de construccion de la imagen y por ende no estan disponibles
  2. Pueden agregar los paquetes,servicios,opritmizaciones que ustedes deseen
  3. Pueden agregar parches que no estan en la rama principal y que contiene muchas mejoras ademas que no tienen que esperar a que algunos de los desarrolladores lo vayan agregando a la rama
  4. Optimizaciones en las herramientas de construccion que mejoran el rendimiento de los dispositivos (depende del objetivo (dispositivo)
  5. Ultimo bump del kernel de linux al dia. Entre muchas funcionalidades.

Para poder compilar la imagen necesitamos un entorno Linux puede ser cualquiera las imagenes que voy a mostrar van a ser sobre Debian que es el que utilizo.

Para empezar vamos a abrir el terminal

1638732802507.png


y ahora vamos a ejecutar lo siguiente para poder instalar los paquetes necesarios para compilar como necesitamos permisos de administrador escribimos la contrasena si hay

sudo apt update

y una vez hecho ejecutamos lo siguiente para instalar todos los paquetes necesarios (depende de cada distribucion Linux )

sudo apt install build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools python3-dev rsync subversion \
swig time xsltproc zlib1g-dev

Escribimos la contrasena y procedera con la instalacion de los paquetes

1638734723927.png


una vez termina vamos a ubicarnos en la ruta que ustedes deseen para clonar el repositorio del codigo fuente de OpenWrt una vez ubicamos escribimos lo siguiente

git clone https://git.openwrt.org/openwrt/openwrt.git -b master x86

Donde...
  • git es el comando y clone es la opcion
  • https://git.openwrt.org/openwrt/openwrt.git es donde esta alojado el codigo
  • -b es la opcion para escoger una sola rama en este caso es master que es la rama de desarrollo y es donde llegan todos los nuevos parches y funcionalidades, pero hay otra ramas que son de las versiones salientes y estables de OpenWrt, esta es la opcion mas recomandada para aquellos que inician en la construccion de sus propias imagenes puede ser por ejermplo, master, openwrt-21.02 openwrt-19.07, openwrt-18.06 y lede-17.01.
  • x86 es el nombre de la carpeta donde va a quedar alojado el entorno que clonamos
1638735213880.png


Una vez terminado de clonar, vamos a ir a la carpeta donde lo descargamos para ello solamente escribimos lo siguiente

cd <nombre de la carpeta>

1638735290040.png


Ahora procedemos a actualizar todas las fuentes donde OpenWrt almacena lo siguiente

Paquetes
Entorno grafico LuCi
Telephony
Routing

Para ello escribimos lo siguiente

./scripts/feeds update -a

Donde..

-a, aplica para todos los paquetes que se encuentran en su codigo fuente


1638735425550.png


1638735648988.png


Esperamos a que acutalice y cuando ya tenga todos las fuentes actualizadas procedemos a instalarlas en nuestra carpeta para poder escoger los paquetes que vamos a agregar a nuestra imagen para ellos ejecutamos lo siguiente

./scripts/feeds install -a -f

Donde...

-a, aplica para instalar todos los paquetes que se encuentran actualizados por el anterior comando
-f , es para forzar que instalen todos los paquetes, esta caracteristica es opcional y hay que proceeder con cuidado

Ahora que todos los paquetes y fuentes fueron instaladas ahora vamos a ir al menu de configuracion donde vamos a poder hacer lo siguiente

Agregar los paquetes que deseamos
Agregar nuevas caracteristicas para los objetivos y asi mejorar su tiempo de ejecucion como su espacio

para ello escribimos lo siguiente

make menuconfig

aparecera el siguiente entorno

1638735968052.png


Donde...

Target System va a ser la arquitectura en la cual se basa el dispositivo para crear su imagen
Subtarget, cuando existen categorias o mejoras en la arquitectura
Target Profile, es el nombre comercial del dispositvo

Aqui voy a realizarlo sobre un PC en la cual su arquitectura va a ser x86

1638736119959.png

1638736137678.png


1638736150346.png


una vez escogan la arquitectura y dispositivo ahora para seleccionar las opciones solamente tecleamos la letra Y para agregar, N para remover, y M para agregar un modulo, en la siguiente opcion presionamos la tecla Y, y en la parte izquierda aparecera un * que signifca que el paquete o la opcion ha sido agregada o seleccionada para compilarse

1638736277314.png


En este apartado vamos a buscar y seleccionar los siguiente y damos enter

1638736390521.png


1638736429991.png



Aqui vamos a agregar la siguiente optimizacion para que el toolchain la agregue a la imagen, aqui difiere dependiendo de la arquitectura y pueden aparecer mas lineas.

Cambiamos -0s por -03, damos enter y realizamos el cambio

1638736559399.png


ahora vamos a LuCi y agremamos su interfaz, esta opcion es obligatoria o solamente podemos ingresar por CLI

1638736652616.png


1638736660726.png

1638736676078.png


ahora con ESC regresamos y vamos a las aplicaciones que necesitemos y que tenga su interface grafica (LuCi), no todas las aplicaciones la tienen.

Aqui voy a hacer un ejemplo nada mas

1638736762359.png

1638736786890.png


Una vez seleccionados todos los paquetes procedemos a regresar al menu incial y vamos a teclear 2 veces ESC para guardas cambios y proceder con la compilacion

1638736885472.png


Continua en otro post
 
2 veces ESC

1638736929984.png


Y seleccionamos yes

1638736957688.png


Ahi nos dice que se realizaron los cambios y quedo guardando en el archivo .config donde contiene toda la configuracion para crear la imagen

Ya con todos estos pasos podemos ahora si construir la imagen personalizada de OpenWrt y para ello ejecutamos el siguiente comando

make download world -j4 V=s

Donde...

download world es una opcion de make para descargar todos los elementos que se necesitan para compilar la imagen, opcion recomendada

-j4, comando de make donde -j es para trabajar con los nucleos del procesador en donde mas nucleos se enuncien (ej. 4)para compilar mas rapido sera para terminar, opcion recomendada

V=s, se utiliza para que compile y vaya mostrando todos los procesos (comandos) uno por uno, esta opcion se utliza para saber por ejemplo si falla la compilacion, en que momento anuncia el error, este comando es opcional

El tiempo de compilacion va dependiendo del Hardware que poseamos, entonces los tiempos pueden variar

Cuando termine de compilar la ruta en donde se encuentra la imagen es la siguiente

1638752365744.png


/nombre de la carpeta en donde se compilo/bin/target/nombre de la arquitectura/subtarget/

Esto es todo, despues agregare lo siguiente
  • Agregar toolchain y escoger la version para compilar
  • Aplicar los parches mediante patch para obtener las nuevas caracteristicas que aun no han sido fusionadas
  • Agregar paquetes de terceros'
  • Otras opciones de compilaciones y optimizaciones.
 
Última edición:
LuCi-App-Wireguard, protocolo de VPN eficiente y de bajo consumo de recursos

Hola muchachos, hoy actualizo este hilo para traerles la configuracion para poder conectar el cliente (router) a un servidor (VPN) y asi todos los dispositivos que se conecten a la red se redireccionaran a la VPN sin importar la cantidad de dipositivos y sin necesidad de aplicaciones

Los requisitos de Hardware ya son lo quie he mencionado

Para empezar vamos a conectarnos por SSH e iniciar sesion

Una vez hecho ejecutamos el siguiente comando


okpg update & opkg install luci-app-wireguard

Ya instalado procedemos a iniciar sesion por medio del navegador y seleccionamos Network ---- Interfaces

1640711556305.png


Ahora seleecionamos ADD NEW INTERFACE y seleccionamos el protocolo Wireguard VPN y agregamos el nombre que deseamos para la VPN en este caso vamos con la VPN Lanera Keepsolid :D

1640711659046.png


Ahora clic a Create Interface

Abrimos otra pestaña y vamos a ir a la pagina de administracion de su VPN para generar los datos para que se conecte por el protocolo Wireguard, importante decir que no todas las VPN aunque ya son pocas no tienen soporte o estan en progreso de tenerlo para utilizar Wireguard, en Keepsolid Solamente seleccionamos un nombre, buscamos a que servidor conectarnos y seleccionar el protocolo Wireguard una vez hecho dar clic en generate y apareceran los datos que vamos a utlizar en el router

1640711892466.png


1640711950372.png


Ahora simplemente es copiar los datos en cada uno de los campos en LuCi

1640712074052.png


Para agregar el Peer simplemente vamos a la pestaña peer y agragemos una

1640712205043.png


1640712276669.png


IMPORTANTE

Esta opcion es fundamental si queremos que la VPN sea la puerta de enlace predeterminada del router es decir que todo el trafico que pase por el router a los dispositivos conectados sea reedirgidos a la VPN, si es asi damos check a esta opcion

1640712402737.png


Si no lo deseamos entoces no se le otorga el check pero la VPN quedara sin enrutarse debidamente por el router, por lo que necesitamos el siguiente paquete para solucionar este problema, pero esta parte se explicacara en otro post

Asumiendo que dio check para que toda la VPN sea la puerta de enlace predeterminada, guardamos y aplicamos cambios

Ahora vamos otra vez a la interface de la VPN y seleccionamos la pestaña Firewall Settings, y asociamos la VPN a la WAN para que reedireccione, se puede crear una regla aparte para la VPN pero no lo recominendo si se va a utilizar la VPN para un uso basico.

1640712742080.png


Guardamos cambios y reiniciamos el router una vez hechos vamos a interface y revisamos que la interface VPN este recibiendo y entregando trafico

1640713571593.png


Eso es todo
 
Última edición:
VPN Policy-Based Routing, Reedireccionar trafico mediante politicas y/o reglas

1640715985534.png


Para aquellos que estan configurando su VPN en su router pero no quieren que la VPN se encargue del trafico predeterminado por ser la puerta de enlace, y poder asi seleccionar que dispositivos se conecten a la VPN y que dispositivos no, esto es muy util si quiere por ejemplo dejar Smart TVs o Box's conectadas a la VPN y asi poder disfrutar del contenido no disponible geograficamente y dejar los otros dispositivos (Celulares , Consolas, etc.) conectadas a su proveedor de internet.

Requisitos

Los mismos mencionados en anteriores posts

Pasos

Primero nos conectamos por SSH o por WinScp Y ejecutamos el siguiente comando

opkg update & opkg upgrade dnsmasq & opkg install luci-app-vpn-policy-routing

ahora vamos a la siguiente ruta en el router

/etc/config/vpn-policy-routing

Borramos toda la configuracion y agregamos la siguiente


Código:
config policy
    option name 'Fil'
    option interface 'VPN'
    option src_addr '192.168.1.10'

config vpn-policy-routing 'config'
    option verbosity '2'
    option src_ipset '0'
    option dest_ipset '0'
    option resolver_ipset 'dnsmasq.ipset'
    list ignored_interface 'wgserver'
    option boot_timeout '30'
    option iptables_rule_option 'append'
    option procd_reload_delay '1'
    option webui_sorting '1'
    list webui_supported_protocol 'tcp'
    list webui_supported_protocol 'udp'
    list webui_supported_protocol 'tcp udp'
    list webui_supported_protocol 'icmp'
    list webui_supported_protocol 'all'
    option webui_enable_column '1'
    option webui_protocol_column '1'
    option webui_chain_column '1'
    option webui_show_ignore_target '1'
    option strict_enforcement '1'
    option enabled '1'
    option ipv6_enabled '0'

config include
    option path '/etc/vpn-policy-routing.netflix.user'
    option enabled '0'

config include
    option path '/etc/vpn-policy-routing.aws.user'
    option enabled '0'

Donde

config policy
option name 'Fil' --- Es el nombre de la regla
option interface 'VPN' --- la interface donde quiere que se reedireccione la regla
option src_addr '192.168.1.10' --- la direccion ip del dispositivo en el cual se aplica la regla, se puede utilizar Direcciones MAC, rango de IP, dominios

Guardamos cambios y aplicamos, reiniciamos

Para agregar mas reglas pueden hacerlo ahora desde LuCi solamente agregan la ip destino o puerto si la hay, la ip local, la interface donde se va a redireccionar

1640715903591.png


Eso es todo
 
Última edición:
  • Me gusta
Reacciones: GosTphELT
Lanero alguna otra alternativa o toca el paquete de adblock ? pero ese no me parece tan copleto como Adguard, porque las raspberry pi estan por las nuves porue siempre habia querido una para molestar con home assitant y pihole.
Si, esta simple-adblock una buena alternativa por su simpleza y poco consumo de recursos ademas de poder agregar hosts solamente copiando su url.
 
Reemplazar SQM-Scripts por QoSify.

Me gustaria ver opiniones de personas que prueben el nuevo paquete y que muestren por pantallazos los resultados

DOCSIS
Fibra Optica

Gracias

Aqui un pantallazo donde se capturan los paquetes y muestran la respectiva clasificacion por DSCP gracias a QoSify

1640731201893.png
 
Última edición:
Actualizada la configuracion de Qosify

  • Se cambio de Diffserv8 a Diffserv4 porque hay unas capas que se pierden.
  • Se agrego wash a egress para que los paquetes si llegan o se envian con Marcas DSCP se borren y adopten las de la configuracion, esto solo aplica para egress
  • Agregados varios servicios conocidos mediante dnsmasq e ipset para poder marcalos y asi tener una jerarquia a la hora de enviar y recibir paquetes lo que ayuda a CAKE a distribuir merjor el ancho de banda con los paquetes ya priorizados
  • Se agrega mpu 64 overhead xx (depende de su tipo de conexion) a ingress_options como a egress_options ya que si no se agregan se obitene mediante la configuracion qdisc predeterminada ( que es 84 )
 

Los últimos temas