#!/bin/bash
#
#  port(fw) v1.0 , < by neuronal@2500hz.net >
# --------------------------------------------
#                                   02/10/2002
#
# Script casero util para realizar redirecciones de conexiones entrantes
# a tu host. Semiautomatiza el uso de la funcion 'portfw'  de  ipmasqadm
# mediante las asignaciones de puertos redirigidos hacia aquellos  hosts
# que tu elijas.
#
# Requisitos de uso:
# - El script esta pensado para su manejo en sistemas con nucleos 2.2.X.
# - Se vale de ipchains+ipmasqadm.
# - Se ha de usar en conexiones enmascaradas.
# - Se ha de tener el kernel compilado con las siguientes opciones:
#     CONFIG_EXPERIMENTAL=y
#     CONFIG_IP_MASQUERADE=y
#     CONFIG_IP_MASQUERADE_MOD=y
#     CONFIG_IP_MASQUERADE_IPAUTOFW=y/m
#     CONFIG_IP_MASQUERADE_IPPORTFW=y/m
#     CONFIG_IP_MASQUERADE_MFW=y/m
#
#
# @_2500Hz Labs
# http://www.2500hz.net/
# ##
#
 
version="1.0"
 
portfw_info() {
echo
echo -e "--------------------------------------------------------"
echo -e " port\033[1;37m(\033[0mfw\033[1;37m)\033[0m v$version , by neuronal@2500hz.net (@_2500Hz Labs)"
echo -e "--------------------------------------------------------"
}
 
portfw_stop() {
	/usr/sbin/ipmasqadm portfw -f
}
 
portfw_start() {
	portfw_info
	portfw_stop
	printf "Indique interfaz de red de la que quiere extraer su IP -> "
	read interfaz
	ip_origen=`ifconfig $interfaz|grep "inet addr"|cut -f 2 -d:|awk '{print $1}'`
	printf "Indique el puerto local que desea redirigir            -> "
        read puerto
        printf "Indique el IP/HOST de destino                          -> "
        read ip_destino
        /usr/sbin/ipmasqadm portfw -a -P tcp -L $ip_origen $puerto -R $ip_destino $puerto
        portfw_condicion
        bucle="s"
        while [ "$bucle" = "$respuesta" ]
        do
                portfw_condicion
        done
}
 
portfw_condicion() {
        echo
        printf "¿Desea redirigir algun otro puerto? [s/n]              -> "
        read respuesta
        condicion="s"
        if [ "$condicion" = "$respuesta" ]
	then
                printf "Indique el puerto local que desea redirigir            -> "
                read puerto
                printf "Indique el IP/HOST de destino                          -> "
                read ip_destino
                /usr/sbin/ipmasqadm portfw -a -P tcp -L $ip_origen $puerto -R $ip_destino $puerto
        else
		echo
		exit 1
        fi
}
 
portfw_static() {
# 
# Uso de la funcion(static) --------------------------------------------
# Esta funcion es la mas util de todas y, por tanto, deberia de  ser  la
# mas utilizada. Con ella conseguimos que la redireccion de puertos  sea
# totalmente automatica.
# Antes de usar 'static' SE DEBE EDITAR EL VALOR DE DE LAS VARIABLES QUE
# LA FUNCION UTILIZARA. Si no hace este  paso  previo  (y obligado),  el
# script  utilizara  los  valores  que  tiene  asignados  por   defecto.
# Seguramente estos valores no coincidan con los que desea.
#
# definicion de variables locales - [ REVISAR Y EDITAR SI ES NECESARIO ]
IFACE="ppp0"         # interfaz de red
LPORT1="21"          # puerto local
RHOST1="192.168.0.2" # host destino
 
# Mas variables por si queremos redirigir mas de un puerto.
LPORT2="80"          # SEGUNDO puerto local
RHOST2="192.168.0.3" # SEGUNDO host destino
 
#LPORT3=""
#RHOST3=""
 
#LPORT4=""
#RHOST4=""
#
mi_ip=`ifconfig $IFACE|grep "inet addr"|cut -f 2 -d:|awk '{print $1}'`
# definicion de reglas para ipmasqadm
/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT1 -R $RHOST1 $LPORT1
/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT2 -R $RHOST2 $LPORT2
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT3 -R $RHOST3 $LPORT3
#/usr/sbin/ipmasqadm portfw -a -P tcp -L $mi_ip $LPORT4 -R $RHOST4 $LPORT4
}
 
case "$1" in
  'start')
	portfw_start
	;;
  'stop')
        portfw_stop
	;;
  'restart')
	portfw_stop
	portfw_start
	;;
  'static')
	portfw_stop
	portfw_static
	;;
  'state')
	portfw_info
	echo
	/usr/sbin/ipmasqadm portfw -l
	echo
	;;
  *)
	portfw_info
	echo -e " Uso: `basename $0` start\033[1;37m|\033[0mstop\033[1;37m|\033[0mrestart\033[1;37m|\033[0mstatic\033[1;37m|\033[0mstate"
	echo
esac
#
## @_2500Hz Labs , http://www.2500hz,net/ ##
 
codigo/bash/portfw.txt · Última modificación: 2006/12/08 22:39 (editor externo)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki