Tutorial Modem WAN USB ADSL Marconi para linux
Introducción:
La creación de este proyecto se debe a las continuas modificaciones que sufre la conexión a internet, ya que las empresas prestadoras de servicios de internet (ISP) están en constante búsqueda del mejoramiento del servicio. Algunos de estos cambios incluyen el cambio de protocolo de comunicaciones (RFC de modo de conexión), ya que muchas de estas empresas ofrecen soporte total sobre windows, no hay problema en el software que admnistra nuestros dispositivos, pues la misma empresa lo actualiza, pero en el caso de linux nos podemos levantar un día sin tener conexión y estar totalmente aislados del mundo. En este blog reúno mi experiencia en estos casos y lo pongo a disposición del público, así como la posibilidad de interactuar conmigo para resolver cualquier inquietud respecto del desarorllo de este tutorial.
Requerimientos:
Conocimientos mínimos de linux, referentes a instalación y configuración de paquetes de software, compilación del kernel y manejo de la consola de linux.
Requerimientos de Software:
Vamos a necesitar los paquetes de eciadsl, rp-pppoe y los binarios de sincronización de acuerdo al modelo del hardware. Los paquetes conforme los vamos necesitando indicaré de donde se los puede descargar.
Objetivo:
Levantar una conexión ADSL con un ISP, utilizando un Modem WAN USB y nuestra máquina Linux para hacerlo.
Desarrollo Propuesto:
1. Lograr sincronizar el modem USB con la máquina Linux.
2. Levantar la interfaz tap0 (emula a una interfaz eth0 para el dispositivo USB)
3. Levantar la conexión ppp0.
Desarrollo
1. El primer paso consiste en sincronizar el Modem USB con la máquina.
Esto es el paso más complicado porque requiere que el hardware tenga soporte de los drivers para realizar la comunicación.
Para esto descargamos el driver de eciadsl del URL: flashtux.org, en el desarrollo de este proyecto se encuenrta en la versión 0.11. Adicionalmente, debemos descargar los binarios de sincronización los cuales se encuentran en la URL: eciadsl-synch_bin
Eciadsl es un driver para hardware ADSL que pretende convertirse en modulo para el kernel de linux. Para poder compilarlo debemos haber instalado las fuentes del núcleo (kernel) pues este utiliza las fuentes del kernel y requiere de su adecuada configuración de los módulos para poder enlazar los llamados de funciones al hardware.
La configuración requerida para el kernel es la siguiente:
*tomado del FAQ de eciadsl.
Teniendo la anterior configuración del kernel compilada, instalada y después de haber reiniciado compilamos e instalamos el driver eciadsl.
Al estar este instalado, este crea la carpeta "/etc/eciadsl" donde se debe ubicar los archivos de configuración y donde se deben colocar los archivos .bin de sincroninzación que sirven para conectarse con el hardware. Entonces el archivo "eciadsl-synch_bin.tar.bz2", lo descomprimimos en la carpeta "/etc/eciadsl" para poder utilizar los archivos binarios con el software de configuración. Ahota lo configuramos con el comando:
que requiiere de los paquetes de tcl y tk para generar una interfaz gráfica de fácil acceso a la configuración.

