?>/script>'; } ?> [Tutorial] Cómo configurar openwrt desde Putty (SSH) (HUAWEI HG556a) Widgets Magazine

Autor Tema: [Tutorial] Cómo configurar openwrt desde Putty (SSH) (HUAWEI HG556a)  (Leído 44464 veces)

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

emeryth

  • Visitante
Configurando openwrt desde Putty (SSH) (HUAWEI HG556a)

La idea es realizar una configuración homogénea y rápida entre compilaciones sin tener que entrar a luci, o a cualquier otro sistema grafico, las secuencias de comando que se presentaran se pueden copiar y pegar en putty directamente, varios segmentos a la vez sin necesidad de reiniciar.

Pongo mi configuración como ejemplo recomiendo que cambien algunos datos y los adapten a vuestra situación, la configuración se hará sobre un HUAWEI HG556a con un servidor samba y transmission (cliente torrents). Que usan un disco externo usb con partición ext3 y un pendrive de 1 Giga como memoria swap.

El putty lo puedes conseguir en este enlace, http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html, solo es un ejecutable, ponlo en el escritorio o donde puedas ejecutarlo con facilidad.  Con este programa podemos establecer comunicación con el router por medio de varios protocolos, los que nos importan son telnet y SSH, el programa nos da la opción de grabar atajos para el futuro.

Como debes de saber, después de cargar el firmware de openwrt en el router, debes conectarte por telnet para colocar la clave de root del firmware. En putty colocas la ip que trae por defecto el firmware (192.168.1.1) y lo colocas en la casilla “Host Name” presionamos open y se abrirá una ventana de comandos en donde ejecutamos este comando:

passwd
              Nos pedirá la clave 2 veces al terminar, colocamos

exit
               Se cerrara la ventana telnet

Ahora volvemos a abrir el putty y colocamos la ip del router otra vez, pero no elegimos telnet sino SSH, presionamos open. Nos pedirá un usuario colocaremos la palabra root y damos enter para poner la clave que guardamos en el telnet. Nos abrirá la ventana de comando.

En esta parte, configuraremos la red lan y la wifi, en mi caso la wifi funciona como un ap normalito, en la lan el dhcp lo controla otro router 192.168.7.1 que es mi puerta de entrada.

Código: [Seleccionar]
ssh root@192.168.1.1

uci set wireless.radio0.channel=11
uci set wireless.radio0.hwmode=11ng
uci set wireless.radio0.txpower=20
uci set wireless.radio0.country=ES
uci set wireless.radio0.disabled=0
uci set wireless.@wifi-iface[0].device=radio0
uci set wireless.@wifi-iface[0].network=lan
uci set wireless.@wifi-iface[0].mode=ap
uci set wireless.@wifi-iface[0].ssid=nombrewifi
uci set wireless.@wifi-iface[0].encryption=psk
uci set wireless.@wifi-iface[0].key="clave de la wifi"
uci set dhcp.lan.interface=lan
uci set dhcp.lan.ignore=1
uci set dhcp.wan.interface=wan
uci set dhcp.wan.ignore=1
#uci set network.lan.nat=1
uci set network.lan.gateway=192.168.7.1
uci set network.lan.ipaddr=192.168.7.2
uci set network.lan.netmask=255.255.255.0
uci set network.lan.dns="8.8.4.4 8.8.8.8"
uci commit
/etc/init.d/network restart

El último comando reinicia la red, no es necesario apagar el router, pero si es necesario cambiar los datos de red en la tarjeta de tu ordenador, ahora se conectará por la subred 192.168.7.x antes lo hacía por la 192.168.1.x que era necesaria para instalar el firmware openwrt.

•   Todos son comandos “uci” colocan directamente los datos de configuración en sus respectivos archivos de configuración de openwrt, ubicados casi todos en esta carpeta /etc/config.

•   Podemos copiar todos los comandos en grupos, y pegarlos en la ventana de comandos, se ejecutaran sin problemas.

•   El signo # delante de una línea significa que es solo un comentario, aunque coloquemos toda la línea en el interprete de comandos, no se ejecutará solo será un comentario. En algunas partes hay comandos comentados (#) porque en ese momento no son necesarios. Es posible que en el futuro sean necesarios. Por ejemplo, en la compilación que tengo ahora ya viene luci instalado, no necesito instalarlo, pero lo comento para que en el futuro si no tiene luci no tener que escribirlo otra vez.

