martes, junio 01, 2010
FreeBSD + APCUPSD
FreeBSD instalado
UPS APC con tarjeta AP9619 conectada al servidor
Manuales:
/usr/local/share/doc/apcupsd/apcupsd.pdf
http://www.apcupsd.com/manual/manual.pdf
http://www.apcupsd.com/
http://www.freebsddiary.org/apcupsd.php
http://www.packetwatch.net/documents/guides/2010031301.php
Instrucciones:
1) Instalar el port apcupsd-3.14.8
# whereis apcupsd
apcupsd: /usr/ports/sysutils/apcupsd
# cd /usr/ports/sysutils/apcupsd
# make config
[X] APCSMART_DRV Compile APC SmartUPS serial driver
[X] APCDUMB_DRV Compile dumb UPS driver
[ ] CLIENT_ONLY Only NIS client (no network server or drivers)
[X] CGI Compile with CGI programs to show status
[X] PCNET_DRV Compile PowerChute Network Shutdown driver
[X] USB Compile with USB Support driver
[X] SNMP_DRV Compile with SNMP driver
[ ] SNMP_DRV_OLD Compile with old SNMP driver
[X] TCP_WRAPPERS Compile with TCP_WRAPPERS support
[ ] TEST_DRV Compile TEST driver
[ ] GAPCMON Build GTK GUI front-end
[ OK ]
# make install clean
---
**********************************************************************
Read the manual
/usr/local/share/doc/apcupsd/apcupsd.pdf
to do site specific configuration assigenments! Especially have a
detailed look into the chapter describing the shutdown procedure.
Sample files are installed in /usr/local/etc/apcupsd. These files
must be copied and/or configured for a proper working apcupsd.
You need to modify /usr/local/etc/apcupsd/apcupsd.conf as follows:
For serial cable: DEVICE /dev/cuadX (or /dev/cuaaX for [45.]x)
For USB cable: DEVICE (yes, leave it blank after DEVICE)
NOTE that for USB cable you must comment out the line
device uhid # "Human Interface Devices"
in your kernel configuration file and recompile the kernel.
Your keyboard and mouse will still work.
WARNING USB support on FreeBSD is still considered BETA!
Add apcupsd_enable=YES to your /etc/rc.conf[.local] to have apcupsd
starting up at boot time.
**********************************************************************
---
2) Configurar APCUPSD
# cd /usr/local/etc/apcupsd
# ls
apccontrol apcupsd.conf.sample apcupsd.css.sample changeme commok
hosts.conf.sample multimon.conf.sample onbattery apcupsd.conf
apcupsd.css cgi commfailure hosts.conf multimon.conf offbattery
# cp apcupsd.conf apcupsd.conf.sample
# cp apccontrol apccontrol.sample
# edit apcupsd.conf
# egrep -v '#|^ *$' apcupsd.conf
---
UPSNAME SURT10000XLT-1TF10K
UPSCABLE ether
UPSTYPE snmp
DEVICE 192.168.1.187:161:APC:private
POLLTIME 60
LOCKFILE /var/spool/lock
SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run
NOLOGINDIR /var/run
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
---
# touch /var/log/apcupsd.events
# touch /var/log/apcupsd.status
# edit hosts.conf
# egrep -v '#|^ *$' hosts.conf
---
MONITOR 127.0.0.1 "SURT10000XLT-1TF10K"
---
# edit multimon.conf
# egrep -v '#|^ *$' multimon.conf
---
TEMPC
FIELD SYSTEM "System" ""
FIELD MODEL "Model" ""
FIELD STATUS "Status" ""
FIELD battpct "Battery Chg" "%"
FIELD utility "Utility" "VAC"
FIELD loadpct "UPS Load" "%"
FIELD UPSTEMP "UPS Temp" ""
FIELD runtime "Batt. Run Time" "min."
FIELD DATA "Data" "All data"
---
3) Verificar que en el firewall se pueda acceder al puerto TCP 3551 del servidor desde la LAN
4) Editar el archivo /etc/rc.conf para agregar las lineas de APCUPSD para que inicie con el equipo
# edit /etc/rc.conf
---
# Activamos apcupsd (Si tengo una UPS marca APC)
apcupsd_enable="YES"
---
5) Crear el sitio en APACHE para monitorear la UPS remotamente por WWW ([X] CGI) agregando unas lineas
# edit /usr/local/etc/apache22/httpd.conf
---
# Modificacion para APCUPSD inicio
<Directory /usr/local/etc/apcupsd>
AllowOverride Options FileInfo
Order deny,allow
Allow from all
</Directory>
<Directory /usr/local/etc/apcupsd/cgi>
Options ExecCGI
</Directory>
ScriptAlias /apcupsd/cgi/ /usr/local/etc/apcupsd/cgi/
Alias /apcupsd /usr/local/etc/apcupsd/
# Modificacion para APCUPSD fin
---
Re-iniciar APACHE
# /usr/local/etc/rc.d/apache22 restart
6) Ajustar los parametros de la UPS
PARAMETROS DE LA UPS
IP Address: 192.168.1.187
Mask: 255.255.255.0
Gateway: 192.168.1.1
Tarjeta AP9619 S/N:
MAC Address 00:C0:B7:80:CA:D1
Enviarle la IP a la tarjeta desde FreeBSD
# arp -s 192.168.1.187 00:C0:B7:80:CA:D1
# ping 192.168.1.187 -s 113
Entrar por telnet a la ip de la tarjeta
# telnet 192.168.1.187
Login: apc
Passwd: apc
7) Iniciar el servicio
# /usr/local/etc/rc.d/apcupsd start
8) Monitorear la UPS via WWW, entrar a:
http://ipdemiserver/apcupsd/cgi/multimon.cgi
9) apcaccess Test
# apcaccess status
---
APC : 001,048,1167
DATE : 2010-09-01 07:36:10 -0500
HOSTNAME : alpha.company.com
VERSION : 3.14.8 (16 January 2010) freebsd
UPSNAME : UPS_IDEN
CABLE : Ethernet Link
MODEL : SNMP UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2010-08-31 06:34:22 -0500
STATUS : ONLINE
LINEV : 205.0 Volts
LOADPCT : 38.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 19.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 205.0 Volts
MINLINEV : 204.0 Volts
OUTPUTV : 207.0 Volts
SENSE : Unknown
DWAKE : 000 Seconds
DSHUTD : 020 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 146.0 Volts
HITRANS : 229.0 Volts
RETPCT : 000.0 Percent
ITEMP : 34.0 C Internal
ALARMDEL : 5 seconds
BATTV : 214.0 Volts
LINEFREQ : 59.0 Hz
LASTXFER : Unacceptable line voltage changes
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : OK
STESTI : 336
STATFLAG : 0x07000008 Status Flag
MANDATE : 07/19/06
SERIALNO : NS0630013487
BATTDATE : 07/19/06
NOMOUTV : 208 Volts
NOMBATTV : 4294967295.0 Volts
EXTBATTS : 1
BADBATTS : -1
FIRMWARE : 476.17.W
APCMODEL : Smart-UPS RT 10000
END APC : 2010-09-01 07:37:10 -0500
---
10) APCUPSD SLAVE:
Se instala y configura en modo slave, estos son equipos que aunque reciben
energia de la UPS no estan conectados directamente a ella.
Nota:
La ip del servidor que corre APCUPSD en modo MASTER es 192.168.1.1
Parametros para los SLAVE en apcupsd.conf
UPSCABLE ether
UPSTYPE net
DEVICE 192.168.1.1:3551
WINDOWS
Cliente http://sourceforge.net/projects/apcupsd/files/win-binaries%20-%20Stable/
C:\apcupsd\etc\apcupsd\apcupsd.conf
Log
C:\apcupsd\etc\apcupsd\apcupsd.events
GNU/LINUX UBUNTU
$ sudo su
[sudo] password for angel:
# gedit /etc/apcupsd/apcupsd.conf
# gedit /etc/default/apcupsd
cambiar
ISCONFIGURED=no
por
ISCONFIGURED=yes
GNU/LINUX SUSE
YaST / Software / Software Management
apcupsd
# gedit /etc/apcupsd/apcupsd.conf
YaST / System / System Services (Runlevel)
apcupsd
Enable
MAC OS X
Configurar
sudo vi /private/etc/apcupsd/apcupsd.conf
Desinstalar
sudo /sbin/apcupsd-uninstall
FreeBSD
Configurar
# edit /usr/local/etc/apcupsd/apcupsd.conf
# edit /etc/rc.conf
apcupsd_enable="YES"
# /usr/local/etc/rc.d/apcupsd start
# exit
viernes, mayo 28, 2010
FreeBSD + MySQL
FreeBSD Instalado
Instrucciones:
1) Instalar MySQL desde los ports
# cd /usr/ports/databases/mysql50-server
# make install clean
2) Hacer que el MySQL se inicie con el sistema poniendo una linea en /etc/rc.conf como esta
# Activamos MySQL
mysql_enable="YES"
3) Iniciar MySQL para no tener que re-iniciar el servidor
# /usr/local/etc/rc.d/mysql-server start
4) Creamos el usuario administrador del gestor
# mysqladmin -u root password 'PASSWORDROOT'
Nota:
PASSWORDROOT se debe cambiar por una clave valida para el usuario root en MySQL
MyDB se debe cambiar por el nombre de la base de datos que requiero crear
usuario1 se debe cambiar por el nombre de usuario con el que se ingresara a DB
passusuario1 se debe cambiar por la clave que queremos para usuario1
5) Creamos la DB con su usuario correspondiente
# mysql -u root -p
Enter password: <- PASSWORDROOT
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15 Server version: 5.0.90 FreeBSD port: mysql-server-5.0.90 Type 'help;' or '\h' for help.
Type '\c' to clear the current input statement. mysql>
6) Crear la DB junto con el usuario y clave (todo de una)
CREAMOS DB utf8, permiso solo desde red clase "C", usuario y password, recargamos permisos
# mysql -u root -p
Enter password: <- PASSWORDROOT
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.0.90 FreeBSD port: mysql-server-5.0.90
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE MyDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON MyDB.* TO usuario1@'192.168.1.%' IDENTIFIED BY 'passusuario1';
Query OK, 0 rows affected (0.05 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Nota:
Esta permite conectar desde cualquier ip de la lan clase "C"
mysql> GRANT ALL PRIVILEGES ON MyDB.* TO usuario1@'192.168.1.%' IDENTIFIED BY 'passusuario1';
Con esta linea solo se permite conectar desde la ip 192.168.1.244
mysql> GRANT ALL PRIVILEGES ON MyDB.* TO usuario1@192.168.1.244 IDENTIFIED BY 'passusuario1';
7) Creamos la estructura (no se puede hacer si en el shell estoy como root)
$ mysql --user=root --password=PASSWORDROOT* MyDB < /tmp/dbiniciar.sql
8) Importamos los datos a la DB (no se puede hacer si en el shell estoy como root)
$ mysql --user=root --password=PASSWORDROOT* MyDB < /tmp/datos.sql
NOTA: Para borrar la DB que en este caso llamamos MyDB
# mysqladmin -u root drop MyDB -p
Enter password: <- PASSWORDROOT
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'MyDB' database [y/N]y
9) PRUEBAS CONEXION
REMOTA (desde un linux con mysql-client -> FreeBSD)
$ mysql -h 192.168.1.1 -u usuario1 MyDB -p
Enter password: <- passusuario1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 522
Server version: 5.0.90 FreeBSD port: mysql-server-5.0.90
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
Bye
LOCAL (desde FreeBSD)
# mysql -u root MyDB -p
Enter password: <- PASSWORDROOT
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.0.90 FreeBSD port: mysql-server-5.0.90
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
Bye
BACKUP A LA DB ACTUAL (NO SE PUEDE HACER COMO ROOT)
$ mysqldump --user=root --password=PASSWORDROOT MyDB | gzip > /tmp/MyDB.sql.gz
IMPORTAR BACKUP
DESCOMPRIMIR EL BACKUP
# cd /tmp
# gunzip MyDB.sql.gz
IMPORTAR LA DB DEL BACKUP (NO SE PUEDE HACER COMO ROOT)
$ mysql --user=root --password=PASSWORDROOT MyDB < /tmp/MyDB.sql
martes, mayo 25, 2010
FreeBSD + Squid-cache + squidGuard
martes, mayo 11, 2010
FreeBSD 8
Disco de instalacion de FreeBSD
Conexion a internet
Instalando:
Iniciar el equipo desde el cd
232 United States
OK
Standard Begin a standard installation (recommended)
[Select]
...fdisk...
OK
Would you like to keep using the current geometry?
YES
A = Use Entire Disk
Q = Finish
Standard Install a standard MBR (no boot manager)
OK
Now you need to create BSD partitions...
OK
C = Create
4096M
OK
FS A file system
OK
Please specify a mount point for the partition
/
OK
C = Create
2048M
OK
Swap A swap partition
OK
C = Create
8192M
FS A file system
OK
/var
OK
C = Create
(the resto of hd free)
OK
FS A file system
OK
/usr
OK
Q = Finish
----------------------------------------------
Ejemplo de particionado para un disco de 36GB SCSI
Part Mount Size Newfs Part
da0s1a / 4096MB UFS2 Y
da0s1b swap 2048MB SWAP
da0s1d /var 8192MB UFS2+S Y
da0s1e /usr 22528MB UFS2+S Y
----------------------------------------------
[X] 5 Kern-Developer Full binaries and doc, kernel soruces only
OK
<<< X Exit Exit this menu (returning to previous)
OK
Would you like to install the FreeBSD ports collection?
YES
OK
1 CD/DVD Install fron a FreeBSD CD/DVD
OK
Last Chance!
YES
Congratulations! You now have FreeBSD installed on your system.
/usr/sbin/sysinstall
OK
Would you like to configure any Ethernet or SLIP/PPP network devices?
YES
(si tenemos dos tarjetas, debemos tomar nota de los nombres, por ejemplo: sis0 y rl0)
sis0 SiS 900/SiS 7016 PCI Ethernet card
OK
Do you want to try IPv6 configuration of the interface?
YES
Do you want to try DHCP configuration of the interface?
YES
Host: pruebas.company.com
Domain: company.com
IPv4 Gateway: 192.168.1.1
Name server: 192.168.1.1
IPv4 Address: 192.168.1.108
Netmask: 255.255.255.0
OK
Do you want this machine to funtion as a network gateway?
NO
Do you want to configure inetd and the network services that it provides?
NO
Would you like to enable SSH login?
YES
Do you want to have anonymous FTP access to this machine?
NO
Do you want to configure this machine as an NFS server?
NO
Do you want to configure this machine as an NFS client?
NO
Would you like to customize your system console settings?
NO
Would you like to set this machine's time zone now?
YES
Is this machine's CMOS clock set to UTC? If ...
NO
2 America -- North and South
OK
13 Colombia
OK
Does the abbreviation 'COT' look reasonable?
YES
Does this system have a PS/2, serial, or bus mouse?
NO
The FreeBSD package collection is a ...
NO
Would you like add any initial user accounts...?
YES
User Add a new user to the system
OK
Login: myname
UID: 1001
Group:
Password: ******
Confirm Password: *******
Full name: My Full Name
Member groups:
Home directory: /home/myname
Login shell: /bin/sh
OK
X Exit Exit this menu (returning to previous)
OK
Now you must set the system manager's password
OK
New Password: ******
Retype New Password: ******
Visit the general configuration menu...?
NO
X Exit Install
Are you sure you wish to exit? The system will reboot
YES
(expulsa el disco de instalacion)
Be sure to remove the media fron the drive
OK
(se reinicia el equipo)
(al terminar de cargar, nos pide login y password en el shell)
FreeBSD/i386 (pruebas.company.com) (ttyv0)
Login: root
Password: ******
pruebas#
Nota:
FreeBSD por defecto solo permite conectar por SSH con usuarios normales, tampoco permite a los usuarios hacer 'su' por seguridad, por esto para permitirle a un usuario hacer 'su' hay que editar el archivo /etc/group
# edit /etc/group
---
wheel:*:0:root,angel
---
En nuestro ejemplo hemos agregado el login angel como se puede ver, los logins van separados por (,).
martes, mayo 04, 2010
FreeBSD + Network UPS Tools
FreeBSD Instalado
Manuales:
http://www.networkupstools.org/
http://people.freebsd.org/~thierry/nut_FreeBSD_HowTo.txt
http://opensource.mgeups.com/howto.htm#test-cfg
Otros manuales:
http://taquiones.net/sysadmin/nut.html
http://www.lissyara.su/articles/freebsd/programms/network_ups_tools/
http://www.usebox.net/jjm/ups-obsd/
/usr/local/share/doc/nut
Datos de la tarjeta SNMP en la UPS
http://www.ingrasys.com/Product/usha/pd_usha_1.aspx
1) Instalar el port nut
#cd /usr/ports/sysutils/nut
# cd make config
Solo activo las opciones
[ ] SERIAL
[ ] USB
[X] SNMP
[X] NEON
[ ] HAL
[X] IPV6
[ ] DEVEL
[ ] CGI
Guardar y salir
# make install clean
2) Crear los archivos de configuracion
# cd /usr/local/etc/nut/
# cp ups.conf.sample ups.conf
---
[myups]
driver = snmp-ups
port = 192.168.1.252
#cable = 1234
desc = "UPS Pinnacle Plus 10000T"
---
# cp upsd.conf.sample upsd.conf
---
LISTEN 127.0.0.1 3493
---
# cp upsd.users.sample upsd.users
---
[admin]
password = mypass
actions = SET
instcmds = ALL
[upsmon]
password = pass
upsmon master
MONITOR myups@localhost 1 monuser pass master
---
# cp upsmon.conf.sample upsmon.conf
---
MONITOR myups@localhost 1 monuser mypass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
---
Asegurando un poco los archivos de configuracion
# chown root:uucp /usr/local/etc/nut/upsd.conf
# chmod 0640 /usr/local/etc/nut/upsd.conf
# chown root:uucp /usr/local/etc/nut/upsd.users
# chmod 0640 /usr/local/etc/nut/upsd.users
Por defecto parece que requiere un directorio cuando esta corriendo,
en el configure.txt lo comenta en el numeral 5
# mkdir -p /var/state/ups
# chmod 0770 /var/state/ups
# chown uucp:wheel /var/state/ups
Tambien requiere otro directorio en /var/db/nut/upssched para el upssched.conf (upssched.pipe y upssched.lock)
# mkdir /var/db/nut/upssched
# chown uucp:uucp /var/db/nut/upssched
3) Hacer que inicie con el sistema agregando en /etc/rc.conf las lineas
---
# Activamos Network UPS Tools
nut_enable="YES"
nut_upslog_enable="YES"
nut_upsmon_enable="YES"
---
4) Iniciar el servicio [sart|stop]
# /usr/local/etc/rc.d/nut start
---
Network UPS Tools - UPS driver controller 2.4.1
Network UPS Tools - Generic SNMP UPS driver 0.44 (2.4.1)
Detected Model 10K on host 192.168.1.252 (mib: ietf 1.3)
[myups] unhandled ASN 0x5 recieved from 1.3.6.1.2.1.33.1.2.3.0
[myups] unhandled ASN 0x5 recieved from 1.3.6.1.2.1.33.1.2.6.0
[myups] unhandled ASN 0x5 recieved from 1.3.6.1.2.1.33.1.4.2.0
Starting nut.
Network UPS Tools upsd 2.4.1
/usr/local/etc/nut/upsd.conf is world readable
listening on 127.0.0.1 port 3493
Connected to UPS [myups]: snmp-ups-myups
/usr/local/etc/nut/upsd.users is world readable
---
Hay que iniciar los otros dos
# /usr/local/etc/rc.d/nut_upsmon start
# /usr/local/etc/rc.d/nut_upslog start
5) Solicitar informacion de la ups
# upsc myups@localhost
---
battery.charge: 100.00
battery.runtime.low: 0
battery.temperature: 32.00
battery.voltage: 256.80
driver.name: snmp-ups
driver.parameter.pollinterval: 2
driver.parameter.port: 192.168.1.252
driver.version: 2.4.1
driver.version.internal: 0.44
input.current: 0.00
input.frequency: 60.00
input.phases: 1.00
input.quality: 34.00
input.voltage: 2060.00
output.current: 0.00
output.phases: 1.00
output.realpower: 0.00
output.voltage: 2300.00
ups.firmware: Ver P7.0
ups.firmware.aux: AlphaLink Card v4.26 (SN 1117027624120)
ups.load: 64.00
ups.mfr: UPS
ups.model: Model 10K
ups.power: 0.00
ups.serial:
ups.status: OL
ups.test.result:
---
Para ver como va la cosa
# tail -f /var/log/messages
http://opensource.mgeups.com/howto.htm#test-cfg
Nota:
Se cambio la parte original ups_name@localhost por myups@localhost
To view the list of available settable variables, use the following command:
upsrw myups@localhost
To set the low battery level (which trigger shutdown), use the following command:
upsrw -s battery.charge.low=20 -u admin -p mypass myups@localhost
To view the list of available settable variables, use the following command:
upscmd -l myups@localhost
To execute a battery test, use the following command:
upscmd -u admin -p mypass myups@localhost battery.test
Actualizacion:
Active la opcion [X] cgi y re-instale el port
# edit /usr/local/etc/apache22/httpd.conf
agrego las siguientes lineas:
---
<Directory /usr/local/www/nut>
AllowOverride Options FileInfo
Order deny,allow
Allow from all
</Directory>
<Directory /usr/local/www/nut/cgi>
Options ExecCGI
</Directory>
ScriptAlias /nut/cgi/ /usr/local/www/nut/cgi/
Alias /nut /usr/local/www/nut/
---
Por defecto el port crea los directorios
# ls /usr/local/www/cgi-bin/nut/
upsimage.cgi upsset.cgi upsstats.cgi
# ls /usr/local/www/nut/
bottom.html header.html index.html nut-banner.png
Pero aun no se como hacer en el httpd.conf para que el sitio este en un lugar y que se pueda ejecutar los .cgi que estan en otro!
Para solucionarlo, copiare el contenido de /usr/local/www/cgi-bin/nut/ en una carpeta que creare dentro de /usr/local/www/nut/cgi
# mkdir /usr/local/www/nut/cgi
# cp /usr/local/cgi-bin/nut/*.cgi /usr/local/www/nut/cgi
El codigo del archivo /usr/local/www/nut/header.html apunta a los .cgi , pero los hago apuntar dentro de /usr/local/www/nut/cgi
# edit /usr/local/www/nut/header.html
Asi quedaron las lineas ya modificadas
<a href=/nut/cgi/upsstats.cgi target=mainFrame>Statistics</a>
<a href=/nut/cgi/upsset.cgi target=mainFrame>Settings</a>
adicionalmente con la activacion de [X] CGI se crearon otros archivos dentro de /usr/local/etc/nut/
Aqui pongo el contenido de todos luego del cambio:
# egrep -v '#|^ *$' hosts.conf
MONITOR myups@localhost "My UPS"
# egrep -v '#|^ *$' nut.conf
MODE = none
# egrep -v '#|^ *$' ups.conf
[myups]
driver = snmp-ups
port = 192.168.1.252
desc = "My UPS"
# egrep -v '#|^ *$' upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 192.168.1.1 3493 (esta es la ip fija que da a la lan)
# egrep -v '#|^ *$' upsmon.conf
MONITOR myups@localhost 1 upsmon pass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
# egrep -v '#|^ *$' upssched.conf
CMDSCRIPT /usr/local/bin/upssched-cmd
# egrep -v '#|^ *$' upsset.conf
este no tiene nada activado
# egrep -v '#|^ *$' upsd.users
[admin]
password = mypass
actions = SET
instcmds = ALL
[upsmon]
password = pass
upsmon master
MONITOR myups@localhost 1 monuser pass master
copio un par de archivos .html.sample
# cp upsstats-single.html.sample upsstats-single.html
# cp upsstats.html.sample upsstats.html
Re-inicio el servicio
# /usr/local/etc/rc.d/nut restart
Para ver si la cosa del html funciona, ingreso a
http://ipdemiservidor/nut
Nota2:
Ya encontre la razon de que me diera errores al tratar de compartir los cgi del nut, la razon era una linea en el /usr/local/etc/apache22/httpd.conf
la linea que daba problemas era:
ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
Si la desactivo con un #, puedo crear toda la entrada asi:
# Modificacion para Network UPS Tools inicio
# Para el sitio
<Directory /usr/local/www/nut>
AllowOverride Options FileInfo
Order deny,allow
Allow from all
</Directory>
<Directory /usr/local/www/nut/cgi>
Options ExecCGI
</Directory>
#ScriptAlias /nut/cgi/ /usr/local/www/nut/cgi/
Alias /nut /usr/local/www/nut/
# Notas:
# * Los CGI los pone en el directorio /usr/local/www/cgi-bin/nut
# * Para poder ejecutar los cgi en el directorio de instalacion, desactivo (#) una linea
# de arriba que dice:
# ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
# ya que parece que no se requiere actualmente para nadie
#
# Para los CGI
<Directory /usr/local/www/cgi-bin/nut>
AllowOverride Options FileInfo
Order deny,allow
Allow from all
</Directory>
<Directory /usr/local/www/cgi-bin/nut>
Options ExecCGI
</Directory>
ScriptAlias /cgi-bin/nut/ /usr/local/www/cgi-bin/nut/
Alias /cgi-bin/ /usr/local/www/cgi-bin/nut/
# Modificacion para Network UPS Tools fin
Logicamente, con esta solucion ya no es necesario la carpeta /usr/local/www/nut/cgi y tampoco hay que poner a apuntar los links en /usr/local/www/nut/header.html a otros lugares.
Nota3:
Tambien tengo una ups de la marca CyberPower System
y para el FreeBSD 8 en el archivo de la ups tengo esto:
# egrep -v '#|^ *$' ups.conf
[CPS425SL]
driver = genericups
port = /dev/cuau0
upstype = 7
desc = "CyberPower Systems 425SL 425VA / CPS425SL"
Hay que anotar que en FreeBSD 8 el nombre de los COM cambio:
http://www.freebsd.org/releases/8.0R/relnotes-detailed.html
COM1 /dev/cuau0
COM2 /dev/cuau1
Hasta este punto, cuando la UPS llega al nivel critico de las baterias, apaga el servidor.
Otra opcion interesante es poder programar un apagado en el servidor luego de que la UPS esta agotando las baterias, por ejemplo luego de 60 segundos...
Para esto hay que usar upssched y agregarle unas lineas, aqui dejo las modificaciones:
# egrep -v '#|^ *$' /usr/local/etc/nut/upsmon.conf
MONITOR myups@localhost 1 upsmon pass master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/local/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYMSG ONBATT "%s is on battery"
NOTIFYMSG ONLINE "%s is back online"
NOTIFYMSG LOWBATT "%s has a low battery!"
NOTIFYMSG SHUTDOWN "System is being shutdown!"
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
# egrep -v '#|^ *$' /usr/local/etc/nut/upssched.conf
CMDSCRIPT /usr/local/bin/upssched-cmd
PIPEFN /var/db/nut/upssched/upssched.pipe
LOCKFN /var/db/nut/upssched/upssched.lock
AT ONBATT * START-TIMER ONBATT 60 <- los 60 seg
AT ONLINE * CANCEL-TIMER ONBATT
AT LOWBATT * EXECUTE LOWBATT
AT SHUTDOWN * EXECUTE SHUTDOWN
# egrep -v '#|^ *$' /usr/local/bin/upssched-cmd
case $1 in
ONBATT)
echo ONBATT TIMEOUT | mail -s "UPS Notify" reidrac
/usr/local/sbin/upsmon -c fsd
;;
LOWBATT)
echo LOWBATT | mail -s "UPS Notify" reidrac
;;
SHUTDOWN)
echo SHUTDOWN | mail -s "UPS Notify" reidrac
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
Re-inicio upsmon para que tome la nueva configuracion
# /usr/local/etc/rc.d/nut_upsmon restart
jueves, abril 29, 2010
FreeBSD + Squid-cache + SquidClamAV + ClamAV
FreeBSD instalado
Squid-cache instalado
1) Instalar ClamAV
# whereis clamav
clamav: /usr/ports/security/clamav
# cd /usr/ports/security/clamav
# make install clean
Crear el archivo de configuracion
# cp /usr/local/etc/clamd.conf.default /usr/local/etc/clamd.conf
Ejemplo del contenido ya listo
Note que la opcion
LocalSocket /var/run/clamav/clamd.sock
no puede funcionar si esta usando las opciones
TCPSocket 3310
TCPAddr 127.0.0.1
egrep -v '#|^ *$' /usr/local/etc/clamd.conf
---
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /usr/home/hd1/infected
DatabaseDirectory /var/db/clamav
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
User root
AllowSupplementaryGroups yes
ScanMail yes
---
Hacer que se inicie con el sistema
Poner las siguientes lineas en el /etc/rc.conf
---
# Activamos ClamAV (antivirus para Samba)
clamav_freshclam_enable="YES"
clamav_clamd_enable="YES"
---
Iniciar ClamAV
# /usr/local/etc/rc.d/clamav-clamd start
El log /var/log/clamav/clamd.log
Muestra algo como esto
---
+++ Started at Thu Apr 29 10:06:02 2010
clamd daemon 0.96 (OS: freebsd7.2, ARCH: amd64, CPU: amd64)
Running as user root (UID 0, GID 0)
Log file size limited to 1048576 bytes.
Reading databases from /var/db/clamav
Not loading PUA signatures.
Loaded 759499 signatures.
TCP: Bound to address 127.0.0.1 on port 3310
TCP: Setting connection queue length to 30
Limits: Global size limit set to 104857600 bytes.
Limits: File size limit set to 26214400 bytes.
Limits: Recursion level limit set to 16.
Limits: Files limit set to 10000.
Archive support enabled.
Algorithmic detection enabled.
Portable Executable support enabled.
ELF support enabled.
Mail files support enabled.
OLE2 support enabled.
PDF support enabled.
HTML support enabled.
Self checking every 600 seconds.
Set stacksize to 2162688
No stats for Database check - forcing reload
Reading databases from /var/db/clamav
Database correctly reloaded (759499 signatures)
---
Verificar que esta funcionando
# sockstat -4 | grep clamd
root clamd 26383 4 tcp4 127.0.0.1:3310 *:*
Hacer una prueba mediante telnet y ponerlo a escanear el directorio /root
# telnet localhost 3310
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SCAN /root
/root: OK
Connection closed by foreign host.
2) Instalar SquidClamAV
# whereis squidclamav
squidclamav: /usr/ports/security/squidclamav
# cd /usr/ports/security/squidclamav
# make install clean
Crear el archivo de configuracion
# cp /usr/local/etc/squidclamav.conf.dist /usr/local/etc/squidclamav.conf
Ejemplo del contenido ya listo
egrep -v '#|^ *$' /usr/local/etc/squidclamav.conf
---
squid_ip 127.0.0.1
squid_port 3128
logfile /var/log/squidclamav.log
maxsize 5000000
redirect http://alpha/mensaje6.html
stat 0
maxredir 30
clamd_ip 127.0.0.1
clamd_port 3310
timeout 60
useragent Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402)
trust_cache 0
logredir 0
abort ^.*\.(ico|gif|png|jpg)$
abortcontent ^image\/.*$
abort ^.*\.(css|xml|xsl|js|html|jsp)$
abortcontent ^text\/.*$
abortcontent ^application\/x-javascript$
abortcontent ^video\/x-flv$
abortcontent ^video\/mp4$
abort ^.*\.swf$
abortcontent ^application\/x-shockwave-flash$
abortcontent ^.*application\/x-mms-framed.*$
whitelist .*\.clamav.net
---
Crear el archivo de log /var/log/squidclamav.log
# touch /var/log/squidclamav.log
Darle permiso para que lo use
chown squid:squid /var/log/squidclamav.log
Verificar que se aplico correctamente los permisos
# ls -l /var/log/squidclamav.log
-rw-r--r-- 1 squid squid 324645 Apr 29 12:19 /var/log/squidclamav.log
Iniciar el squidclamav manualmente para prueba
# squidclamav -c /usr/local/etc/squidclamav.conf
---
SquidClamav v5.3 running in interactive mode
Wed Apr 28 14:28:38 2010 LOG Anonymizing User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic)
Wed Apr 28 14:28:38 2010 LOG SquidClamav v5.3 (PID 88666) started
---
Note que para pararlo, se hace con
Ctrl + C
3) Configuro unos parametros adicionales en el /usr/local/etc/squid/squid.conf
Le agrego las siguientes lineas
on ACL definition you should have declared:
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
on http_acces definition you should declared the follwing :
http_access deny to_localhost
http_access allow localhost
http_access allow purge localhost
http_access deny purge
url_rewrite_access deny localhost
and on the redirect section the following:
url_rewrite_program /usr/local/bin/squidclamav -c /usr/local/etc/squidclamav.conf
url_rewrite_children 30
Verificar los logs para ver que todo esta bien
Para Squid-cache
# tail -f /usr/local/squid/logs/cache.log
---
2010/04/29 11:56:33| Starting Squid Cache version 3.0.STABLE25 for amd64-portbld-freebsd7.2...
2010/04/29 11:56:33| Process ID 39294
2010/04/29 11:56:33| With 11072 file descriptors available
2010/04/29 11:56:33| DNS Socket created at 0.0.0.0, port 51259, FD 7
2010/04/29 11:56:33| Adding domain company.com from /etc/resolv.conf
2010/04/29 11:56:33| Adding nameserver 127.0.0.1 from /etc/resolv.conf
2010/04/29 11:56:33| helperOpenServers: Starting 30/30 'squidclamav' processes
---
# tail -f /usr/local/squid/logs/access.log
---
---
Para SquidClamAV
# tail -f /var/log/squidclamav.log
---
Thu Apr 29 11:56:33 2010 [39306] LOG SquidClamav v5.3 (PID 39306) started
Thu Apr 29 11:56:33 2010 [39307] LOG Anonymizing User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic)
Thu Apr 29 11:56:33 2010 [39308] LOG Anonymizing User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic)
Thu Apr 29 11:56:33 2010 [39309] LOG Anonymizing User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic)
---
miércoles, marzo 24, 2010
FreeBSD + Ajax-Chat
============
Server-Side:
- PHP >= 4
- MySQL >= 4
- Ruby >= 1.8 (optional)
Client-Side:
- Enabled JavaScript
- Enabled Cookies
- Flash Plugin >= 9 (optional)
Installation
============
1) Descargar la ultima version de ajax chat
# cd /usr/local/www
# wget http://ufpr.dl.sourceforge.net/project/ajax-chat/ajax-chat/0.8.3/ajax_chat-0.8.3.zip
# gunzip ajax_chat-0.8.3.zip
2) Crear la DB chat en mysql
Creandola
$ mysqladmin -uroot create glpi
Garantizando acceso a la database
$ mysql -uroot -e"GRANT ALL ON chat.* TO admin@localhost IDENTIFIED BY 'MICLAVE'" chat
Nota:
MICLAVE se debe cambiar por la clave correcta
(choose your own values for USERNAME and PASSWORD)
3) Poner estas lineas en el /usr/local/etc/apache22/httpd.conf
# Modificacion para CHAT inicio
Alias /chat /usr/local/www/chat/
AllowOverride Options FileInfo
Order allow,deny
Allow from all
# Modificacion para CHAT fin
4) Configurar ajax chat
Configuration settings
----------------------
# cd /usr/local/www/chat/lib
# cp config.php.example config.php
# edit config.php
$config['dbConnection'] = array();
// Database hostname:
$config['dbConnection']['host'] = 'localhost';
// Database username:
$config['dbConnection']['user'] = 'admin';
// Database password:
$config['dbConnection']['pass'] = 'MICLAVE';
// Database name:
$config['dbConnection']['name'] = 'chat';
// Database type:
$config['dbConnection']['type'] = 'mysql';
// Database link:
$config['dbConnection']['link'] = null;
Channel settings:
-----------------
# cd /usr/local/www/chat/lib/data
# cp channels.php channels.php.original
# edit channels.php
User settings:
--------------
# cd /usr/local/www/chat/lib/data
# cp users.php users.php.original
# edit users.php
Upload to the server
--------------------
Upload the chat folder to your server somewhere under your document root:
e.g. http://alpha/chat/
Creation of database tables
---------------------------
Execute the provided installation script by visiting the following URL with your browser:
http://alpha/chat/install.php
Se ven estas lineas
---
Database tables created successfully - please delete this file (install.php).
---
Delete the installation script
------------------------------
Delete the file install.php from the chat directory on your server.
Ready! Just place a link to the chat directory on your website. :)
# cd /usr/local/www/chat
# mv install.php install.php.original
5) Configurando los usuarios admin y moderator
# cd /usr/local/www/chat/lib/data
# edit users.php
Se ve algo como esto
---
Se pueden cambiar las lineas respectivas para cambiar el password, ejemplo:
Para el usuario admin, que tiene role 1
$users[1]['password'] = 'PASSWORDADMIN';
Para el usuario moderator, que tiene role 2
$users[2]['password'] = 'PASSWORDMODERATOR';
Se guardan los cambios y listo!
Si luego quiero ver los logs, ingreso a:
http://alpha/chat/?view=logs
Username: admin
Password: PASSWORDADMIN
CREAR CHANNELS ADICIONALES
http://sourceforge.net/apps/mediawiki/ajax-chat/index.php?title=Custom_chat_channels
Limiting the list of forums used as chat channels
# edit /usr/local/www/chat/lib/config.php
$config['limitChannelList'] = array(123,456,789);
Adding additional chat channels
# edit /usr/local/www/chat/lib/data/channels.php
Cambiar
// Sample channel list:
$channels[0] = 'Public';
$channels[1] = 'Private';
Por
// Sample channel list:
$channels[0] = 'Public';
$channels[1] = 'Private';
$channels[2] = '123';
$channels[3] = '456';
$channels[4] = '789';
# edit /usr/local/www/chat/lib/class/CustomAJAXChat.php
Add
$this->_channels = array_merge($this->_channels, array('Extra_Public_Channel_1'=>123, 'Extra_Public_Channel_2'=>456, 'Extra_Public_Channel_3'=>789));
before
}
return $this->_channels;
Add
$this->_allChannels = array_merge($this->_allChannels, array('Extra_Public_Channel_1'=>123, 'Extra_Public_Channel_2'=>456, 'Extra_Public_Channel_3'=>789));
before
}
return $this->_allChannels;
ACTUALIZACION:
Ajax-Chat no funciona con PHP superior a 4, luego de un tiempo actualizo a esa version y Ajax-Chat ya no funciona por un parametro de fecha y no hay version nueva que use ese nuevo parametro, como solucion, cambio Ajax-Chat por http://www.phpfreechat.net , que es muy facil de instalar y parece funcionar bien!
Por defecto al montarlo todos inician con el usuario guest, para que pida que la persona escriba algun nombre, se desactiva con // en el archivo index.php del sitio
//linea desactivada $params["nick"] = "guest".rand(1,1000);
jueves, agosto 27, 2009
FreeBSD + Wordpress
FreeBSD instalado
Apache22 instalado
Instalacion:
1) Instalar wordpress mediante los ports
# whereis wordpress
wordpress: /usr/ports/german/wordpress (el resultado apunta a otro lugar)
# cd /usr/ports/www/wordpress
# make install clean
instalara automaticamente php5-gd, con opciones por defecto
php5-gd 5.2.10
[X] T1LIB
[X] TRUETYPE
[ ] JIS
2) Crear la entrada en /usr/local/etc/apache22/httpd.conf
# Modificacion para WORDPRESS inicio
<Directory /usr/local/www/wordpress>
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
</Directory>
Alias /wordpress /usr/local/www/wordpress/
# Modificacion para WORDPRESS fin
3) Re-iniciamos apache22
# /usr/local/etc/rc.d/apache22 restart
4) Configurar los datos de la DB (base de datos) en wordpress
# cd /usr/local/www/wordpress
# cp wp-config-sample.php wp-config.php
# edit wp-config.php
Colocamos los datos correctos:
define('DB_NAME', 'wordpress');^M
define('DB_USER', 'admin');^M
define('DB_PASSWORD', 'MICLAVE');^M
define('DB_HOST', 'localhost');^M
define('DB_CHARSET', 'utf8');^M
define('DB_COLLATE', '');^M
Nota:
MICLAVE se debe cambiar por la clave correcta
5) Creamos la DB
$ mysqladmin -uroot create wordpress
6) Garantizando acceso a la DB
$ mysql -uroot -e"GRANT ALL ON wordpress.* TO admin@localhost IDENTIFIED BY 'MICLAVE'" wordpress
Nota:
MICLAVE se debe cambiar por la clave correcta
7) Correr el script de instalacion de Wordpress
http://IPSERVIDOR/wordpress/wp-admin/install.php
8) Probar que la cosa funciona
Debemos ingresar con el navegador a http://IPSERVIDOR/wordpress
Links importantes
http://IPSERVIDOR/wordpress/wp-login.php
Notas:
1) Al tratar de subir alguna imagen, da un error de escritura en /usr/local/www/wordpress/wp-content
Para solucionar esto, le damos permiso total al folder
# chmod -R 777 /usr/local/www/wordpress/wp-content
2) Para eliminar la DB (que almacena el password igualmente), en el terminal se ejecuta:
$ mysqladmin -uroot drop wordpress
miércoles, julio 08, 2009
FreeBSD + Icecast2 + Theora
Requerimientos:
FreeBSD instalado
Guias:
http://www.icecast.org/docs.php
http://www.oddsock.org/guides/video.php
http://www.acooke.org/cute/SettingupR0.html
Instalacion:
1) Instalar icecast2
# whereis icecast2
icecast2: /usr/ports/audio/icecast2
# cd /usr/ports/audio/icecast2
# make install clean
2) Instalar ffmpeg2theora
# whereis ffmpeg2theora
ffmpeg2theora: /usr/ports/multimedia/ffmpeg2theora
# cd /usr/ports/multimedia/ffmpeg2theora
# make install clean
3) Instalar ezstream
# whereis ezstream
ezstream: /usr/ports/audio/ezstream
# cd /usr/ports/audio/ezstream
# make install clean
Archivos de configuracion:
# cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml
Crear una carpeta que tendra los videos
# mkdir /usr/home/hd3/streaming/
Crear el archivo con el listado de los videos y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/telesursoflibre.mpg
Copiar el archivo de
# cp /usr/local/share/examples/ezstream/ezstream_reencode_theora.xml /usr/local/etc/
# mkdir /var/log/icecast
# touch /var/log/icecast/access.log
# touch /var/log/icecast/error.log
# chmod -R 777 /var/log/icecast/
Iniciar el streaming
$ /usr/local/bin/icecast -c /usr/local/etc/icecast.xml >/dev/null 2>&1 &
$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_reencode_theora.xml >/dev/null 2>&1 &
Pararlo
killall ffmpeg2theora
killall ezstream
killall icecast
Probar que envia
http://192.168.1.1:8000/theora.ogg
Ajustar la resolucion para el streaming
En el archivo /usr/local/etc/ezstream_reencode_theora.xml
hay 2 lineas que tienen estos valores:
se cambian para que queden asi:
Aqui los archivos de configuracion
Nota:
Como los archivos son en un formato XML, el navegador muestra mal el contenido, de click derecho sobre los links y luego Save link as...
Guardelos en su disco y luego los abre con un editor.
icecast.xml
ezstream_reencode_theora.xml
Para hacer relay de alguna emisora, por ejemplo de www.di.fm
Trance Channel - D I G I T A L L Y - I M P O R T E D
en el archivo http://www.di.fm/mp3/trance.pls
vemos esta linea para conectar
http://scfire-ntc-aa06.stream.aol.com:80/stream/1003
entonces en el archivo de Icecast2 ponemos esto:
<relay>
<server>scfire-ntc-aa06.stream.aol.com</server>
<port>80</port>
<mount>/stream/1003</mount>
<local-mount>/different2.ogg</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
Y listo, para escuchar, usamos esta direccion:
http://192.168.1.1:8000/different2.ogg.m3u
Nota 2:
El archivo ezstream_reencode_theora.xml es en caso de querer usar archivos en formatos .mpg , si podemos usar directamente archivos de video en formato .ogv debemos usar el archivo ezstream_vorbis.xml con lo que nos ahorraremos procesador ya que no se requiere hacer el reencode, para esto:
# cp /usr/local/share/examples/ezstream_vorbis.xml /usr/local/etc/
Nota:
En este caso el ezstream se debe iniciar con el archivo .xml correcto, en este caso seria:
$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_vorbis.xml >/dev/null 2>&1 &
Crear el archivo con el listado de los videos .ogv y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos en formato .ogv por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/otrovideo.ogv
Para verificar que funciona, abrimos en VLC, esta direccion:
http://192.168.1.1:8000/http://alpha:8000/vorbis.ogg.m3u
Nota 3:
Para hacer que el servicio se inicie con el servidor, se debe:
Agregar las lineas en /etc/rc.conf
icecast_enable="YES"
icecast_config="/usr/local/etc/icecast.xml"
Editar el archivo /usr/local/etc/icecast.xml y modificar la linea
<security>
<chroot>0</chroot>
<!--
<changeowner>
<user>nobody</user>
<group>nobody</group>
</changeowner>
-->
</security>
Por
<security>
<chroot>0</chroot>
<!-- -->
<changeowner>
<user>angel</user>
<group>nobody</group>
</changeowner>
<!-- -->
</security>
Donde angel es un usuario creado en el servidor
viernes, julio 03, 2009
FreeBSD + NAGIOS
FreeBSD instalado
Apache2 instalado
Instalacion:
1) Instalar nagios
# whereis nagios
nagios: /usr/ports/net-mgmt/nagios
# cd /usr/ports/net-mgmt/nagios
# make install clean
Al finalizar la instalacion te mostrara las lineas que debes poner en el archivo /usr/local/etc/apache22/httpd.conf
<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
</Directory>
ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/
2) Hacer que inicie con el sistema colocando en /etc/rc.conf
nagios_enable="YES"
Nota:
Nagios por defecto requiere autenticacion, se puede desactivar temporalmente si cambiamos en
/usr/local/etc/nagios/cgi.cfg
la linea original
use_authentication=1
Por esta otra
use_authentication=0
Y asi podemos hacer pruebas temporalmente para poder ver los contenidos CGI mediante el navegador, pero no es buena idea dejarlo asi.
3) Activando la autenticacion para nagios
En las lineas que nos recomienda la instalacion de nagios para el http.conf le adicionaremos otras de modo que quede asi:
# Modificacion para NAGIOS inicio
<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>
ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/
# Modificacion para NAGIOS fin
Y ya si podemos dejar la linea original como recomiendan para cgi.cfg "use_authentication=1"
4) Creando el password
Crear el archivo htpasswd.users
# touch /usr/local/etc/nagios/htpasswd.users
Ponerle la clave
# htpasswd -c /usr/local/etc/nagios/htpasswd.users nagiosadmin
New password: ******
Re-type new password: ******
Adding password for user nagiosadmin
Para el usuario guest (a,b,c):
a) Para permitir el usuario guest, luego de aver configurado nagiosadmin:
Para permitir el usuario guest, el comando seria asi:
# htpasswd /usr/local/etc/nagios/htpasswd.users guest
New password: *****
Re-type new password: *****
Adding password for user guest
b) Luego en el archivo /usr/local/etc/nagios/cgi.cfg
se comentan las lineas originales y se agregan las nuevas, se ve asi:
#authorized_for_all_services=nagiosadmin
authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_hosts=nagiosadmin,guest
c) Hay que re-iniciar nagios
# /usr/local/etc/rc.d/nagios restart
5) Re-iniciar el apache
# /usr/local/etc/rc.d/apache22 restart
Ya al tratar de ingresar con el navegador a:
http://miservidor/nagios/
nos debera pedir el usuario (nagiosadmin) y la clave (miclavesecreta)
6) Configurando los equipos dentro de nagios
Bueno, esto no sera una guia completa, ya que hay muchas posibilidades.
Nagios se inicia con el comando
# /usr/local/etc/rc.d/nagios start
Pero seguramente no nos iniciara hasta que le dejemos los archivos que requiere, es que vienene con nombres como
Los que estan en /usr/local/etc/nagios/
cgi.cfg-sample
nagios.cfg-sample
resource.cfg-sample
Los que estan en /usr/local/etc/nagios/objects/
commands.cfg-sample
contacts.cfg-sample
localhost.cfg-sample
printer.cfg-sample
switch.cfg-sample
templates.cfg-sample
timeperiods.cfg-sample
windows.cfg-sample
Bueno, en ambos casos solo hay que compiar cada uno de los archivos dentro de sus respectivos folders con los nombres sin el "-sample" y luego editarlos segun se requiera.
Luego inticiamos nagios nuevamente y vemos si arranca sin errores.
Para chequear luego de hacer algun cambio en los archivos podemos usar este comando y si todo esta bien, lo re-iniciamos
# /usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg
Actualizacion:
1) Algunas funciones requiren la instalacion de nagios-plugin
# whereis nagios-plugins
nagios-plugins: /usr/ports/net-mgmt/nagios-plugins
# cd /usr/ports/net-mgmt/nagios-plugins
# make config
[X] NETSNMP SNMP support (check_snmp)
[X] IPv6 support
Guarde e instale
# make install clean
2) Para poder ponerle los logos, hay que instalar nagios-base-logos
# whereis nagios-base-logos
nagios-base-logos: /usr/ports/misc/nagios-base-logos
# cd /usr/ports/misc/nagios-base-logos
# make install clean
De aqui se pueden bajar mas logos http://exchange.nagios.org/directory/Images-and-Logos
se deben descomprimir en la carpeta /usr/local/www/nagios/images/logos/
Actualizacion 2
Crear grupos
Por defecto me tocaba meter los equipos con Gnu/Linux dentro del archivo windows.cfg y esto no me gustaba...
Crear un grupo LINUX
1) editar el archivo /usr/local/etc/nagios/nagios.cfg
AGREGAR LA LINEA
# Definitions for monitoring a Linux machine
cfg_file=/usr/local/etc/nagios/objects/linux.cfg
2) Crear el archivo /usr/local/etc/nagios/objects/linux.cfg
AGEGAR LAS LINEAS
# HOST DEFINITION
define host{
use linux-server ; Inherit default values from a template
host_name ISP ; The name we're giving to this switch
alias UNE ; A longer name associated with the switch
icon_image linux40.png
statusmap_image linux40.gd2
address google.com ; IP address of the switch
parents ADSL
}
# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members ; Comma separated list of hosts that belong to this group
}
# SERVICE DEFINITIONS
define service{
use generic-service ; Name of service template to use
host_name ISP
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
3) Editar el archivo /usr/local/etc/nagios/objects/templates.cfg
AGREGAR LAS LINEAS EN LA SECCION # HOST TEMPLATES
# LINUX host definition template - This is NOT a real host, just a template!
define host{
name linux-server ; The name of this host template
use generic-host ; Inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 minutes
notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
hostgroups linux-servers ; Host groups that Windows servers should be a member of
register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}
4) Re-iniciar Nagios
/usr/local/etc/rc.d/nagios restart
martes, junio 23, 2009
FreeBSD + Squid + Sarg
Ya tenemos instalado Squid
Instalacion de SARG
# whereis sarg
sarg: /usr/ports/www/sarg
# cd /usr/ports/www/sarg
# make install clean
Configuracion de SARG
# edit /usr/local/etc/sarg/sarg.conf
# egrep -v '#|^ *$' /usr/local/etc/sarg/sarg.conf
---
language English
access_log /usr/local/squid/logs/access.log
graphs yes
graph_days_bytes_bar_color orange
title "Squid User Access Reports"
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
header_font_size 9px
title_font_size 11px
background_color white
text_bgcolor lavender
title_color green
logo_image none
logo_text ""
image_size 80 45
background_image none
temporary_dir /usr/home/hd3/sarg/tmp
output_dir /usr/local/www/apache22/data/squid-reports
output_email none
resolve_ip yes
user_ip yes
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
date_format u
lastlog 4
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
topsites_num 100
long_url no
---
Nota:
La opcion
lastlog 4
hace que solo se mantengan los ultimos 4 reportes, esto es importante si por ejemplo se tiene programado hacer un reporte semanal y no se quiere llenar el disco con los reportes.
Para ver las opciones de un archivo sin los comentarios
# egrep -v '#|^ *$' /usr/local/etc/sarg/sarg.conf
Generar el reporte
# /usr/local/bin/sarg
Para ver el reporte hay que entrar a:
http://miequipo/squid-reports/
Aqui se puede ver un ejemplo de los datos que genera
http://sarg.sourceforge.net/squid-reports/index.html
Generar un reporte de un equipo especifico
Copiar el access.log de squid
# cp /usr/local/squid/log/access.log /home/angel
Entro al directorio
# cd /home/angel
Filtro el access.log con la IP del equipo a investigar
# cat access.log | grep 192.168.1.119 > access1.log
Genero el reporte con SARG
sarg -o /home/angel/ -d 22/05/2010-24/05/2010 -g e -l /home/angel/access1.log
Se creara el siguiente contenido, que es el reporte
23May2010-24May2010 index.html images
Para ver el reporte, se abre el archivo index.html
Tambien puedo convertir el access1.log a un formato entendible por humanos
# sarg -convert -l /home/angel/access1.log > access2.log
miércoles, junio 17, 2009
FreeBSD + PHPMailer
# cd /usr/ports/mail/phpmailer
# make install clean
(OJO A ESTO)
You need to adjust php's include_path to contain `/usr/local/share/phpmailer'!
For example, insert
include_path = ".:/usr/local/share/phpmailer"
into `/usr/local/etc/php.ini'.
===> Registering installation for phpmailer-2.0.2
Listo, instalo la version 2.0.2
Le pondre la linea que dicen en el /usr/local/etc/php.ini'
UPS! busco y en FreeBSD no existe el php.ini, lo que encuentro es
/usr/local/etc/php.ini-dist y una nota sobre el php.ini dentro que
dice:
;;;;;;;;;;;;;;;;;;;
; About php.ini ;
;;;;;;;;;;;;;;;;;;;
; This file controls many aspects of PHP's behavior. In order for PHP to
; read it, it must be named 'php.ini'. PHP looks for it in the current
; working directory, in the path designated by the environment variable
; PHPRC, and in the path that was defined in compile time (in that order).
; Under Windows, the compile-time path is the Windows directory. The
; path in which the php.ini file is looked for can be overridden using
; the -c argument in command line mode.
Bueno, no entiendo bien, pero ya que en este archivo fue donde se
activo la linea
default_charset = "iso-8859-1"
Supongo que es donde se controla al PHP y por esto le metere la linea
:/usr/local/share/phpmailer
Hago copia del archivo por si me lo tiro
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini-dist-
Listo a editar el archivo tranquilo
Veo que el archivo /usr/local/etc/php.ini-dist esta estructurado por
sectores y en la parte donde dice Paths and Directories, justo al
final lo meto, queda asi:
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; Activamos PHP Mailer el port es /usr/ports/mail/phpmailer
include_path = ".:/usr/local/share/phpmailer"
NOTA:
Hay que re-iniciar algo al cambiar o poner cosas en el
/usr/local/etc/php.ini-dist ???
Ahora a configurarlo:
Para saber que y donde quedo instalado phpmailer, uso:
alpha# find . -name "phpmailer"
./usr/local/share/doc/
./usr/local/share/examples/
./usr/local/share/phpmailer
./usr/local/www/glpi/lib/
./usr/ports/mail/phpmailer
./usr/home/hd1/apps/GLPI/glpi-
./usr/home/hd1/apps/GLPI/glpi-
alpha#
Vamos a ver los examples...
# ls /usr/local/share/examples/
contents.html pop3_before_smtp_test.php
test_sendmail.php
images test_gmail.php test_smtp.php
index.html test_mail.php
alpha#
Supongo que este port /usr/ports/security/php5-
lo mismo para PHP con OpenSSL
Instalandolo:
# cd /usr/ports/security/php5-
# make install clean
...
Libraries have been installed in:
/usr/ports/security/php5-
FreeBSD + Samba + ClamAV
Tener instalado y funcionando FreeBSD
Tener instalado y funcionando Samba 3.0
Instrucciones:
Instalar el port clamav
# cd /usr/ports/security/clamav
# make install clean
Editar el archivo de configuracion
# edit /usr/local/etc/clamd.conf
Y cambiar las lineas:
LocalSocket /var/run/clamav/clamd.sock
por
LocalSocket /var/run/clamav/clamd
User vscan
por
User vscan root
Instalar el port sama-vscan
# cd /usr/ports/security/samba-vscan
# make install clean
Editar el archivo de configuracion
# edit /usr/local/etc/samba-vscan/vscan-clamav.conf
Y cambiar las lineas:
infected file action = nothing
por
infected file action = quarantine
quarantine directory = /tmp
por
quarantine directory = /usr/home/hd1/infected
Cargar el clamav al iniciar el sistema con unas lineas en /etc/rc.conf
# Activamos ClamAV (antivirus para Samba)
clamav_freshclam_enable="YES"
clamav_clamd_enable="YES"
Activar en le archivo de samba el escaneo
# edit /usr/local/etc/smb.conf
Y colocar en los shares que queramos las siguientes lineas:
# Antivirus ClamAV + Samba-vscan y recycle
vfs objects = vscan-clamav
vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf
Re-iniciar samba
# /usr/local/etc/rc.d/samba restart
Para probar que funciona clamav, se pueden bajar unos archivos supuestamente infectados de
http://svn.clamav.net/svn/clamav-devel/trunk/contrib/test/
y tratar de compiarlos en uno de los shares protejidos
Nota:
samba-vscam solo funciona con samba 3.0, con las versiones superiores, como 3.3 ó 3.4 no funciona.
sábado, mayo 02, 2009
FreeBSD + vsftpd standalone
# cd /usr/ports/ftp/vsftpd
# make install clean
2) En el archivo /etc/rc.conf agregar las lineas:
# Activamos vsftpd en modo "standalone" mode (osea, sin inetd)
vsftpd_enable="YES"
3) Editar o crear el archivo /usr/local/etc/vsftpd.conf
# edit /usr/local/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Bienvenido al servidor FTP de Telemedellin.
chroot_local_user=YES
secure_chroot_dir=/usr/local/share/vsftpd/empty
listen=YES
background=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=49152
pasv_max_port=65535
4) Editar o crear el archivo /usr/local/etc/rc.d/vsftpd con este contenido:
datos del script tomados de aqui5) Darle permisos de ejecucion
# edit /usr/local/etc/rc.d/vsftpd
#!/bin/sh
#
# $FreeBSD: ports/ftp/vsftpd/files/vsftpd.sh.in,v 1.7 2006/02/20 20:47:01 dougb Exp $
#
# PROVIDE: vsftpd
# REQUIRE: DAEMON
# Add the following line to /etc/rc.conf to enable `vsftpd':
#
# vsftpd_enable="YES"
# vsftpd_flags="/some/path/conf.file" # Not required
#
. "/etc/rc.subr"
name="vsftpd"
rcvar=`set_rcvar`
load_rc_config "$name"
: ${vsftpd_enable:="NO"}
: ${vsftpd_flags:=""}
command="/usr/local/libexec/$name"
required_files="/usr/local/etc/$name.conf"
start_precmd="vsftpd_check"
vsftpd_check()
{
if grep -q "^ftp[ ]" /etc/inetd.conf ${required_files}
then
err 1 "ftp is already activated in /etc/inetd.conf"
fi
if ! egrep -q -i -E "^listen.*=.*YES$" ${required_files}
then
err 1 "vsftpd script need "listen=YES" on config file"
fi
if ! egrep -q -i -E "^background.*=.*YES$" ${required_files}
then
err 1 "vsftpd script need "background=YES" on config file"
fi
}
run_rc_command "$1"
# chmod +x /usr/local/etc/rc.d/vsftpd
6) Iniciarlo manualmente
# /usr/local/etc/rc.d/vsftpd start
Starting vsftpd.
7) Para verificar que esta corriendo
# /usr/local/etc/rc.d/vsftpd status
vsftpd is running as pid 1428.
miércoles, marzo 18, 2009
FreeBSD 7.1 + RAID0 - Striping
Informacion de los discos
6 HITACHI de 1TB SATA II
La organizacion
/dev/ad0 de 1TB FreeBSD 7.1 amd64
/ 1G
swap 4G
/var 4G
/tmp 1G
/usr 20G
/home 873G
5 SATAs 1TB cada uno para el raid0 por sofware
/dev/ad1
/dev/ad2
/dev/ad3
/dev/ad10
/dev/ad8
1) Instalar FreeBSD 7.1
(ya sabemos como, asi que no lo explicare, solo decir que se instala lo basico [X] 6 Kernel deve...)
2) Configurar los discos
Segun el manual http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/geom-striping.html
Solo modifico unas cosas en mi caso
Creating a stripe of unformatted ATA disks
-
Load the geom_stripe.ko module:
# kldload geom_stripe
-
Ensure that a suitable mount point exists. If this volume will become a root partition, then temporarily use another mount point such as /mnt:
# mkdir /mnt
-
Determine the device names for the disks which will be striped, and create the new stripe device. For example, to stripe two unused and unpartitioned ATA disks, for example /dev/ad2 and /dev/ad3:
# gstripe label -v st0 /dev/ad1 /dev/ad2 /dev/ad3 /dev/ad10 /dev/ad8
Metadata value stored on /dev/ad1.
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Metadata value stored on /dev/ad10.
Metadata value stored on /dev/ad8.
Done. -
Write a standard label, also known as a partition table, on the new volume and install the default bootstrap code:
(Esta parte la omito, ya que bsdlabel no trabaja con mas de 4TB)
# bsdlabel -wB /dev/stripe/st0 -
This process should have created two other devices in the /dev/stripe directory in addition to the st0 device. Those include st0a and st0c. At this point a file system may be created on the st0a device with the newfs utility:
(Como omiti bsdlabel, el siguiente comando es sin la a al final)
# newfs -U /dev/stripe/st0Many numbers will glide across the screen, and after a few seconds, the process will be complete. The volume has been created and is ready to be mounted.
To manually mount the created disk stripe:
# mount /dev/stripe/st0 /mnt
To mount this striped file system automatically during the boot process, place the volume information in /etc/fstab file. For this purpose, a permanent mount point, named stripe, is created:
# mkdir /home/stripe
# echo "/dev/stripe/st0 /stripe ufs rw 2 2" \
>> /etc/fstab
The geom_stripe.ko module must also be automatically loaded during system initialization, by adding a line to /boot/loader.conf:
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf
Update:
Si queremos hacer RAID0 con ZFS...
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/filesystems-zfs.html
http://wiki.freebsd.org/ZFSQuickStartGuide
(desmontar el stripe)
# umount /stripe
(deshacer el stripe)
# gstripe unload /dev/stripe/st0
# gstripe clear -v /dev/ad1
# gstripe clear -v /dev/ad2
# gstripe clear -v /dev/ad3
# gstripe clear -v /dev/ad6
# gstripe clear -v /dev/ad8
(quitar la linea del fstab)
#/dev/stripe/st0 /stripe ufs rw 2 2
20.2.2.1 Single Disk Pool
# zpool create tank ad1 ad2 ad3 ad6 ad8
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 989M 419M 491M 46% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 873G 40K 803G 0% /home
/dev/ad0s1e 989M 12K 910M 0% /tmp
/dev/ad0s1f 19G 2.3G 16G 13% /usr
/dev/ad0s1d 3.9G 34M 3.5G 1% /var
tank 4.5T 128K 4.5T 0% /tank
# zfs create tank/data
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 989M 419M 491M 46% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 873G 40K 803G 0% /home
/dev/ad0s1e 989M 12K 910M 0% /tmp
/dev/ad0s1f 19G 2.3G 16G 13% /usr
/dev/ad0s1d 3.9G 34M 3.5G 1% /var
tank 4.5T 128K 4.5T 0% /tank
tank/data 4.5T 128K 4.5T 0% /tank/data
(para eliminar el ZFS)
# zfs destroy /tank/data
(para eliminar el pool)
# zpool destroy /tank
Nota con ZFS tambien se puede hacer un RAID5 (lo denomina "raidz")
Para RAID5
# zpool create storage raidz ad1 ad2 ad3 ad6 ad8
En este caso la unidad sera mas pequeña
bueno, parece que todo quedo listo...
jueves, marzo 05, 2009
FreeBSD 7.1 + Firewall + Internet para nuestra LAN
Instalaremos un servidor para dar salida a Internet a los usuarios de la LAN, implementaremos un firewall para controlar lo que sale o entra a nuestra LAN y los pondremos a salir por Squid-cache como proxy para controlar la navegacion.
Ultima actualizacion:
(DD-MM-AAA) 27-10-2009
Contenido:
Instalaremos FreeBSD 7.2
Activaremos un Firewall
Daremos salida a Internet
Configuraremos Squid-cache como proxy para optimizar y controlar la navegacion
Requerimientos:
1 Real server o en su caso, un buen PC
2 Tarjetas de red para para el equipo que compartira la salida a Internet
Diagrama de la configuracion:
Internet---Router---bge0-[FreeBSD]-bge1---Suiche---LAN
Proceso:
1) Instalar FreeBSD 7.1 (en mi caso como el procesador es un Intel Xeon con soporte para 64bits, instalare la version de FreeBSD 7.2 amd64 que se puede bajar de la web www.freebsd.org)
Se inicia con el cd-rom, se siguen unas instrucciones en pantalla, se usa todo el disco, se particiona por defecto y se instala solo lo basico
[X] 6 Kern-Developer Full binaries and doc, kernel sources only
En el proceso de instalacion se debe poner atencion en los nombres de las tarjetas que se muestran en la instalacion, por ejemplo: bge0 y bge1 , ya que luego se debera activar la segunda (la primera nos permite configurarla en el momento de la instalacion)
2) Actualizar nuestro FreeBSD
En el pasado lo hacia de otra forma, pero en este lugar encontre una forma mas facil
http://www.sarckz.com.ar/2009/01/06/freebsd-71-guia-de-instalacion/
Y la pondre aqui igualmente (seria una lastima perderla)
Copiamos al directorio de root 2 archivos importantes
# cp /usr/share/examples/cvsup/stable-supfile .
# cp /usr/share/examples/cvsup/ports-supfile .
Luego los editamos para especificar de donde puede bajar las cosas
# edit /root/stable-supfile
Modificamos una linea para que quede asi:
*default host=cvsup.de.freebsd.org
Guardamos los cambios y salimos del editor
# edit /root/ports-supfile
Modificamos una linea para que quede asi (manteniendonos en 7.2):
*default host=cvsup10.us.FreeBSD.org
*default release=cvs tag=RELENG_7_2
Guardamos los cambios y salimos del editor
Actualizamos (kernel+base)
# csup -g -L 2 /root/stable-supfile
Descargamos/Actualizamos el arbol de ports con el supfile antes creado:
(el arbol de ports es el sistema para instalar aplicaciones)
# csup -g -L 2 /root/ports-supfile
Compilar un KERNEL personalizado para que tenga soporte para algunas cositas
Segun nuestro querido HANDBOOK
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html
Seguimos los pasos
(como estamos usando FreeBSD 7.1 amd64)
# cd /usr/src/sys/amd64/conf
(o en caso de que usaramos FreeBSD 7.1 i386)
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
Es bueno darle una leida a UPDATING, pues tiene informacion importante
# edit /usr/src/UPDATING
Salimos del editor y continuamos
Editamos el archivo MYKERNEL en el cual especificamos que nuevas opciones queremos
# edit /root/kernels/MYKERNEL
Al final le ponemos estas lineas:
# Nuevas opciones
# 30.4 The OpenBSD Packet Filter (PF) and ALTQ
# 30.4.6 Enabling ALTQ
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
Guardamos y salimos del editor
(segun el handbook, seguir estos pasos)
Building a Kernel
-
Change to the /usr/src directory:
# cd /usr/src
-
Compile the kernel:
# make buildkernel KERNCONF=MYKERNEL
-
Install the new kernel:
# make installkernel KERNCONF=MYKERNEL
Re-iniciar el equipo
# shutdown -r now
Al entrar nuevamente deberemos tener funcionando el nuevo kernel, para verificar
# uname -a
FreeBSD alpha.company.com 7.2-RELEASE-p2 FreeBSD 7.2-RELEASE-p2 #2: Sat Jul 4 12:17:17 COT 2009 angel@alpha.company.com:/usr/obj/usr/src/sys/MYKERNEL amd64
3) Activar la segunda tarjeta de red (ya que en la instalacion, solo activamos la primera)
(como en la instalacion anotamos el nombre de las tarjetas detectadas, ya sabemos el nombre de la segunda segun FreeBSD, que en mi caso es bge1)
# edit /etc/rc.conf
defaultrouter="192.168.0.1"
hostname="alpha.company.com"
ifconfig_bge0="inet 192.168.0.1 netmask 255.255.255.0"
sshd_enable="YES"
# Segunda tarjeta
ifconfig_bge1="inet 192.168.1.1 netmask 255.255.255.0"
Guardar y salir
Re-iniciar el equipo
# shutdown -r now
Al entrar nuevamente, debemos tener 2 tarjetas levantadas, para verificar
(se mostrara algo como esto)
alpha# ifconfig
bge0: flags=8843
options=9b
ether 00:13:21:e9:dc:0e
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (100baseTX
status: active
bge1: flags=8843
options=9b
ether 00:13:21:c8:fd:c2
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (1000baseTX
status: active
4) Compartir el Internet con la LAN
(Se supone que ya tenemos internet en nuestro FreeBSD 7.1 de modo que lo podemos compartir)
Editamos este archivo y le agregamos estas lineas al final
# edit /etc/rc.conf
# Activamos OpenBSD Packet Filter (PF)
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup
gateway_enable="YES" # Enable as LAN gateway (PF)
5) Generar nuestro archivo de politicas del firewall (que es el que compartira el Internet)
Aqui toca leer un poco el manual oficial de PF, que se puede ver aqui
http://www.openbsd.org/faq/pf/
Un ejemplo basico para una red pequena
http://www.openbsd.org/faq/pf/example1.html
Aqui el que yo tengo que puedes adaptar segun tus necesidades (muy completo y bien explidado)
http://alpha.telemedellin.tv/public/pf.conf
El archivo con las reglas es /etc/pf.conf
Ya con nuestro archivo creado re-iniciamos el servidor y los equipos de la LAN deben navegar si tienen los datos correctos de IP, MASK, GATEWAY y DNS
Nota:
Si usas como ejemplo mi archivo pf.conf debes tener cuidado con estas lineas:
# mejor solo les permito ftp a algunos usuarios, por lo de los .exe y otros# rdr allow outgoing WWW requests to the squid, but not from LAN to my server
rdr pass on $eth_if1 proto tcp from $usuarios_ftp to !$eth_if1 port ftp \
-> 127.0.0.1 port 8021
rdr pass on $eth_if1 proto tcp from any to !$eth_if1 port www \
-> 127.0.0.1 port 3128
Esto ya que la primera hace una redireccion para las conexiones FTP a un proxy llamado pftpx y la segunda hace igualmente una redireccion para las conexiones WWW a un proxy llamado Squid-chache
Tanto pftpx como Squid-cache, se pueden instalar mediante los ports asi:
Istalando PFTPX
# cd /usr/ports/ftp/pftpx
# make install clean
Activandolo al iniciar el sistema, poner esta linea en /etc/rc.conf
# Activamos pel pftpx proxy
pftpx_enable="YES"
Iniciar pftpx
# /usr/local/etc/rc.d/pftpx start
Instalando Squid-chache
# cd /usr/ports/www/squid30
# make install clean
Activandolo al iniciar el sistema, poner esta linea en /etc/rc.conf
# Activamos el Squid para cachear y controlar la navegacion WWW
squid_enable="YES"
Iniciar el directorio donde se cacheara el contenido de Squid
# /usr/local/sbin/squid -z
Iniciar Squid
# /usr/local/etc/rc.d/squid start
Squid es todo un mundo, hay infinidad de cosas que se pueden hacer o bloquear, aqui
el que actualmente uso y con el cual torturo a los usuarios de mi LAN ;-)
http://alpha.telemedellin.tv/public/squid.conf
Aqui un manual mas explicativo de como poner a funcionar Squid con mas detalle
http://www.freebsddiary.org/squid.php
NOTA 2:
En mi archivo squid.conf se navega libremente con Firefox, Opera, y todos los otros
buenos navegadores. Con el Internet Explorer solo les dejo navegar en algunos sitios
mal construidos y que solo funcionan con ese navegador.
Igualmente mi squid.conf hace referencias a algunos archivos como:
/usr/local/etc/squid/deny_sites.conf
# ejemplo de contenido:
playboy.com
usr/local/etc/squid/sites_hours.conf
# ejemplo de contenido:
facebook.com
/usr/local/etc/squid/msn_overhttp.conf
# ejemplo de contenido:
msnmessenger.com
/usr/local/etc/squid/msn_domains.conf
# ejemplo de contenido:
gateway.messenger.hotmail.com
/usr/local/etc/squid/accept_domains.conf
# ejemplo de contenido:
.grupoaval.com
/usr/local/etc/squid/accept_domains_system.conf
# ejemplo de contenido:
.microsoft.com
.windowsupdate.com
.windowsmedia.com
.mcafee.com
.nai.com
.mcafeeasap.com
/usr/local/etc/squid/FreeDB.conf
# ejemplo de contenido
freedb.org
cddb.com
music-city.org
allmediaguide.com
allmediaguide.com/lasso
allmusic.com
musicbrainz.org
microsoft.com
windowsmedia.com
Nota:
Recientemente al mirar los log de cache de squid
# tail -f /usr/local/squid/logs/cache.log
2009/09/15 11:58:48| clientNatLookup: PF open failed: (13) Permission denied
Para solucionar esto, debemos modificar el archivo /etc/devfs.conf
# edit /etc/devfs.conf
y agregar esta linea al final:
# Le doy permiso a squid en /dev/pf
own pf root:squid
perm pf 0640