En esta pantalla configuramos el nombre de la cuenta que nos proporciana nuestro proveedor, la conraseña de la cuenta, los DNS que buscará, el tipo de dispositivo, el chipset del hardware, los identificadores de vendedor (VID) y producto (PID), el archivo de sincronización a utilizar y el modo en el que el pppd realizará la conexión.
En mi caso, los DNS no se encuentran listado, entonces utilizando la opción "Other" y los introduzco manualmente. Mi modem no se encuentra en la lista entonces utilizo la opción "Other".
El CHIPSET de mi hardware es el GS7470 (chips de Globespan). El VID y PID los obtengo del comando :
que me devuleve algo así:
El primer número es el vendedor y el segundo el producto.
Los valores de "ALT Synch" y "ALT pppoeci" oscilan entre 1 y 5 en mi caso 5 y 1 respectivamente.
El archivo de sincronización debe encontrarse en la carpeta "/etc/eciadsl". A mi me funcionan el synch53.bin y synch4.bin, pero dependiendo del hardware eso puede cambiar. Finalmente el modo de conexión, hasta hace unas semanas utilizaba "VCM_RFC2364" si ninguan problema y no requeria de rp-ppp, pero mi proveedor decidío no dar más soporte sobre ese modo de conexión. Si tu proveedor te dá soporte sobre éste (VCM_RFC2364), simplemente debes encontrar el archivo de sincronización que funcione sobre tu hardware y listo. Ahora, mi ISP ofrece soporte sobre el modo "RFC2516 PPPOE", el cual se puede relizar mediante el soporte de eciadsl ofrece con el modo "RFC1483_BRIDGED" que también es PPPOE (ppp on Ethernet), y para el modem USB hay que emular un dispositivo de bloques mediante ethercap y relizar la conexión.
Como ya dije, en mi caso utilizo el modo "VCM_RFC_1483_BRIDGED_ETH" luego oprimes el boton "Create config !" el cual crea y/o modifica los archivos:
Hasta aquí la configuración básica. Es hora de probar la sincronización. Lo mejor es probar mediante el comando:
pues agrega información adicional que ayuda a encontrar errores.
Si la configuración no esta bien lo más probable es que salgan errores de sincronización, para lo cual se debe ir al archivo "/etc/eciadsl/eciadsl.conf" y modificar la entrada "SYNCH" para cambiar la ubicación del archivo de sincronización, más ayuda la puedes encontrar la documentación de ECIADSL y en el FAQ de ellos.
2. Levantar la interfaz tap0 (emula uan interfaz eth0 para el dispositivo USB)
El segundo paso es levantar la interfaz de tap0. Para ello se requiere tener soporte para ethercap y TUN/TAP en el núcleo, así:
* Tomado kernel de linux
Esto debe estar compilado e instalado en el kernel linux.
Luego se debe crear y configurar el dispositivo tun/tap, así:
y agregar al archivo /etc/modules.conf o /etc/modprobe (según la distribución), lo siguiente:
Después de haber creado y configurado el dispositivo tap0 vamos al paso final:
3. Levantar la conexión ppp0.
Como dije antes si tu ISP permite utilizar el modo "VCM_RFC2364" no necesitas hacer esto. Para la que no lo soportan y están utilizando un modo derivado de PPPOE, entonces la conexión no la pueden hacer directamente por eciadsl-start mediante el binario eciadsl-pppeeci y necesitan de rp-pppp.
El paquete rp-ppp lo puedes descargar del URL: roaringpenguin.com.
El paquete se descarga e instala siquiendo los pasos de su documentación. Luego de estar instalado se digita el comando:
Este comando pregunta mediante la consola el conjunto de parámetros que servirán para configurar la conexión ppp. Estas preguntas incluyen, el dispositivo por que se realizará la conexión (tap0), nombre de la cuenta, password de la cuenta, DNS, si es conexión por demanda (no), si es la ruta por defecto (si), los intervalos de tiempo (LCP) para la conexión con el servidor, las banderas de configuración PPPD (ninguna, por ahora), entre otras.
Después de las preguntas se creará el archivo /etc/ppp/pppoe.conf que servirá de configuración para levantar la interfaz ppp0 mediante el dispositivo tap0.
El último cambio que debemos realizar antes de la conexión es cambiar el archivo "/etc/ppp/peers/adsl", la entrada "pty" la cual debe ser seguida por el commando "eciadsl-pppeci junto con los parámetros de ejecución de la conexión pero como no vamos a utilizar el binario de ecaidsl ya que necesitamos utilizar el dipositivo "tap0" entonces cambiamos esa linea de entrada por:
Y ahora si estamos listos para la conexión. Con todo listo vamos a probar la conexión, primero digitamos
y debemos obtener esta salida:
luego digitamos:
(el cual ya se debío ejecutar por el último cambio que hicimos en "/etc/ppp/peers/adsl", la linea pty ".... ", la volvemos a ejecutar para ver si nos dejo el dispositivo tap0 listo), y la salida debería se esta:
Comprobamos que todo marche bien con el comando:
que debería tener una entrada como esta:
finalmente, corremos el comando:
el cual parte del archivo de configuración "/etc/ppp/pppoe.conf" para levantar la interfaz ppp0 asociada al dispositivo de especial tap0, y la salida deberia ser:
Comprobamos que todo haya ido bien mediante el comando:
la salida deberia ser:
Listo !!! Felicitaciones la conexión esta lista para ser utilizada.
Queda configurar las rutas (comando route) y el firewall (iptables)
La creación de este proyecto se debe a las continuas modificaciones que sufre la conexión a internet, ya que las empresas prestadoras de servicios de internet (ISP) están en constante búsqueda del mejoramiento del servicio. Algunos de estos cambios incluyen el cambio de protocolo de comunicaciones (RFC de modo de conexión), ya que muchas de estas empresas ofrecen soporte total sobre windows, no hay problema en el software que admnistra nuestros dispositivos, pues la misma empresa lo actualiza, pero en el caso de linux nos podemos levantar un día sin tener conexión y estar totalmente aislados del mundo. En este blog reúno mi experiencia en estos casos y lo pongo a disposición del público, así como la posibilidad de interactuar conmigo para resolver cualquier inquietud respecto del desarorllo de este tutorial.
Requerimientos:
Conocimientos mínimos de linux, referentes a instalación y configuración de paquetes de software, compilación del kernel y manejo de la consola de linux.
Requerimientos de Software:
Vamos a necesitar los paquetes de eciadsl, rp-pppoe y los binarios de sincronización de acuerdo al modelo del hardware. Los paquetes conforme los vamos necesitando indicaré de donde se los puede descargar.
Objetivo:
Levantar una conexión ADSL con un ISP, utilizando un Modem WAN USB y nuestra máquina Linux para hacerlo.
Desarrollo Propuesto:
1. Lograr sincronizar el modem USB con la máquina Linux.
2. Levantar la interfaz tap0 (emula a una interfaz eth0 para el dispositivo USB)
3. Levantar la conexión ppp0.
Desarrollo
1. El primer paso consiste en sincronizar el Modem USB con la máquina.
Esto es el paso más complicado porque requiere que el hardware tenga soporte de los drivers para realizar la comunicación.
Para esto descargamos el driver de eciadsl del URL: flashtux.org, en el desarrollo de este proyecto se encuenrta en la versión 0.11. Adicionalmente, debemos descargar los binarios de sincronización los cuales se encuentran en la URL: eciadsl-synch_bin
Eciadsl es un driver para hardware ADSL que pretende convertirse en modulo para el kernel de linux. Para poder compilarlo debemos haber instalado las fuentes del núcleo (kernel) pues este utiliza las fuentes del kernel y requiere de su adecuada configuración de los módulos para poder enlazar los llamados de funciones al hardware.
La configuración requerida para el kernel es la siguiente:
USB support -->Support for USB
[ ] USB verbose debug messages
-- Miscellaneous USB options
[*] Preliminary USB device filesystem
[ ] Enforce USB bandwidth allocation (EXPERIMENTAL)
[ ] Long timeout for slow-responding devices (some MGE Ellipse UPSes)
-- USB Host Controller Drivers
< > EHCI HCD (USB 2.0) support (EXPERIMENTAL)UHCI (Intel PIIX4, VIA, ...) support UHCI Alternate Driver (JE) support OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
..
-- USB Multimedia devices
..
< > DABUSB driver
..
Character devices -->
..
[*] Non-standard serial port supportHDLC line discipline support
..
Network device support -->
..PPP (point-to-point protocol) support
[ ] PPP multilink support (EXPERIMENTAL)
[ ] PPP filteringPPP support for async serial ports PPP support for sync tty ports PPP Deflate compression PPP BSD-Compress compression
< > PPP over Ethernet (EXPERIMENTAL)
< > PPP over ATM (EXPERIMENTAL)
*tomado del FAQ de eciadsl.
Teniendo la anterior configuración del kernel compilada, instalada y después de haber reiniciado compilamos e instalamos el driver eciadsl.
Al estar este instalado, este crea la carpeta "/etc/eciadsl" donde se debe ubicar los archivos de configuración y donde se deben colocar los archivos .bin de sincroninzación que sirven para conectarse con el hardware. Entonces el archivo "eciadsl-synch_bin.tar.bz2", lo descomprimimos en la carpeta "/etc/eciadsl" para poder utilizar los archivos binarios con el software de configuración. Ahota lo configuramos con el comando:
#>eciadsl-config-tk
que requiiere de los paquetes de tcl y tk para generar una interfaz gráfica de fácil acceso a la configuración.