•   El comando “uci commit” es muy importante, éste graba todo lo que se realiza con el uci, en sus respectivos archivos.

•   Algunos datos llevan doble comilla, porque tienen algún espacio, pero cerciórate que lo escribes bien, no es lo mismo “x” que ¨x¨.

edito: en la ventana del putty (SSH), la forma de copiar y pegar es algo diferente a la de windows, para copiar algo, solo tenemos que seleccionarlo con el ratón (click izquierdo sin soltarlo hasta el final). Para pegar solo es necesario hacer click derecho del ratón y quedara pegado donde este el cursor.

Ahora volvemos a entrar a SSh por putty pero esta vez por el nuevo ip del router, en este caso 192.167.7.2, colocamos la misma clave.

Código: [Seleccionar]
ssh root@192.168.7.2

opkg update
opkg install nano
opkg install usbutils
opkg install block-mount
opkg install transmission-daemon
opkg install transmission-web
opkg install transmission-remote
opkg install luci-app-transmission
opkg install luci-app-samba
opkg install samba36-server
opkg install luci-i18n-spanish
#opkg install kmod-fs-ext4
#opkg install luci-mod-admin-full
#opkg install luci-lib-fastindex
#opkg install luci-theme-base
#opkg install luci-theme-openwrt
#opkg install uhttpd
#/etc/init.d/uhttpd enable
#/etc/init.d/uhttpd reload


En esta parte, instalaremos los paquetes que necesitamos desde la ventana de comando, observe que hay muchos comandos comentados porque ya están instalados en la compilación de openwrt, pero si se ejecutan no pasa nada solo dará el mensaje error.

•   Nano: es un editor de texto un poco más amigable que vi. Se guarda con control+o y se sale con control+x.
•   Usbutils y block-mount sirven para gestionar el montaje de los discos usb
•   Los otros son para samba y transmission
•   Los comandos comentados son para instalar luci

Código: [Seleccionar]
echo "lanusers:x:1001" >> /etc/group
echo "usuario:*:1000:1001:usuario:/mnt:/bin/ash" >> /etc/passwd
chmod -R 777 /mnt
chown -R nobody /mnt
rm /etc/rc.local
---------------------------------------------------------------------------------------
cat > /etc/rc.local << EOF
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

chmod -R 777 /mnt
chown -R nobody /mnt

exit 0
EOF
--------------------------------------------------------------------------------

En los dos primeros comandos crean un grupo y un usuario nuevo. La calve se colocara más adelante. Serán los que utiliza samba para conectarse a la red. La palabra usuario debe cambiarse por la misma en todos los lugares en que se mencione en este manual, debe ser en minúscula, será el nombre usuario de samba.

Los siguientes comandos son para darle derecho de escritura y lectura al disco duro que se montará en la carpeta /mnt. Ojo esto también da derecho de ejecución, es necesario sí, queremos ejecutar un video desde el disco duro.

La parte que está entre líneas es importante que la copies y la pegues de un solo golpe!, Todo junto. Estos comandos crear un archivo que se ejecuta cada vez que inicia el router.

Código: [Seleccionar]
#uci set fstab.@mount[0].uuid=3923xxxd-bxxx-4xxx-8xx3-dxxxxxx8c825
#uci set fstab.@mount[0].label=nombredisco
uci set fstab.@mount[0].fstype=ext3
uci set fstab.@mount[0].options=rw,sync
uci set fstab.@mount[0].device=/dev/sdb1
uci set fstab.@mount[0].target=/mnt
uci set fstab.@mount[0].enabled=1
uci set fstab.@mount[0].enabled_fsck=1
uci set fstab.@swap[0].enabled=1
uci set fstab.@swap[0].device=/dev/sda1
uci commit


En esta parte se configura el fstab (tabla de montaje de discos), como se observa en los 2 últimos comandos, se hace referencia a la unidad swap, el pendrive debe ser formateado para tal función (como unidad swap linux) y en su momento enchufado al usb primero que el disco duro, porque el swap tiene el nombre /dev/sda1.

Todo lo demás hace referencia al disco duro, con respecto a los comandos comentados del principio son las diferentes maneras de identificar al disco. Hay tres, la que está por defecto, es la que le da nombre al dispositivo /dev/sdb1, pero pueden usarse la del nombre del label (es el nombre del disco) o el uuid del disco que es un nombre de etiquetas de identificación del disco. Pero solo se puede elegir uno a la vez. Si se escoge otro se debe comentar el de device.

