--------------------------------------------------------------------------------------------------------------
Christian
Conejero > christian@debian-potato.com.ar
Versión: 1, Abril 2003
Esta
guía rápida explica cómo instalar y configurar Iptables con soporte H323. Se
basa en la distribución Debian Sarge (testing). Cualquier comentario será
bienvenido. Esta guía se distribuye SIN NINGUNA GARANTIA. No me responsabilizo
de los posibles problemas que conlleve el ejecutar todos los pasos que se
describen. Esta guía se distribuye bajo licencia GPL ( http://www.gnu.org/
). La última versión
de esta guía siempre estará disponible en http://www.debian-potato.com.ar/doc/
2. ¿Dónde está el sitio Web oficial y la
lista? 2
3 ¿Qué es Network Address Translation? 2
3.2 Razones para usar NEWNAT 3
3.3 Puesta al día rápida con respecto a
los núcleos 2.0 y 2.2 4
6 Agradecimientos y comentario 20
Bienvenido,
gentil lector
Está a
punto de sumergirse en el fascinante (y a veces horrendo) mundo del NEWNAT
(N.A.T. = Network Address Translation), y esto es una guía más o menos precisa
para el núcleo 2.4.16 de Linux.
En
Linux 2.4.X, se ha introducido una infraestructura para trastear con los
paquetes, llamada «netfilter». Hay una capa por encima que proporciona NAT,
completamente rescrita con respecto a anteriores núcleos.
Sarge
(Testing), pero es totalmente válido para otras versiones de Debian, incluso
para otras distribuciones de Linux.
Sitios
oficial:
http://www.netfilter.org (Iptables y Newnat)
La
lista oficial de correo de netfilter está en el servidor de listas de Samba: http://lists.samba.org/
Normalmente,
los paquetes viajan en una red desde su origen (por ejemplo su ordenador) a su
destino (como por ejemplo www.kernel.org) a través de varios enlaces
diferentes: unos 19 desde donde yo estoy en Australia (esto lo dice Rusty,
claro). Ninguno de estos enlaces altera realmente el paquete: simplemente lo
envían un paso adelante.
Si uno
de estos enlaces hiciera NAT, podría alterar el origen o destino del paquete
según pasa a través suyo. Como puede imaginar, ésta no es la función para la
que se diseñó el sistema, y por tanto NAT es siempre un tanto enrevesado.
Normalmente, el enlace que esté haciendo NAT recordará cómo jugueteó con el
paquete, para hacer la acción inversa con el paquete de respuesta, de manera
que todo funciona como se esperaba.
El estándar H.323 proporciona la base para la
transmisión de voz, datos y vídeo sobre redes no orientadas a conexión y que no
ofrecen un grado de calidad del servicio, como son las basadas en IP, de manera
tal que las aplicaciones y productos puedan ínter operar, permitiendo la
comunicación entre los usuarios sin que éstos se preocupen por la
compatibilidad de sus sistemas. La LAN sobre la que los terminales H.323 se
comunican puede ser un simple segmento o un anillo, o múltiples segmentos con
una topología compleja, lo que puede resultar en un grado variable de
rendimiento.
H.323 fija los estándares para la comunicación de
voz y vídeo sobre redes de área local, con cualquier protocolo que por su
propia naturaleza presentan una gran latencia y no garantizan una determinada
calidad del servicio (QoS). Para la conferencia de datos se apoya en la norma
T.120, con lo que en conjunto soporta las aplicaciones multimedia. Los
terminales y equipos conforme a H.323 pueden tratar voz en tiempo real, datos y
vídeo.
El estándar contempla el control de la llamada,
gestión de la información y ancho de banda para una comunicación punto a punto
y multipunto, dentro de la LAN, así como define interfaces entre la LAN y otras
redes externas, como puede ser la RDSI. Es una parte de una serie de especificaciones
para videoconferencia sobre distintos tipos de redes, que incluyen desde la H.320 a la H.324, estas dos válidas para
RTB (Red Telefónica Básica) y RTC (Red Telefónica Conmutada), respectivamente.
H.323 establece los estándares para la compresión y
descompresión de audio y vídeo, asegurando que los equipos de distintos
fabricantes se entiendan. Así, los usuarios no se tienen que preocupar de cómo
el equipo receptor actúe, siempre y cuando cumpla este estándar. La gestión del
ancho de banda disponible para evitar que la LAN se colapse con la comunicación
de audio y vídeo, por ejemplo, limitando el número de conexiones simultáneas,
también está contemplada en el estándar.
La norma H.323 hace uso de los
procedimientos de señalización de los canales lógicos contenidos en la norma
H.245, en los que el contenido de cada uno de los canales se define cuando se
abre. Estos procedimientos se proporcionan para fijar las prestaciones del
emisor y receptor, el establecimiento de la llamada, intercambio de información,
terminación de la llamada y como se codifica y decodifica.
Cuando se origina una llamada
telefónica sobre Internet, los dos terminales deben negociar cual de los dos
ejerce el control, de manera tal que sólo uno de ellos origine los mensajes especiales
de control. Una cuestión importante es, como se ha dicho, que se deben
determinar las capacidades de los sistemas, de forma que no se permita la
transmisión de datos si no pueden ser gestionados por el receptor.
La comunicación bajo H.323 contempla las señales de
audio y vídeo. La señal de audio se digitaliza y se comprime bajo uno de los
algoritmos soportados, tales como el G.711 o G.723, y la señal de vídeo
(opcional) se trata con la norma H.261 o H.263. Los datos (opcional) se manejan
bajo el estándar T.120 que permite la compartición de aplicaciones en
conferencias punto a punto y multipunto. Una característica de la telefonía
sobre una LAN o Internet es que se permite la información de vídeo sobre la de
audio (videoconferencia), formateada de acuerdo con el estándar H.261 o H.263,
formando parte de la carga útil del paquete RTP. Dado que se envían sólo los
cambios entre cuadros resulta muy sensible a la pérdida de paquetes, lo que da
origen a la distorsión de la imagen recibida.
La
razón es muy simple esta guía esta armada para personas que necesitan
implementar H323 o RTP.
Les
dejo un links para que puedan profundizar en el tema.
http://greco.dit.upm.es/~david/TAR/trabajos2002/01-SIP-%20Diego-Acosta.pdf
Pido
mil disculpas a aquellas personas que buscan en esta guía encontrar información
de cómo poder implementar NAT, teniendo en cuenta que nos vamos a saltear
muchos pasos obvios de Iptables.
Acá
les dejo un link muy bueno que los pone al tanto de que es NAT y Iptables
http://www.insflug.org/COMOs/NAT-COMO/NAT-COMO.html
Lo siento por aquellos que todavía estén aturdidos por la
transición desde 2.0 (ipfwadm) a 2.2 (ipchains). Hay buenas y malas noticias.
Primero, puede seguir usando ipchains o ipfwadm como antes. Para
hacerlo, necesita cargar los módulos del núcleo «ipchains.o» o «ipfwadm.o» que
encontrará en la última distribución de netfilter. Son mutuamente exclusivos
(está advertido), y no deberían combinarse con ningún otro módulo de netfilter.
Una vez haya instalado uno de estos módulos puede utilizar
ipchains e ipfwadm con normalidad, excepto por las siguientes diferencias:
Kernel 2.4.16 (www.kernel.org)
iptables 1.2.6 a –5 (IP packet filter administration
tools for 2.4.4+ kernels)
newnat5-and-helpers-2.4.16.patch.gz
(http://roeder.goe.net/~koepi/newnat.html)
http://www.insflug.org/COMOs/NAT-COMO/NAT-COMO.html
http://www.linuxguruz.com/iptables/howto/2.4routing.html#toc18
http://iptables-tutorial.frozentux.net/
http://www.adj.idv.tw/server/linux_nat.htm
http://www.study-area.org/linux/system/linux_kernel.htm
http://www.kfki.hu/~kadlec/sw/netfilter/
http://www.tsmservices.com/masq/
http://www.iana.org/assignments/port-numbers
http://www.practicallynetworked.com/sharing/app_port_list.htm
1) Bajamos el kernel y lo guardamos
en cd /usr/src/
2) Descomprimimos el kernel /usr/src/#
tar Ixvf linux-2.4.16.tar.gz
3) Entramos
a la carpeta cd /usr/src/linux
4) aplicamos el patch de NEWNAT gzip
-cd newnat5-and-helpers-2.4.16.patch.gz | patch -p1 –E
5)
Nos
fijamos si estamos en la carpeta del kernel pwd
6) A
compilar make menuconfig
7) Y para los que no saben
como compilar un kernel les dejo unos links muy buenos
http://www.zonasiete.org/docs/locales/kernel_mini_howto/
http://grulla.hispalinux.es/articles/kernel.pdf
http://www.linuxfocus.org/Castellano/July2001/article209.shtml
http://documentos.glo.org.mx/?HOWTO=mini-quickcam
8)
Acá
les muestro para que puedan chaquear si el patch fue aplicado y lo pueden
instalar como modulo o estático, la compilación queda a gusto de cada usuario
y/o administrador.
1. Networking options --->
2. [*] Network packet filtering (replaces ipchains)
3. [*] TCP/IP networking
4. IP: Netfilter Configuration --->
5. <M> Connection tracking (required for masq/NAT)
6. <M> FTP protocol support
7. <M> talk protocol support
8. <M> H.323 (netmeeting) support
9. <M> IRC protocol support
9) Al
terminar de compilar ponemos make
dep && make clean && make bzImage && make modules
&& make modules_install
10) Copiamos el archivo System.map
(esta en /usr/src/linux/) y lo copiamos a la carpeta /Boot así System.map-2.4.16
Ejemplo: cp /usr/src/linux/System.map /boot/System.map-2.4.16
11) Copiamos el archivo bzImage
(esta en /usr/src/linux/ arch/i386/boot/) y lo copiamos a la carpeta /Boot así bzImage
Ejemplo: cp /usr/src/linux/arch/i386/boot/bzImage
/boot/bzImage-2.4.16
12) Chequeamos que estén los archivos
cd /boot y ls –l
13) Acá declaramos los cambios en el LILO
que se encuentre en /etc/lilo.conf lo editamos y ponemos lo siguiente
Descomentamos
las 2 líneas de abajo
prompt
timeout=100
Acá
es donde le decimos que kernel arrancar
default=linux-2416
Acá
declaramos el nuevo núcleo
image=/boot/bzImage
label=Linux-2416
read-only
# restricted
# alias=1
Salvamos
lo ingresado en el archivo lilo.conf y tipeamos el comando lilo
Ejemplo:
ns1:~#
lilo
Added Linux
Added Linux-2416 *
Skipping /vmlinuz.old
Esto
Added Linux-2416 * significa que lilo acepto los cambios
14) Ya esta hicimos todo, nos queda
solo añadir las reglas de iptables para NEWNAT en nuestro SCRIPT de NAT,
muestro ejemplos:
#! /bin/bash
EXTERNAL_IF=eth0
EXTERNAL_IP=64.116.229.30
PCA_HOST=192.168.1.4
$IPTABLES=/sbin/iptables
Mod='modprobe'
$Mod ip_tables
$Mod iptable_filter
$Mod ip_conntrack_h323
$Mod ip_nat_h323
logger -s "H323 Ports"
H323_PORTS="389 522 1503 1720 1731
8080"
for PORT in $H323_PORTS; do
$IPTABLES -t nat -A PREROUTING -i
$EXTERNAL_IF -p tcp -d $EXTERNAL_IP \
--dport $PORT -m state --state
NEW,ESTABLISHED,RELATED \
-j DNAT --to-destination $PCA_HOST -v
done
logger -s "H323 Ports"
H323_PORTS="389 522 1503 1720 1731
8080"
for PORT in $H323_PORTS; do
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL_IF
-p udp -d $EXTERNAL_IP \
--dport $PORT -m state --state
NEW,ESTABLISHED,RELATED \
-j DNAT --to-destination $PCA_HOST -v
done
#!
/bin/bash
$IP=/sbin/iptables
Mod='modprobe'
$Mod ip_tables
$Mod iptable_filter
$Mod ip_conntrack_h323
$Mod ip_nat_h323
#
Esto es para las
conexiones H.323 salientes.
$IP -A FORWARD -m state --state
RELATED,ESTABLISHED -j ACCEPT
$IP -A FORWARD -i eth0 -o eth1 -p tcp
--dport 1720 --syn -j ACCEPT
# Esto permite que las llamadas vayan del exterior a una dirección
interna
# No es necesario, si usted desea solamente hacer llamadas; no
recibirlas
$IP -t nat -A PREROUTING -i eth0 -d
64.116.229.30 -p tcp --dport 1720 --syn -j DNAT --to 192.168.1.4
$IP -A FORWARD -i eth0 -o eth1 -p tcp
--dport 1720 --syn -j ACCEPT
15) Seguro
que se pregunta como puede hacer si uso el programa ICQ, o si uso MSN o talvez
jugar al Quake……….. miren esto:
Active Worlds
IN TCP 3000
IN TCP 5670
IN TCP 7777
IN TCP 7000-7100
[0000]
Type=TCP
Translation=NORMAL
Port=5670
[0001]
Type=TCP
Translation=NORMAL
Port=7777
[0002]
Type=TCP
Translation=NORMAL
Port=7000-7100
[0003]
Type=TCP
Translation=NORMAL
Port=3000
AIM Talk
OUT TCP 4099
IN TCP 5190
Battlecom
IN UDP 2300 - 2400
IN TCP 2300 - 2400
IN UDP 47624
IN TCP 47624
Buddy Phone
(solamente comunicaciones. No FTP)
IN UDP 700 - 701
Calista IP phone
OUT
TCP 5190
IN UDP 3000
CuSeeMe
OUT UDP 24032
IN UDP 1414 [usa
H.323 protocolo si esta
habilitado]
IN UDP 1424 [usa
H.323 protocolo si esta
habilitado]
IN TCP 1503
IN TCP 1720 [usa
H.323 protocolo si esta
habilitado]
IN UDP
1812 1813
IN TCP 7640
IN TCP 7642
IN UDP 7648
IN TCP
7648
IN TCP
7649 7649
IN UDP
24032
IN UDP
56800
OUT UDP 1414 [usa
H.323 protocolo si esta
habilitado]
OUT UDP 1424 [usa
H.323 protocolo si esta
habilitado]
OUT TCP 1503
OUT TCP 1720 [usa
H.323 protocolo si esta
habilitado]
OUT UDP 1812 1813
OUT TCP 7640
OUT TCP 7642
OUT UDP 7648
OUT TCP 7648
OUT TCP 7649
OUT UDP 56800
Delta Three PC to Phone
IN TCP 12053 [usa el
protocolo del CuSeeMe
si esta habilitado]
IN TCP 12083
IN UDP 12080
IN UDP 12120
IN UDP 12122
IN UDP 24150 - 24179
Dialpad
OUT
TCP 7175
IN UDP
51200 51201
IN TCP
51210
IN TCP
1584 1585
OUT TCP 8680
8686
Dwyco Video Conferencing
IN UDP
12000 - 16090
IN TCP
1024 - 5000
IN TCP
6700 - 6702
IN TCP
6880
Go2Call
IN UDP
2090 2091
IN TCP
2090
H.323 compliant video player,
NetMeeting 2.0, 3.0, Intel Video Phone
(Llamadas en camino no es posible por que usa
NetMeeting asignación de puertos automáticamente.)
OUT TCP 1720
IN UDP
1024 65534 [usa H.323 protocolo si esta habilitado]
OUT UDP 1024
65534 [usa H.323 protocolo si esta habilitado]
IN TCP
1024 1502 [usa H.323 protocolo si esta habilitado]
OUT TCP 1024
1502 [usa H.323 protocolo si esta habilitado]
IN TCP
1504 1730 [usa H.323 protocolo si esta habilitado]
OUT TCP 1504
1730 [usa H.323 protocolo si esta habilitado]
IN TCP
1732 65534 [usa H.323 protocolo si esta habilitado]
OUT TCP 1732
65534 [usa H.323 protocolo si esta habilitado]
OUT TCP 1503
1503
OUT TCP 1731
1731
IN TCP
1503 1503
IN TCP
1731 1731
Hotline Server
IN TCP 5500 -
5503
IN UDP 5499
Los puertos TCP habilitados son 5500 -
5503 (Esto es para los estándar 5500
puerto Hotline)
Si ud. Cambia los puertos por defecto, después ud. Debe habilitar estos 3
puertos (también si elige el puerto 4000, después debe habilitar los puertos
4000 al 4003)
ICQ
En las preferencias del ICQ "Preferences & security",
"Preferences" haga click en
Connections, y en "I am
behind a firewall or proxy"
después un click en "Firewall Settings". Y seleccione "I
don't have a SOCKS Proxy server on my firewall" y/o "I am using
another Proxy server". Click en siguiente “Next”. Click en "Use
the following TCP listen ports for incoming event" y seleccione puertos
TCP desde 20000 al 20019 para el primer usuario, 20020 al 20039 para el segundo
usuario, 20040 al 20059 para el tercero, etc.
OUT
UDP 4000
IN TCP 20000 20019 (para
el primer usuario)
OR
IN TCP 20000 20039 (para
dos usuarios)
OR
IN TCP 20000 20059 (para
tres usuario, etc.)
ICUII Client
OUT TCP 2019
IN TCP 2000 2038
IN TCP 2050 2051
IN TCP 2069
IN TCP 2085
IN TCP 3010 3030
OUT TCP 2000 2038
OUT TCP 2050 2051
OUT TCP 2069
OUT TCP 2085
OUT TCP 3010 3030
ICUII Client (Version 4.xx)
IN TCP 1024 - 5000
IN TCP 2000 - 2038
IN TCP 2050 - 2051
IN TCP 2069
IN TCP 2085
IN TCP 3010 - 3030
IN TCP 6700 - 6702
IN TCP 6880
IN UDP 12000 - 16090
Internet Phone
OUT UDP 22555
Ivisit
IN UDP 9943
IN UDP 56768
LIVvE
(Para mandar mensajes de Pager solamente)
IN UDP 8999
mIRC DCC / IRC DCC
[mIRC Proxy/Firewall Help page]
IN TCP 1024 - 5000
mIRC Chat
(El puerto usual del IRC es el 6667)
IN TCP 6660 - 6669
mIRC IDENT
IN UDP 113
MSN Messenger
NOTA: Apague cualquier programa personal de
firewall como alguno de estos BlackIce, ZoneAlarm, etc.
Ports 6891-6900 habilitar para el intercambio de archivos,
Port 6901 es para la comunicaciones de voz.
IN TCP
6891 - 6900
IN TCP
1863
IN UDP 1863
IN UDP 5190
IN UDP 6901
IN TCP 6901
Net2Phone
OUT UDP 6801 al 6803
IN UDP 6801 al 6803
IN/OUT UDP/TCP 30000
Pal Talk
IN UDP 2090 [voz]
IN UDP 2091 [Control]
IN TCP 2090 [transferencia de
archivos]
IN TCP 2091 [escucha de video]
IN TCP 2095 [transferencia de
archivos – viejas versiones]
OUT TCP 5001 - 50015 [mensajes de texto]
OUT TCP 8200 - 8700 [Firewall / network mode group voice]
OUT UDP 8200 - 8700 [Firewall / network mode group voice]
OUT UDP 1025 - 2500
PhoneFree
IN UDP
1034 - 1035
IN UDP
9900 - 9901
IN TCP
1034 - 1035
IN TCP
2644
IN TCP
8000
Para llamada entrantes
8000 TCP Server access
1034 UDP Voice in/out
1035 TCP Voice in/out
2644 TCP Personal Communication Center
9900-9901 UDP.
Polycom ViaVideo H.323
IN
TCP 3230 - 3235
IN UDP
3230 - 3235
NOTE: Ud. Necesita habilitar estos puertos para
llamar a fuera.
También habilite en ViaVideo (en el H.323 QoS) 'que use puertos' 3230-3235 TCP
y UDP
Roger Wilco
IN TCP 3782
IN UDP 3782
IN UDP 3783
Speak Freely
IN UDP
2074 - 2076
Yahoo Messenger Chat
IN TCP
5000 - 5001
Yahoo Messenger Phone
IN UDP
5055
Camerades
IN TCP 2047 2048
IN UDP 2047 2048
GNUtella
IN TCP 6346
IN UDP 6346
IStreamVideo2HP
IN
TCP 8076 - 8077
IN UDP 8076 - 8077
KaZaA
IN TCP 1214
Napster
OUT TCP 6699
IN TCP 6699
QuickTime 4 Server
IN TCP 6970
IN UDP 6970 - 7000
QuickTime 4 Client & RealAudio on Port
554
OUT TCP 554
IN UDP
6970 - 32000
RealAudio on Port 7070
OUT TCP 7070
IN UDP
6970 - 7170
ShoutCast Server
IN
TCP 8000 - 8005
Aliens vs. Predator
IN UDP 80
IN UDP 2300 - 2400
IN UDP 8000 - 8999
Anarchy Online (BETA)
IN TCP 7013
IN TCP 7500 - 7501
IN UDP 7013
IN UDP 7500 - 7501
Asheron's Call [support page] [mapping info]
OUT UDP 9000, 9004, 9008, 9012
IN UDP 9000, 9001, 9004, 9005, 9012, 9013
NOTE: Ud puede necesitar el MSN Game Zone y puertosDX.
Black and White
IN TCP 2611
- 2612
IN TCP 6667
IN UDP 6500
IN UDP 27900
Blizzard Battlenet
IN TCP/UDP
4000
IN TCP/UDP 6112
Bungie.net, Myth, Myth II Server
IN TCP 3453
Dark Reign 2
IN TCP
26214
IN UDP 26214
Delta Force (Cliente & Server)
OUT
UDP 3568
IN TCP
3100 3999
OUT TCP 3100
3999
IN UDP
3100 3999
OUT UDP 3100
3999
Delta Force 2
IN UDP 3568
IN UDP 3569