How-to ProAp sobre Slackware

Extras: Router NAT, Bridge, Proxy, DDNS's, Asterisk y mucho más...

Guía paso a paso por Pablo Oses (BucanerO) - opablo / gmail \ com

Idea del proyecto

Tomar una PC de u$s 200 con el siguiente hardware:

Y transformarla en un robusto servidor capaz de:

Si luego de leer hasta acá se te dilataron las pupilas de la emoción... esta guía es para vos...

Secciones del How-to



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:

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:

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:

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

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)

Y 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)

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 podés reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar

# /etc/rc.d/rc.3proxy start

Activar el soporte de UPnP

Empezá por instalarte de las SlackBuilds los paquetes libiptc y luego miniupnpd (remitirse al capítulo "Disponer de los SlackBuilds" de este mismo texto)

Esos dos paquetes fueron hechos por mi :) aparezco en los archivos *.info

Editá el archivo/etc/miniupnpd/miniupnpd.confy asegurate de que estén especificadas al menos las siguientes cosas:

ext_ifname=ppp0
listening_ip=192.168.0.1/24
port=0
enable_natpmp=yes
enable_upnp=yes
bitrate_up=512000 #ejemplo de isp con 512kbps de subida
bitrate_down=5000000 #ejemplo de isp con 5mbps de bajada
secure_mode=yes

uuid=12345678-1234-1234-1234-123456789ABC #no escribas este valor... tenés que generar tu propio uuid
                                          #para generar tu propio uuid ejecutá el comando uuidgen

allow 1-65535 192.168.0.0/24 1-65535
deny  0-65535 0.0.0.0/0      0-65535

Editá los archivos /etc/miniupnpd/iptables_init.sh y /etc/miniupnpd/iptables_removeall.sh customizando solo la siguiente línea:

EXTIF=ppp0

Agregá al archivo /etc/rc.d/rc.local las siguientes líneas

#Iniciar el servidor UPnP
if [ -x /etc/rc.d/rc.miniupnpd ]; then
  /etc/rc.d/rc.miniupnpd start
fi

Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar

# /etc/rc.d/rc.miniupnpd start

Montar un servidor RSync

RSync es un sistema que te va a permitir desde cualquier PC sincronizar una carpeta contra el servidor. Haciendo estas sincronizaciones en una sola dirección (hacia el servidor) permite que lo uses como servidor de backups.

La razón por la que lo uso es porque es sorprendéntemente rápido debido a que solo se trafican los archivos que cambiaron y soporta el uso de transmisión comprimida (ideal para backupear por internet)

Generá los directorios para el almacenamiento de archivos:

# mkdir -p /srv/bkp

Generá el archivo /etc/rsyncd.conf y asegurate de que estén especificadas al menos las siguientes cosas:

address = 192.168.0.1 #Si querés que atienda a internet supongo que tendrás que poner 0.0.0.0
uid = root
gid = root
pid file = /var/run/rsyncd.pid

[bkp]
path = /srv/bkp
read only = false

Agregá al archivo /etc/rc.d/rc.local las siguientes líneas

#Iniciar el servidor RSync
/usr/bin/rsync --daemon

Ahora podes reiniciar la PC o si no querés perder tiempo reiniciando podes ejecutar

# /usr/bin/rsync --daemon

Hacer un backup desde una PC con Linux

rsync -a --del /home/bob/recetas_de_la_nona rsync://192.168.0.1/bkp/

Hacer un backup desde una PC con Windows

rsync.exe -a --del /cygdrive/c/carpeta_importante rsync://192.168.0.1/bkp/

Para disponer del comando rsync deben instalarse el cwRsyncd

A modo de ejemplo yo hice una tarea programada de windows que corre todos los días y ejecuta un .bat que dice así:

c:
cd "\Program Files\cwRsync\bin"
rsync.exe -a --del /cygdrive/d/Documents rsync://10.0.0.1/bkp/
rsync.exe -a --del /cygdrive/d/Pictures  rsync://10.0.0.1/bkp/
rsync.exe -a --del /cygdrive/d/PGP       rsync://10.0.0.1/bkp/

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 Oses (BucanerO)

opablo / gmail \ com

Revisiones

Wiki: HowToProApSlackware (last edited 2009-08-06 01:51:42 by PabloOses)

USLA