Como saber el uuid de un disco?. Tecleamos blkid en las líneas de comando, con el disco conectado, te mostrará algo parecido a esto:

/dev/sdb1: UUID=3923xxxd-bxxx-4xxx-8xx3-dxxxxxx8c825 TYPE="ext3"
 
Te aconsejo que lo busques solo si tienes problemas con los discos.

Código: [Seleccionar]
uci set system.@system[0].hostname=openwrt
uci set system.@system[0].zonename=Europe/Madrid
uci set system.@system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3
uci set system.@system[0].conloglevel=8
uci set system.@system[0].Cronloglevel=8
uci set luci.main.lang=es
uci add firewall rule
uci set firewall.@rule[-1].name=torrents
uci set firewall.@rule[-1].src=lan
uci set firewall.@rule[-1].target=ACCEPT
uci set firewall.@rule[-1].proto=tcp
uci set firewall.@rule[-1].dest_port=1200-12100
uci add firewall rule
uci set firewall.@rule[-1].name=MDS
uci set firewall.@rule[-1].src=lan
uci set firewall.@rule[-1].target=ACCEPT
uci set firewall.@rule[-1].proto=tcp
uci set firewall.@rule[-1].dest_port=445
uci add firewall rule
uci set firewall.@rule[-1].name=netbiosss
uci set firewall.@rule[-1].src=lan
uci set firewall.@rule[-1].target=ACCEPT
uci set firewall.@rule[-1].proto=tcp
uci set firewall.@rule[-1].dest_port=139
uci add firewall rule
uci set firewall.@rule[-1].name=netbios
uci set firewall.@rule[-1].src=lan
uci set firewall.@rule[-1].target=ACCEPT
uci set firewall.@rule[-1].proto=udp
uci set firewall.@rule[-1].dest_port=137-138
uci set samba.@samba[0].homes=1
uci set samba.@samba[0].name=openwrt
uci set samba.@samba[0].description="router neutro"
uci add samba sambashare
uci set samba.@sambashare[0].name=usuario
uci set samba.@sambashare[0].path=/mnt
uci set samba.@sambashare[0].read_only=no
uci set samba.@sambashare[0].guest_ok=yes
uci set samba.@sambashare[0].writeable=yes
uci set samba.@sambashare[0].users=usuario
uci set samba.@sambashare[0].create_mask=0777
uci set samba.@sambashare[0].dir_mask=0777
uci commit



En esta parte, colocamos la configuración de la zona horaria, el idioma de luci, abrimos algunos puertos necesarios para transmission y para la conexión con el ordenador. Por último la configuración de samba.

Observe que usuario se repite en name y user, si se colocan diferentes se duplican las ramas de archivos en windows. Recuerde que este usuario es el definido anteriormente.

