How-to ProAp sobre Slackware
| Author: | Pablo Osés (BucanerO) |
|---|---|
| url: | opablo@gmail.com |
Extras: Router NAT, Bridge, Proxy, DDNS's, Asterisk y mucho más...
Contents
Idea del proyecto
Tomar una PC de u$s 200 con el siguiente hardware: * Pentium III 550Mhz + 256MB RAM + HDD 30GB (u$s 100) * 1 placa Ethernet a un modem ADSL (u$s 6) * 1 placa Ethernet a una LAN hogareña (u$s 6) * 1 placa WiFi Atheros (u$s 28) * 1 placa clone Digium X100P (u$s 60)
Y transformarla en un robusto servidor capaz de: * Ser accedido desde internet como www.loquequieras.com.ar sin pagar una IP fija a tu ISP * Proveer DHCP sobre tu LAN (para que los equipos de tu LAN no requieran configuración de IP) * Asignar automáticamente IPs fijas a equipos especiales de tu LAN para que se puedan hacer redirecciones de puertos. * Conectarse persistentemente al ADSL y compartir la conexión a la LAN con NAT y redirección de DNS permitiéndote tirar a la basura los routers hogareños que limitan los P2P's * Dejar un log de las caídas de conexión de internet (útil para reclamos al ISP) * Funcionar como access-point WiFi con seguridad WPA/WPA2 y con un bridge entre la LAN y el WiFi para que las PCs de la LAN estén en la misma subred que las PCs conectadas al access-point. * Funcionar como proveedor de telefonía VoIP propio. Desde internet podemos usar un teléfono VoIP (SIP o AIX2) y realizar llamadas a través de nuestra línea telefónica hogareña. Ideal para irnos de vacaciones y llamar a nuestros familiares y amigos pagando llamadas locales. * Funcionar como proxy web y socks con clave. Ideal para desde nuestros trabajos navegar por internet y usar mensajeros a través de nuestra conexión hogareña y no dejar huellas de nuestra navegación personal en los logs del proxy corporativo. * Redireccionar puertos de RDP o VNC a nuestras PCs hogareñas para poder manejarles el Escritorio desde internet sin utilizar servicios ajenos como el LogMeIn. * Tener la capacidad de configurar políticas traffic-shaping (esto aún lo tengo en desarrollo...) * Proveer servicio de UPnP a la red para reemplazar en todo aspecto a un router hogareño. (Esto aún lo tengo en desarrollo...)
Si luego de leer hasta acá se te dilataron las pupilas de la emoción... esta guía es para vos...
Introducción
La principal razón por la que estoy publicando esta guía es porque el trabajo fue realizado sobre Slackware; lo cual, por si no la conoces, hace que todo sea un poco más difícil de lo normal... Y si allá afuera hay alguna otra persona queriendo lograr alguno de estos objetivos con Slackware esta guía le ahorraría MUCHO tiempo de investigación. Slackware es mi distribución de Linux preferida. Sus características y filosofías son: * Solo se usa código estable. Nada de Betas o cosas nuevas. Ideal para servidores rock-solid. * El software incluido en la distro no es manipulado ni preconfigurado y por tanto la configuración de cada componente es copia fiel de lo que los programadores originales hicieron. * El sistema de paquetes es lo más simple que podría existir, simplemente son .tgz's, y ni siquiera soporta dependencia entre paquetes. * El software provisto es el básico. Lo demás debe ser incluido personalmente compilando los programas (ni siquiera trae Gnome) * El inicio se produce por medio de scripts crudos. No se usa System-V ni ningún gestor de servicios como los que utilizan Fedora/Ubuntu/Etc.
Si sos fanático de Slackware en este momento te estarás babeando... y si no lo sos en este momento estarás pensando que suena a cosa de masoquistas porque parecen todas pálidas...
Asique la pregunta que todos se hacen es ¿Que catzo tiene de bueno Slackware? y la respuesta yo la resumo en "Si sabes Ubuntu, sabes Ubuntu... y si sabes Slack, sabes Linux". En otras palabras, es una distribución tan cruda que te permite (obliga?) aprender realmente como funciona todo en Linux. Y una vez que sabes cómo funciona todo ya deja de gustarte que te entorpezcan el camino a las cosas con archivos de configuración simplificados, herramientas graficas que no ofrecen la real versatilidad de las cosas, updates automáticos que si los corres sobre un servidor lo haces cruzando los dedos de que no se rompa nada porque no sabes realmente que está haciendo, etc, etc, etc.
Esta guía la hice varias semanas después de hacer mi server y no es exactamente igual a mi server (la hice más genérica porque el mío tiene muchísimas más customizaciones inútiles como un rotador de banners de sshd, etc) asique es perfectamente probable que alguna de las cosas no funcione bien como cuando doy tips de que ejecutar para evitar reiniciar y cosas así. Si algo no les funciona avísenme por email y le hago los ajustes necesarios para ir puliéndola...
Basta de cháchara...
Instalar la Slackware
Este es el primer paso y sobre el que menos voy a hablar. La instalación fue hecha sobre una pc con un único disco rígido, usando una única partición y a lo Windows (Siguiente, Siguiente, Todo, Todo, Siguiente, Siguiente...). Aparte hay miles de documentos online sobre la instalación de Slackware. Ej: http://www.slackware.com/install/
Disponer de los SlackBuilds
No sé si sos nuevo en Slackware o no pero ya dije que en la Slackware solo viene lo básico y lo demás hay que compilarlo. Bueno, para ahorrarnos tiempo hay unos muchachos en http://www.slackbuilds.com/ que se dedicaron a hacer un repositorio de scripts de compilación (también llamados SlackBuilds) que son capaces de automáticamente transformar el código fuente original de un programa en un paquete Slackware.
Esta es exactamente la misma técnica de trabajo que se usa para generar los paquetes básicos que ya tenés instalados de la distribución.
Lo que vamos a hacer es bajarnos el repositorio completo de SlackBuilds. No te asustes que de disco son solo 7 MB porque estamos bajando la version comprimida y de download son solo 4.5MB porque estamos habilitando la compresion de datos en el protocolo rsync. (Ojo que en el comando está el 12.2 que es la versión de Slackware con la que yo trabajé; si tenes otra corregilo.)
# mkdir -p /soft/SlackBuilds # rsync -rtzv rsync://rsync.slackbuilds.org/slackbuilds/12.2/*/*.tar.gz /soft/SlackBuilds/
Siempre que en este texto te diga "Instalate el paquete xxxxxx de los SlackBuilds" voy a estar refiriéndome al siguiente procedimiento:
Vamos a usar de ejemplo el paquete 3proxy:
# cd /soft/SlackBuilds # tar -zxf 3proxy.tar.gz # cd 3proxy # cat 3proxy.info
Ahi tenes que leer la url rotulada DOWNLOAD que es el link directo al último código fuente con el que se probó exitosamente el script de compilacion SlackBuild que vamos a correr.
# wget http://3proxy.ru/0.5.3k/3proxy-0.5.3k.tgz # ./3proxy.SlackBuild
El paquete de instalación va a parar a /tmp asique estamos a 1 línea de distancia de tener el paquete instalado...
# installpkg /tmp/3proxy*.tgz
Al tercero que hagas vas a ver que lo tenes instalado en menos de 1 minuto.
== Configurar las placas Ethernet == Voy a asumir que ya tenés disponibles los dispositivos eth0 y eth1 porque no puedo ponerme a hablar sobre las mil cosas que pueden pasar con los mil chipsets de red... pero si te podría ayudar si te digo que a veces si una de las dos placas no te la reconoce conviene alterar el orden en el que las enchufas en los slots pci (yo tengo dos 3Com 3c905B y dependiendo de en que slots pci las conecte andan las dos o solo una o a una se le pone eth2 y cosas raras) A la eth0 le vamos a asignar la IP-LAN y la eth1 la vamos a usar para el ADSL.
Cuando estemos configurando todo tené siempre presente la posibilidad de que las hayas cableado al revés.
Editá el archivo /etc/rc.d/rc.inet1.conf y asegurate de que estén especificadas las IPs que querés para cada interfaz:
IPADDR[0]="192.168.0.1" # Yo en mi lan uso 10.0.0.1 pero suena más familiar la maldita 192.168.0.1 NETMASK[0]="255.255.255.0" IPADDR[1]="192.168.1.2" NETMASK[1]="255.255.255.0"
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.inet1 restart
== Configurar el acceso persistente al ADSL con logging de caidas == Editá el archivo /etc/ppp/pppoe.conf y asegurate de que estén especificadas al menos las siguientes cosas:
ETH=eth1 USER=45556666@speedyplus # Acá va tu usuario de ADSL DEMAND=no # Acá va no para que la conexión sea persistente (siempre online) DNSTYPE=SERVER DEFAULTROUTE=yes CLAMPMSS=1412 # Esto es muy largo de explicar... asegurate de que esté y ya (si tenés tiempo googlealo que es interesante)
Editá el archivo /etc/ppp/pap-secrets y asegurate de que haya una línea con tu clave de ADSL en el siguiente formato:
45556666@speedyplus * MiClaveDeADSL *
Editá el archivo /etc/ppp/ip-up y asegurate de que estén especificadas al menos las siguientes cosas:
#!/bin/sh
echo date - ADSL - UP - $4 >> /var/log/adsl if [ -x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall start
fi
Editá el archivo /etc/ppp/ip-down y asegurate de que estén especificadas al menos las siguientes cosas:
#!/bin/sh
echo date - ADSL - DOWN >> /var/log/adsl if [ -x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall stop
fi
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar conexión ADSL
pppoe-start sleep 10
ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# pppoe-start
Listo; en el archivo /var/log/adsl vas a tener el log de las conexiones y desconexiones de ADSL con la respectiva IP que tuvo en cada conexión.
En esta instancia tu server ya tiene conexión a internet.
== Configurar el Router por NAT para compartir internet ==
Editá el archivo /etc/rc.d/rc.firewall poniendo las siguientes líneas
#!/bin/sh
ipt=/usr/sbin/iptables ipt_reset() { $ipt -t filter -F; $ipt -t nat -F; $ipt -t mangle -F $ipt -t filter -X; $ipt -t nat -X; $ipt -t mangle -X } ipt_nat() { $ipt -t nat -A POSTROUTING -o $extif -j MASQUERADE } ipt_redirect() { $ipt -t nat -A PREROUTING -i $extif -p $proto --dport $port -j DNAT --to $ip $ipt -t nat -A OUTPUT -d 192.168.0.1 -p $proto --dport $port -j DNAT --to $ip } case "$1" in start) echo -n "Starting Routing Firewall... " ipt_reset extif=ppp0; ipt_nat proto=tcp; port=3389; ip=192.168.0.2; ipt_redirect echo "done" ;; stop) echo -n "Shutting down Routing Firewall... " echo "done" ;; restart) $0 stop $0 start ;; *) echo "Usage: rc.firewall {start|stop|restart}" exit 1 ;; esac exit 0
La línea que dice `proto=tcp; port=3389; ip=192.168.0.2; ipt_redirect` es un ejemplo de cómo generar una redirección. Podes hacer tantas de esas como quieras poniendo muchas de esas líneas. Yo personalmente cambio los números de puertos de los servicios por una cuestión de seguridad asique en mi archivo personal se puede ver `proto=tcp; port=43389; ip=10.0.0.2:3389; ipt_redirect`
Habilitar los permisos de ejecución de ciertos archivos ejecutando
# chmod a+x /etc/rc.d/rc.ip_forward # chmod a+x /etc/rc.d/rc.firewall
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podés ejecutar
# /etc/rc.d/rc.ip_forward start # pppoe-stop # pppoe-start
En esta instancia si vos a una PC de la LAN le pones ip:192.168.0.2, mascara:255.255.255.0, gateway:192.168.0.1 podrías pinguear a google con un ping 74.125.45.103 pero las resoluciones DNS fallarían porque aún no montamos un servidor DNS que las redireccione al DNS de nuestro ISP...
== Configurar el DNS y el DHCP (con dnsmasq en vez de bind+dhcpd) == Desde que conoci la maravilla del dnsmasq nunca más en mi vida voy a volver a usar bind o dhcpd para una red hogareña.
Editá el archivo /etc/dnsmasq.conf y asegurate de que estén especificadas al menos las siguientes cosas:
# Si en nuestra notebook instalamos un cliente VoIP y le decimos que se conecte a loquequieras.com.ar necesitamos que si esa notebook está en la LAN se conecte a la IP-LAN de nuestro server y si está conectada a internet por otro lado se conecte a la IP-WAN. # Las siguientes líneas resuelven este tema. (Para el que sepa de DNS le cuento que representan un simple A)
address=/loquequieras.com.ar/192.168.0.1 address=/loquequieras.dyndns.org/192.168.0.1 # Las siguientes líneas hacen que solo escuche peticiones en la LAN (y no ande abriendo puertos accesibles desde internet) listen-address=192.168.0.1 listen-address=127.0.0.1 bind-interfaces # Las siguientes líneas definen los rangos de IP automática que se le asignará a aquellos equipos que no carguemos como especiales con IP fija. Y podemos cargar los equipos especiales y especificarles la IP fija que queremos que se asigne a dicha mac-address. dhcp-range=192.168.0.100,192.168.0.199,12h dhcp-host=00:20:8E:F3:E6:21,192.168.0.2 #PC dhcp-host=00:1C:C4:E3:4B:19,192.168.0.254 #Impresora dhcp-option=option:router,192.168.0.1
Asegurate de que tiene permisos de ejecución el script de inicio del dnsmasq
# chmod a+x /etc/rc.d/rc.dnsmasq
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar el servidor DNS y DHCP
- if [ -x /etc/rc.d/rc.dnsmasq ]; then
- /etc/rc.d/rc.dnsmasq start
fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.dnsmasq restart
A mí una vez me paso que la IP especial no se asignaba porque dicha mac ya tenía una IP asignada y cacheada por 12 horas. Si te pasó esto tenés que borrar el archivo /var/state/dnsmasq/dnsmasq.leases que es donde están estas IPs asignadas
== Hacer andar los DDNS de DynDNS y EveryDNS == Para hacer andar el DynDNS necesitamos instalar de las SlackBuilds el programa ddclient (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto)
Luego editá el archivo /etc/ddclient/ddclient.conf y asegurate de que estén especificadas al menos las siguientes cosas:
daemon=60 use=if, if=ppp0 login=TU_NOMBRE_DE_USUARIO password=TU_CLAVE wildcard=yes server=members.dyndns.org, protocol=dyndns2 loquequieras.dyndns.org
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar el DDClient para DynDNS
- if [ -x /etc/rc.d/rc.ddclient ]; then
- /etc/rc.d/rc.ddclient start
fi
Para hacer andar el loquequieras.com.ar de EveryDNS tenés que hacer lo siguiente
# cd /usr/local/sbin # wget http://www.everydns.net/eDNS.pl
Agregá al archivo /etc/ppp/ip-up las siguientes líneas:
/usr/local/sbin/eDNS.pl -u TU_NOMBRE_DE_USUARIO -p TU_CLAVE -d loquequieras.com.ar -ip $4
Si no conoces EveryDNS te cuento que es un servicio de DDNS que te permite gestionar gratuitamente un loquequieras.com.ar. Para los que sepan de redes les cuento que simplemente tienen que registrar el dominio en nic.ar especificando los DNS de EveryDNS, luego sacarse una cuenta allí, crear el dominio dentro de EveryDNS y usar este script para que nuestro server refresque la ip cada vez que se conecte. Para los que no están muy duchos en este tema y necesitan un tutorial más didáctico les sugiero googlear "tutorial everydns" y van a encontrar varios. (ej. http://tupropiodominioenblogger.blogspot.com/2007/12/tutorial-con-everydns.html ) Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.ddclient start # pppoe-stop # pppoe-start
== Hacer andar la placa Wifi Atheros como Access Point con un bridge a la Lan == Las placas WiFi en Linux suelen dar bastante pelea cuando se intentan usar como Access Point. Mi explicación aplica solo a las Atheros y si la que tenés vos tiene otro chip te recomiendo tener siempre en mente que salen solo u$s 28. Si tu placa te hace perder mucho tiempo recordá que "time is money; el tiempo es un maní"
Para hacer andar la placa Atheros como access-point necesitamos bloquear los módulos de kernel que representan el driver nativo de Linux agregando al archivo /etc/modprobe.d/blacklist la línea:
blacklist ath5k
Luego reiniciar o ejecutar los siguientes comandos para deshabilitar una eventual carga de dichos drivers # rmmod ath5k # rmmod mac80211 # rmmod led_class # rmmod cfg80211 Luego instalar el nuevo driver de las SlackBuilds; son los paquetes madwifi-driver y madwifi-tools (remitirse al capitulo "Disponer de los SlackBuilds" de este mismo texto) Luego de reiniciar o de ejecutar "modprobe ath_pci". Ya deberías tener las interfaz wifi0 y, quizás también, ath0.
Ojo; para consultar las interfaces no uses ifconfig, usá iwconfig.
Para pasarla a modo access-point lo que tenés que ejecutar es:
# wlanconfig ath0 destroy # wlanconfig ath0 create wlandev wifi0 wlanmode ap
Pero eso no lo vas a ejecutar vos, lo va a ejecutar un script que vamos a preparar llamado /etc/rc.d/rc.ap que va a levantar nuestro access-point.
Para levantar el access-point lo otro que vamos a hacer es un bridge entre la placa LAN eth0 y la placa WiFi ath0 para que las PCs conectadas por un lado o por el otro funcionen como si estuvieran en la misma red (de igual forma que lo hacen los routercitos hogareños)
Al levantar un bridge en Linux lo que hacemos es incorporar interfaces de red a él y poner en el bridge la configuración ip que va a ser la misma entre las interfaces.
Generate el siguiente archivo: /etc/rc.d/rc.ap (Luego de generarlo acordate de darle permisos de ejecución con chmod a+x /etc/rc.d/rc.ap)
#!/bin/sh
- start() {
- echo -n "Starting VAP..." ifconfig eth0 down ifconfig ath0 down # damos de baja las interfaces reales wlanconfig ath0 destroy # damos de baja el wifi wlanconfig ath0 create wlandev wifi0 wlanmode ap # levantamos el AP ifconfig eth0 0.0.0.0 up ifconfig ath0 0.0.0.0 up # levantamos sin config de red las interfaces brctl addbr br0 # generamos el bridge brctl addif br0 eth0 brctl addif br0 ath0 # metemos a las interfaces al bridge ifconfig br0 192.168.0.1 netmask 255.255.255.0 up # y ponemos en el bridge la configuracion correcta de ip (lo que antes tenía la eth0) echo
} stop() {
echo -n "Stopping VAP..." ifconfig br0 down brctl delif br0 eth0 brctl delif br0 ath0 brctl delbr br0 ifconfig eth0 down ifconfig ath0 down wlanconfig ath0 destroy ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up echo
} restart() {
stop sleep 1 start
} case "$1" in
- 'start')
- start ;;
- 'stop')
- stop ;;
- 'restart')
- restart ;;
- *)
echo "usage $0 start|stop|restart"
esac
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar el Access Point
- if [ -x /etc/rc.d/rc.ap ]; then
- /etc/rc.d/rc.ap start
fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar:
# /etc/rc.d/rc.ap start
== Hacer andar el hostapd (Access Point con soporte WPA) == Entre WPA y WPA2 yo elijo el WPA porque es más standard (las placas WiFi viejas no soportan WPA2) y porque tiene más performance (Especialmente si te conectas al access-point de tu casa con tu celular que no tiene mucho CPU y se ralentiza al usar cifrados muy complejos). Por otro lado WPA tiene mucha menos seguridad que el WPA2 pero hay tantos APs sin clave o con WEP dando vuelta en capital que no creo que alguien se obsesione con entrar al mío... Empezá por instalarte de las SlackBuilds el paquete hostapd (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto)
PERO MOMENTO!... el script de compilación de dicho paquete viene con el soporte de madwifi desactivado asique antes de ejecutar el script de compilación editá el archivo config y asegurate de que tenga DES-Comentadas las siguientes líneas:
CONFIG_DRIVER_MADWIFI=y CFLAGS += -I/tmp/SBo/madwifi-0.9.4/
y ahora si... ejecutás la compilación del paquete con el
hostapd# ./hostapd.SlackBuild
Luego editá el archivo /etc/hostapd/hostapd.conf y asegurate de que estén especificadas al menos las siguientes cosas:
interface=ath0 bridge=br0 driver=madwifi ssid=EL_NOMBRE_DE_MI_AP country_code=AR hw_mode=g wpa=1 wpa_passphrase=LA_CLAVE_DE_MI_AP wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP
Si querías montarlo con WPA2 creo que los valores serían `(ESTO NO LO PROBÉ)`
wpa=2 wpa_key_mgmt=WPA-EAP wpa_pairwise=CCMP
Y por lo que leí creo que lo podes montar como WPA/WPA2 y los valores serían `(ESTO NO LO PROBÉ)`
wpa=3 wpa_key_mgmt=WPA-PSK WPA-EAP wpa_pairwise=TKIP CCMP
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar la seguridad WPA sobre el Access Point
- if [ -x /etc/rc.d/rc.hostapd ]; then
- /etc/rc.d/rc.hostapd start
fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.hostapd start
Ya deberías tener un access-point con clave WPA andando ! y al conectarte se te debería auto asignar una IP de la misma subred de las PCs conectadas en la eth0.
== Hacer andar la placa Clon Digium X100P (1 port FXO) ==
Empezá por instalarte de las SlackBuilds el paquete zaptel (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto) Luego editá el archivo /etc/zaptel.conf dejándolo solo con el siguiente contenido (esto es para Argentina)
fxsls=1 loadzone = ar defaultzone = ar
Ejecuta el comando zaptel_hardware para ver si te reconoce la placa...
# zaptel_hardware
pci:0000:00:0b.0 wcfxo+ e159:0001 Wildcard X101P clone # _
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar zaptel (el driver de la placa FXO)
- if [ -x /etc/rc.d/rc.zaptel ]; then
- /etc/rc.d/rc.zaptel start
fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.zaptel start
Hacer andar el asterisk (como proveedor VoIP)
Empezá por instalarte de las SlackBuilds el paquete asterisk (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto) Luego editá el archivo /etc/asterisk/zapata.conf dejándolo solo con el siguiente contenido
[trunkgroups] [channels] context=default signalling=fxs_ls rxwink=300 usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes rxgain=0.0 txgain=0.0 group=1 callgroup=1 pickupgroup=1 immediate=no group=2 signalling=fxs_ls channel => 1
Luego editá el archivo /etc/asterisk/modules.conf dejándolo solo con el siguiente contenido (esto es para no cargar módulos que no vamos a usar)
[modules] autoload=yes load => res_musiconhold.so noload => chan_alsa.so noload => chan_mgcp.so noload => chan_skinny.so noload => chan_agent.so noload => cdr_odbc.so noload => res_smdi.so noload => res_snmp.so noload => app_followme.so noload => pbx_dundi.so
Luego editá el archivo /etc/asterisk/extensions.conf dejándolo solo con el siguiente contenido
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp
TRUNK=Zap/G2
TRUNKMSD=1
|
[default]
include => internos
include => trunkgratis
include => trunklocales
include => trunkcelulares
;include => trunknacionales # comentar estas líneas hace que estén bloqueadas las llamadas DDN
;include => trunkinternacionales # comentar estas líneas hace que estén bloqueadas las llamadas DDI
|
[internos]
[trunkgratis]
exten => _91XX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
exten => _90800XXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
[trunklocales]
exten => _9NXXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
exten => _908XXXXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
[trunkcelulares]
exten => _915NXXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
[trunknacionales]
exten => _90.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
[trunkinternacionales]
exten => _900.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD
)
Luego editá el archivo /etc/asterisk/sip.conf dejándolo solo con el siguiente contenido
[general] context=default allowoverlap=no bindport=5060 # 5060 es el port standard; yo suelo cambiarlo por cuestiones de seguridad bindaddr=0.0.0.0 srvlookup=yes nat=yes [authentication] [3000] # 3000 es el usuario para conectarse por SIP type = friend context = default username = 3000 secret = MI_CLAVE_DE_VOIP host = dynamic dtmfmode = rfc2833
Luego editá el archivo /etc/asterisk/iax.conf dejándolo solo con el siguiente contenido
[general] bindport=4569 # 4569 es el port standard; yo suelo cambiarlo por cuestiones de seguridad** bandwidth=low disallow=lpc10 jitterbuffer=no forcejitterbuffer=no autokill=yes [4000] # 4000 es el usuario para conectarse por IAX2** type = friend context = default username = 4000 secret = MI_CLAVE_DE_VOIP host = dynamic
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar asterisk if [ -x /etc/rc.d/rc.asterisk ]; then /etc/rc.d/rc.asterisk start fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.asterisk start
Para probarlo en cualquier PC instalate el programa X-Lite de http://www.counterpath.com/ y configuralo de la siguiente manera:
Display name: 3000 User name: 3000 Password: MI_CLAVE_DE_VOIP Authorization user name: Domain: 192.168.0.1
Y empezá a hacer llamadas telefónicas recordando anteponer el número 9 para tomar línea externa.
Montar un servidor Proxy y Socks con clave
Empezá por instalarte de las SlackBuilds el paquete 3proxy (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto)
Genera la carpeta para los logs del servicio:
# mkdir /var/log/3proxy
Editá el archivo /etc/3proxy.cfg y asegurate de que estén especificadas al menos las siguientes cosas:
log /var/log/3proxy/3proxy.log D logformat "%Y-%m-%d %H:%M:%S (%E) %U@%C:%c -> %R:%r Tx:%O Rx:%I Extra:%T" rotate 10 auth strong users NOMBRE_DE_USUARIO:CL:CLAVE_DE_ACCESO allow NOMBRE_DE_USUARIO * * * * deny * * * * * socks -p1080 -l/var/log/3proxy/socks.log #1080 es el port standard; yo suelo cambiarlo por cuestiones de seguridad proxy -p3128 -l/var/log/3proxy/proxy.log #3128 es el port standard; yo suelo cambiarlo por cuestiones de seguridad #Las siguientes líneas son ejemplos de como montar un servicio de redirección de conexiones tcp o udp desde el port 43389 hacia el port 3389 del equipo 192.168.0.2 #tcppm -l/var/log/3proxy/tcppm.log 43389 192.168.0.2 3389 #udppm -l/var/log/3proxy/udppm.log 43389 192.168.0.2 3389
Agregá al archivo /etc/rc.d/rc.local las siguientes líneas
#Iniciar el servidor Proxy y Socks if [ -x /etc/rc.d/rc.3proxy ]; then /etc/rc.d/rc.3proxy start fi
Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar
# /etc/rc.d/rc.3proxy start
Brindar servicio de UPnP
Actualmente en desarrollo...
Definir politicas de traffic-shaping
Actualmente en desarrollo...
Despedida
Esta guía la hice varias semanas después de hacer mi server y no es exactamente igual a mi server (la hice más genérica porque el mío tiene muchísimas más customizaciones inútiles como un rotador de banners de sshd, una verdadera PBX en el asterisk, etc) asique es perfectamente probable que alguna de las cosas no funcione bien como cuando doy tips de que ejecutar para evitar reiniciar y cosas así. Si algo no les funciona avísenme por email y le hago los ajustes necesarios para ir puliéndola...
Saludos,
Pablo Osés (BucanerO)
opablo / gmail com
Revisiones
- 24-Feb-2009 - Primera edición (con faltantes de Proxy y UPnP)