En esta pantalla configuramos el nombre de la cuenta que nos proporciana nuestro proveedor, la conraseña de la cuenta, los DNS que buscará, el tipo de dispositivo, el chipset del hardware, los identificadores de vendedor (VID) y producto (PID), el archivo de sincronización a utilizar y el modo en el que el pppd realizará la conexión.
En mi caso, los DNS no se encuentran listado, entonces utilizando la opción "Other" y los introduzco manualmente. Mi modem no se encuentra en la lista entonces utilizo la opción "Other".
El CHIPSET de mi hardware es el GS7470 (chips de Globespan). El VID y PID los obtengo del comando :
#>lsusb | grep Bus
que me devuleve algo así:
...
Bus 001 Device 002: ID 0e60:0600
...
El primer número es el vendedor y el segundo el producto.
Los valores de "ALT Synch" y "ALT pppoeci" oscilan entre 1 y 5 en mi caso 5 y 1 respectivamente.
El archivo de sincronización debe encontrarse en la carpeta "/etc/eciadsl". A mi me funcionan el synch53.bin y synch4.bin, pero dependiendo del hardware eso puede cambiar. Finalmente el modo de conexión, hasta hace unas semanas utilizaba "VCM_RFC2364" si ninguan problema y no requeria de rp-ppp, pero mi proveedor decidío no dar más soporte sobre ese modo de conexión. Si tu proveedor te dá soporte sobre éste (VCM_RFC2364), simplemente debes encontrar el archivo de sincronización que funcione sobre tu hardware y listo. Ahora, mi ISP ofrece soporte sobre el modo "RFC2516 PPPOE", el cual se puede relizar mediante el soporte de eciadsl ofrece con el modo "RFC1483_BRIDGED" que también es PPPOE (ppp on Ethernet), y para el modem USB hay que emular un dispositivo de bloques mediante ethercap y relizar la conexión.
Como ya dije, en mi caso utilizo el modo "VCM_RFC_1483_BRIDGED_ETH" luego oprimes el boton "Create config !" el cual crea y/o modifica los archivos:
/etc/eciads/eciadsl.conf
/etc/ppp/chap-secrets
/etc/ppp/pap-secrets
/etc/ppp/peers/adsl
Hasta aquí la configuración básica. Es hora de probar la sincronización. Lo mejor es probar mediante el comando:
#>eciadsl-doctor
pues agrega información adicional que ayuda a encontrar errores.
Si la configuración no esta bien lo más probable es que salgan errores de sincronización, para lo cual se debe ir al archivo "/etc/eciadsl/eciadsl.conf" y modificar la entrada "SYNCH" para cambiar la ubicación del archivo de sincronización, más ayuda la puedes encontrar la documentación de ECIADSL y en el FAQ de ellos.
2. Levantar la interfaz tap0 (emula uan interfaz eth0 para el dispositivo USB)
El segundo paso es levantar la interfaz de tap0. Para ello se requiere tener soporte para ethercap y TUN/TAP en el núcleo, así:
...
Network device support --->
..
[*] Network device support
..
Universal TUN/TAP device driver support
Ethercap (Obsolete)
..PPP (point-to-point protocol) support
...
* Tomado kernel de linux
Esto debe estar compilado e instalado en el kernel linux.
Luego se debe crear y configurar el dispositivo tun/tap, así:
#>mkdir /dev/net
#>mknod /dev/net/tun0 c 10 200
#>ln -s /dev/net/tun0 /dev/net/tun
#>mknod /dev/tap0 c 36 16
#>ln -s /dev/tap0 /dev/tap
y agregar al archivo /etc/modules.conf o /etc/modprobe (según la distribución), lo siguiente:
# CONFIGURACION TUNTAP
alias char-major-10-200 tun
alias tap0 ethertap
alias char-major-36 netlink_dev
Después de haber creado y configurado el dispositivo tap0 vamos al paso final:
3. Levantar la conexión ppp0.
Como dije antes si tu ISP permite utilizar el modo "VCM_RFC2364" no necesitas hacer esto. Para la que no lo soportan y están utilizando un modo derivado de PPPOE, entonces la conexión no la pueden hacer directamente por eciadsl-start mediante el binario eciadsl-pppeeci y necesitan de rp-pppp.
El paquete rp-ppp lo puedes descargar del URL: roaringpenguin.com.
El paquete se descarga e instala siquiendo los pasos de su documentación. Luego de estar instalado se digita el comando:
#>pppoe-setup
Este comando pregunta mediante la consola el conjunto de parámetros que servirán para configurar la conexión ppp. Estas preguntas incluyen, el dispositivo por que se realizará la conexión (tap0), nombre de la cuenta, password de la cuenta, DNS, si es conexión por demanda (no), si es la ruta por defecto (si), los intervalos de tiempo (LCP) para la conexión con el servidor, las banderas de configuración PPPD (ninguna, por ahora), entre otras.
Después de las preguntas se creará el archivo /etc/ppp/pppoe.conf que servirá de configuración para levantar la interfaz ppp0 mediante el dispositivo tap0.
El último cambio que debemos realizar antes de la conexión es cambiar el archivo "/etc/ppp/peers/adsl", la entrada "pty" la cual debe ser seguida por el commando "eciadsl-pppeci junto con los parámetros de ejecución de la conexión pero como no vamos a utilizar el binario de ecaidsl ya que necesitamos utilizar el dipositivo "tap0" entonces cambiamos esa linea de entrada por:
pty "pppoe -I tap0 -A"
Y ahora si estamos listos para la conexión. Con todo listo vamos a probar la conexión, primero digitamos
#>eciadsl-start
y debemos obtener esta salida:
Starting adsl:
[EciAdsl 1/5] Setting up USB support...
Preliminary USB device filesystem is OK
[EciAdsl 2/5] Uploading firmware...
Process skipped .. no more needed
firmware loaded successfully
[EciAdsl 3/5] Synchronization...
OK eciadsl-synch: success
Synchronization successful
[EciAdsl 4/5] Connecting to provider...
Connection successful
[EciAdsl 5/5] Setting up route table...
luego digitamos:
#>pppoe -I tap0 -A
(el cual ya se debío ejecutar por el último cambio que hicimos en "/etc/ppp/peers/adsl", la linea pty ".... ", la volvemos a ejecutar para ver si nos dejo el dispositivo tap0 listo), y la salida debería se esta:
Access-Concentrator: BOCUJU144001
Got a cookie: 76 6a ec ed ef b0 2b 59 83 cf fe a4 36 40 27 00
AC-Ethernet-Address: XX:XX:XX:XX:XX:XX
Comprobamos que todo marche bien con el comando:
#>ifconfig
que debería tener una entrada como esta:
...
tap0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:60 (60.0 b) TX bytes:24 (24.0 b)
...
finalmente, corremos el comando:
#>pppoe-start
el cual parte del archivo de configuración "/etc/ppp/pppoe.conf" para levantar la interfaz ppp0 asociada al dispositivo de especial tap0, y la salida deberia ser:
........ Connected!
Comprobamos que todo haya ido bien mediante el comando:
#>ifconfig
la salida deberia ser:
...
ppp0 Link encap:Point-to-Point Protocol
inet addr:XXX.XXX.XXX.XXX P-t-P:XXX.XXX.XXX.XXX Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:305499 errors:305995 dropped:0 overruns:0 frame:0
TX packets:324762 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:142491069 (135.8 Mb) TX bytes:57204287 (54.5 Mb)
tap0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:305998 errors:0 dropped:0 overruns:0 frame:0
TX packets:325267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149242101 (142.3 Mb) TX bytes:64364304 (61.3 Mb)
...
Listo !!! Felicitaciones la conexión esta lista para ser utilizada.
Queda configurar las rutas (comando route) y el firewall (iptables)
0 Comments:
Publicar un comentario
<< Home