Código: [Seleccionar]
uci set transmission.@transmission[0].umask=18
uci set transmission.@transmission[0].rename_partial_files=false
uci set transmission.@transmission[0].bind_address_ipv6=::
uci set transmission.@transmission[0].enabled=1
uci set transmission.@transmission[0].config_dir=/transmission
uci set transmission.@transmission[0].download_dir=/mnt/descargas
uci set transmission.@transmission[0].download_queue_enabled=true
uci set transmission.@transmission[0].incomplete_dir=/mnt/incompletos
uci set transmission.@transmission[0].incomplete_dir_enabled=true
uci set transmission.@transmission[0].peer_limit_global=300
uci set transmission.@transmission[0].rpc_authentication_required=false
uci set transmission.@transmission[0].peer_limit_per_torrent=100
uci set transmission.@transmission[0].peer_port=12000
uci set transmission.@transmission[0].peer_port_random_high=12100
uci set transmission.@transmission[0].peer_port_random_low=12000
uci set transmission.@transmission[0].peer_port_random_on_start=true
uci set transmission.@transmission[0].ratio_limit=2.0
uci set transmission.@transmission[0].ratio_limit_enabled=true
uci set transmission.@transmission[0].rpc_enabled=true
#uci set transmission.@transmission[0].rpc_password=clave
#uci set transmission.@transmission[0].rpc_username=user
uci set transmission.@transmission[0].rpc_port=9091
uci set transmission.@transmission[0].rpc_whitelist=127.0.0.1,192.168.7.*
uci set transmission.@transmission[0].rpc_whitelist_enabled=true
uci set transmission.@transmission[0].speed_limit_down=500
uci set transmission.@transmission[0].speed_limit_down_enabled=true
uci set transmission.@transmission[0].speed_limit_up=200
uci set transmission.@transmission[0].speed_limit_up_enabled=true
uci set transmission.@transmission[0].alt_speed_enabled=false
uci set transmission.@transmission[0].bind_address_ipv4=0.0.0.0
uci set transmission.@transmission[0].dht_enabled=true
uci set transmission.@transmission[0].download_queue_size=4
uci set transmission.@transmission[0].encryption=1
uci set transmission.@transmission[0].idle_seeding_limit_enabled=false
uci set transmission.@transmission[0].lazy_bitfield_enabled=true
uci set transmission.@transmission[0].lpd_enabled=false
uci set transmission.@transmission[0].message_level=1
uci set transmission.@transmission[0].peer_socket_tos=default
uci set transmission.@transmission[0].pex_enabled=true
uci set transmission.@transmission[0].port_forwarding_enabled=true
uci set transmission.@transmission[0].preallocation=1
uci set transmission.@transmission[0].rpc_bind_address=0.0.0.0
uci set transmission.@transmission[0].rpc_url=/transmission/
uci set transmission.@transmission[0].scrape_paused_torrents_enabled=true
uci set transmission.@transmission[0].script_torrent_done_enabled=false
uci set transmission.@transmission[0].seed_queue_enabled=false
uci set transmission.@transmission[0].start_added_torrents=true
uci set transmission.@transmission[0].trash_original_torrent_files=false
uci set transmission.@transmission[0].upload_slots_per_torrent=14
uci set transmission.@transmission[0].utp_enabled=true
uci set transmission.@transmission[0].scrape_paused_torrents=true
uci set transmission.@transmission[0].watch_dir_enabled=false
uci set transmission.@transmission[0].watch_dir=''
uci set transmission.@transmission[0].rename_partial_files=false
uci set transmission.@transmission[0].blocklist_enabled=true
uci set transmission.@transmission[0].blocklist_url=http://list.iblocklist.com/?list=bt_level1
uci set transmission.@transmission[0].cache_size_mb=2
uci set transmission.@transmission[0].queue_stalled_enabled=true
uci set transmission.@transmission[0].queue_stalled_minutes=15
uci delete transmission.@transmission[0].alt_speed_down
uci delete transmission.@transmission[0].alt_speed_time_begin
uci delete transmission.@transmission[0].alt_speed_time_day
uci delete transmission.@transmission[0].alt_speed_time_enabled
uci delete transmission.@transmission[0].alt_speed_time_end
uci delete transmission.@transmission[0].alt_speed_up
uci delete transmission.@transmission[0].prefetch_enabled
uci delete transmission.@transmission[0].seed_queue_size
uci commit

Esta parte es muy compleja, configura las opciones de transmission y se deben indicar las que quieres. y retirar las que sobran, porque darán errores en la configuración al arrancar el servicio.

rpc_password y rpc_username son para el usuario y clave de conexión con un cliente a transmission. Están comentadas, porque pueden dar errores de conexión si no está bien configurada. Así que, hasta que no esté seguro, no actives esta opción.

Código: [Seleccionar]
cat >> /etc/firewall.user << EOF
iptables -I INPUT 1 -p tcp --tcp-flags ALL NONE -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> Null scan "
iptables -I INPUT 2 -p tcp --tcp-flags ALL NONE -m recent --name blacklist_60 --set -m comment --comment "Drop/Blacklist Null scan" -j DROP
iptables -I INPUT 3 -p tcp --tcp-flags ALL FIN,PSH,URG -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> XMAS scan "
iptables -I INPUT 4 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> XMAS-PSH scan "
iptables -I INPUT 5 -p tcp --tcp-flags ALL ALL -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> XMAS-ALL scan "
iptables -I INPUT 6 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m recent --name blacklist_60 --set  -m comment --comment "Drop/Blacklist Xmas/PSH scan" -j DROP
iptables -I INPUT 7 -p tcp --tcp-flags ALL FIN,PSH,URG -m recent --name blacklist_60 --set  -m comment --comment "Drop/Blacklist Xmas scan" -j DROP
iptables -I INPUT 8 -p tcp --tcp-flags ALL ALL -m recent --name blacklist_60 --set  -m comment --comment "Drop/Blacklist Xmas/All scan" -j DROP
iptables -I INPUT 9 -p tcp --tcp-flags ALL FIN -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall> FIN scan "
iptables -I INPUT 10 -p tcp --tcp-flags ALL FIN -m recent --name blacklist_60 --set  -m comment --comment "Drop/Blacklist FIN scan" -j DROP
iptables -I INPUT 11 -p tcp  -m multiport --dports 23,79 --tcp-flags ALL SYN -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "Firewall>SYN scan trap:"
iptables -I INPUT 12 -p tcp  -m multiport --dports 23,79 --tcp-flags ALL SYN -m recent --name blacklist_180 --set -j DROP
iptables -I INPUT 13 -p udp  -m limit --limit 6/h --limit-burst 1 -m length --length 0:28 -j LOG --log-prefix "Firewall>0 length udp "
iptables -I INPUT 14 -p udp -m length --length 0:28 -m comment --comment "Drop UDP packet with no content" -j DROP
EOF

Esta parte debe copiarse de un solo tirón y pegarse en la ventana de comandos para que rellene el archivo firewall, esto configura los iptables para accesos a servicios y detección de ataques o escaneos. Sacado de aqui Gracias ChimoC por tu trabajo.

Código: [Seleccionar]
/etc/init.d/fstab enable
/etc/init.d/fstab start
/etc/init.d/samba enable
/etc/init.d/samba start        
/etc/init.d/transmission start
/etc/init.d/transmission enable

passwd usuario
smbpasswd -a usuario
reboot

Los 6 primeros comandos son para arrancar los servicios. El comando passwd es para ponerle clave al usuario creado al principio, el smbpasswd es para darle el usuario y la clave a samba. Estos tres últimos comandos deberías copiarlos y pegarlos uno por uno, porque los dos primeros te piden que escribas la clave que tienes pensado poner al usuario, y la última reinicia el router por primera vez.

Técnicamente podrías copiar y pegar todas los comandos de un solo golpe pero es mejor no exagerar, no sé qué tamaño permite el portapapeles ni si hay alguna limitación en putty. Siempre cerciórate que no hay errores.

Espero que esto sea de ayuda, preguntar cualquier duda, intentaré aclararlas. Además este manual está abierto a correcciones y aportaciones, es decir a evolucionar.

« Última modificación: 04-01-2013, 13:47 (Viernes) por Noltari »

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: Manual de como configurar openwrt desde Putty (SSH) (HUAWEI HG556a)
« Respuesta #1 en: 27-09-2012, 18:32 (Jueves) »
 >:( >:( >:(
Esto se merece una chincheta, sin duda  ;)

Elnef

  • Visitante
Re: Manual de como configurar openwrt desde Putty (SSH) (HUAWEI HG556a)
« Respuesta #2 en: 28-09-2012, 16:44 (Viernes) »
Vaya currada de tutorial.  >:(

chicuno

  • Visitante
Re: Manual de como configurar openwrt desde Putty (SSH) (HUAWEI HG556a)
« Respuesta #3 en: 29-09-2012, 03:04 (Sábado) »
Excelente!!!!  >:(

Un saludo.

emeryth

  • Visitante
Re: Manual de como configurar openwrt desde Putty (SSH) (HUAWEI HG556a)
« Respuesta #4 en: 02-10-2012, 18:16 (Martes) »
 ;D   >:(

Gracias, espero que aclare muchas dudas, almeno que sirva de inspiración para resolver otros problemas.

Gracias por la chincheta.

saludos  ;D

Graveddiger

  • Visitante
Re: [Tutorial] Cómo configurar openwrt desde Putty (SSH) (HUAWEI HG556a)
« Respuesta #5 en: 12-03-2017, 16:22 (Domingo) »
Hola tengo un problema y creo que me puede ayudar tu tutorial. Tengo un repetidor TP-LINK 730re v2 y no funciona Luci. Tiene un solo puerto osea que si conecto al router a internet no puedo acceder a el via telenet para descargar Luci. Pensaba en configurar la antena Wifi para poder acceder al mismo por Wifi y conectar a internet vía LAN para poderlo descargar. Usando la primera parte De los comandos que vos describís podré hacer eso!