REDIRECIONAMIENTO NAT


Configuración avanzada puertos NAT

1. Introducción

Este documento tiene como objeto estudiar el funcionamiento de NAT y analizar el problema que presentan determinados protocolos con su uso. Posteriormente se presenta una lista de aplicaciones que se basan en protocolos problemáticos y que necesitan un soporte específico. Por último se recogen los puertos que son necesarios abrir y direccionar en los routers para que cada puesto de la red local tenga acceso a la aplicación
que esté usando.

2. Origen y funcionamiento del NAT

- Introducción teórica para comprender la técnica DEL nat.

Tradicionalmente cada equipo conectado a una red IP ha necesitado una dirección exclusiva para poder ser identificado. La longitud de las direcciones IP utilizadas actualmente es de 32 bits, por lo que teóricamente hay más de 4.000 millones de direcciones posibles; es decir, se podrían conectar a Internet hasta este número de equipos diferentes. Debido a la forma de asignar las direcciones, muchas se pierden y no se pueden utilizar, por lo que con el paso del tiempo y el crecimiento de Internet, las direcciones se han convertido en un recurso escaso. Por todo ello surge la necesidad de desarrollar técnicas que permitan hacer un mejor aprovechamiento del espacio de direccionamiento, hasta que se implante la siguiente versión del protocolo IP (IPv6), que solucionará el problema de la limitación de direcciones, además de mejorar otros aspectos técnicos como en enrutamiento y la autoconfiguración.

Una de las técnicas que pretenden solucionar este problema es NAT (Network Address Translation), que permite conectar varios PCs de una misma subred a Internet, utilizando únicamente una dirección IP pública para ello. NAT se aprovecha de las características de TCP/IP, que permiten a un PC mantener varias conexiones simultáneas con un mismo servidor remoto. Esto es posible gracias a los campos de las cabeceras que definen unívocamente cada conexión, estos son: dirección origen, puerto origen, dirección destino y puerto destino. Las direcciones identifican los equipos de cada extremo y los puertos cada conexión entre ellos.

Como sólo queremos utilizar una dirección pública, ésta se asigna al equipo que implementa NAT (de ahora en adelante router), mientras que los ordenadores de la subred poseen direcciones privadas estas últimas sólo son válidas para identificar al ordenador en el ámbito de la subred. El router multiplexa el tráfico de la subred y lo presenta a Internet como si hubiera sido generado todo por una misma máquina. Esto se consigue sustituyendo cada dirección origen privada de las cabeceras de los paquetes IP por la dirección pública, por lo tanto todos los paquetes de salida tendrán la misma dirección origen. Para poder identificar entonces cada tráfico de los diferentes ordenadores, se utiliza el número de puerto de cada conexión. Como estos deben ser únicos, el router se encarga también de realizar una conversión de puertos (NAPT, Network Address Port Translation). Para hacer todo esto, el router debe mantener una tabla con la dirección y puerto real de la máquina, el número de puerto que se le ha asignado, y dirección y puerto destino. De esta forma el router puede entregar los paquetes de vuelta a los ordenadores correspondientes. Resumiendo, los paquetes de vuelta contendrán todos la misma dirección destino, pero con diferente número de puerto que será lo que identifique a cada conexión y el router sepa así a quién mandarlo.

3.1 NAT avanzado. Introducción

Derivado de la utilización de NAT surge un problema con algunas aplicaciones y protocolos. Este problema aparece cuando la dirección IP de origen se incluye también en el campo de datos del paquete. Si esta dirección llega sin ninguna modificación al destino, el equipo remoto no sabrá qué hacer con ella, ya que se trata de una dirección privada. También puede ser causante de problemas el que el número de puerto esté dentro del campo de datos, por lo que es necesaria su traducción. Si se quiere que la aplicación funcione correctamente, NAT debería introducirse en cada paquete e irlos modificando según van saliendo. Este paso no es trivial, y requiere que NAT soporte de forma específica el protocolo usado para poder realizar los cambios y sustituir la dirección privada por la pública.

En los siguientes apartados se recogen los protocolos que requieren un soporte específico y las aplicaciones que basan su funcionamiento en ellos. Además se hace un análisis de por qué ocurre esto y la necesidad de que requieran un tratamiento especial.

3.2 Lista de protocolos que requieren soporte específico

A continuación se realiza una recopilación de los protocolos de uso más extendido que necesitan un soporte específico a la hora de traducir las direcciones y puertos usados.

a) H.323

b) FTP

c) FTP PASV

d) IRC, soporte de DCC

a) H.323

Una de las aplicaciones más conocida que utiliza H.323 es el Microsoft Netmeeting, con el que se pueden realizar sesiones de videoconferencia.

El H.323 es una familia de estándares definidos por el ITU para las comunicaciones multimedia sobre redes LAN y a través de redes IP, incluyendo Internet. Está definido específicamente para tecnologías LAN que no garantizan una calidad de servicio (QoS). Algunos ejemplos son TCP/IP e IPX sobre Ethernet, Fast Ethernet o Token Ring. La tecnología de red más común en la que se está implementando H.323 es IP.

El H.323 comprende una serie de estándares y se apoya en una serie de protocolos que cubren los distintos aspectos de la comunicación, tal y como el H.225, H.245, RTP, etc. Es en alguno de estos protocolos donde se da el problema con el uso de NAT, ya que introducen direcciones y números de puertos en el campo de datos de los paquetes:

- H.225

El H.225 es un protocolo montado sobre TCP encargado del control de la llamada: señalización, registro y admisión, y sincronización del flujo de voz. El mensaje de "Setup" contiene información del usuario necesaria para la sesión de conferencia, como el nombre identificador, localización geográfica, comentarios, etc. además de la dirección IP del usuario y el puerto TCP que usará para control en la fase de establecimiento.

- H.245

El H.245 también está montado sobre TCP, y contiene procedimientos de señalización de los canales lógicos. Estos procedimientos se proporcionan para fijar las prestaciones del emisor y receptor, tipo de codificación, apertura y cierre de canales lógicos, etc. Es precisamente en los mensajes de gestión de apertura de canales lógicos donde aparece la dirección IP del equipo y el número de puerto que utilizará, concretamente en los paquetes de "Request. Open Logical Channel" y "Response. Open Logical Channel Ack".

El mensaje de "Request. Open Logical Channel" se envía al equipo remoto para solicitar la apertura de canales lógicos. Contiene, en la parte correspondiente a "Media Control Channel", la dirección IP origen (campo "Network") y el número de puerto UDP que utilizará para control mediante RTCP (Real Time Control Protocol). Los puertos que se usan para control siempre son impares. Si no se especifican los puertos UDP para transmisión de audio y vídeo, se escogerán siguiendo la especificación RFC1889: puertos pares inmediatamente inferiores al utilizado por RTCP (por ejemplo, para RTCP el 49535, para audio el 49534 y para vídeo el 49532).

El mensaje de "Response. Open Logical Channel Ack" se manda en respuesta a una solicitud de apertura de canal lógico. En él se indican a la otra parte de la conexión, además de la dirección IP del equipo, los puertos UDP que se utilizarán para recibir, tanto audio y vídeo como señalización.

- RSVP

RSVP (Resource reSerVation Protocol) es un protocolo de señalización de reservas encargado de transportar especificaciones de tráfico, peticiones de reserva y disponibilidad de recursos. Gracias a este protocolo los receptores pueden reservar recursos de la red para flujo de datos. Para realizar una sesión de videoconferencia se utiliza este mecanismo, siempre que la red lo soporte, para intentar garantizar un determinado ancho de banda. Los mensajes RSVP se mandan a lo largo de toda la sesión cada cierto tiempo para refrescar en los nodos el estado de la reserva. Los mensajes RSVP van en paquetes IP, y llevan la dirección del equipo origen en campos como "IP4 source address" y "IP4 next/previous hop address".

Como se puede observar, para garantizar un correcto funcionamiento de las aplicaciones que se basen en H.323 es necesario que al hacer NAT, el router se encargue también de meterse dentro de los paquetes H.225, H.245 y RSVP para realizar la traducción de direcciones y de puertos.

b) FTP

FTP (File Transfer Protocol) es un protocolo que permite la transferencia de ficheros entre un equipo servidor y cliente. FTP se apoya sobre TCP para crear una conexión virtual para el control (que usa el puerto TCP 21 en el servidor y lo abre el cliente) y posteriormente se crea otra conexión independiente, también sobre TCP, para la transferencia de información (para el servidor será por defecto el puerto 20 y el cliente negociará el suyo).

Para realizar una transferencia de datos (en cualquiera de los dos sentidos), el cliente realiza una petición al servidor. El cliente debe informar al servidor del puerto que usará para el canal de transferencia de información. El comando "PORT" permite pasar estos datos mediante un parámetro que especifica tanto la dirección IP del cliente como el puerto TCP. La información de este parámetro (32 bits de la dirección IP + 16 bits del puerto TCP) se divide en bloques de 8 bits, que se codifican en formato decimal y se transmiten como una cadena de caracteres, separando cada bloque con una coma (ver RFC 959). De esta manera la información que llega al servidor es en el formato:

PORT h1,h2,h3,h4,p1,p2

Los bits de la dirección IP más altos son los representados por h1, y el número de puerto lo dan p1 y p2. El comando "PORT" es enviado siempre por la máquina cliente, y posteriormente es el servidor quien se encarga de abrir el canal de comunicación a través de ese puerto para enviar o recibir datos.

Por lo tanto, para que este proceso se realice de manera correcta usando NAT, es necesario que el módem del CLIENTE FTP se introduzca en los paquetes que invocan el comando "PORT", y traduzca la dirección y puerto de la máquina por los que usa el módem.

c) FTP PASV

FTP PASV (FTP en modo pasivo) es una variación de lo comentado en el anterior punto. En una sesión de FTP "normal" el cliente abre una conexión en el puerto FTP (TCP 21), y es el servidor quien abre después un canal de datos desde su puerto TCP 20, y esto puede ser peligroso en términos de seguridad. Por ello se creó el FTP pasivo, en el que es el propio cliente quien se encarga de abrir el canal de datos. La mayoría de los navegadores (por ejemplo todos los Microsoft Internet Explorer inferiores a la versión 5.0) y algunos clientes FTP trabajan en modo pasivo.

El método que se sigue es el siguiente. El cliente envía al servidor el comando "PASV", indicándole que quiere trabajar en modo pasivo. El servidor, en respuesta, manda un mensaje informando de su dirección IP y del puerto TCP al que enviará los datos con un formato similar al "PORT", antes comentado (como se puede ver, es ahora el servidor quien impone el número de puerto). Cuando el cliente recibe este paquete se encarga de abrir la conexión.

Es evidente que en el caso de tener un SERVIDOR FTP funcionando con un router configurado con NAT, es necesario que éste traduzca la dirección IP privada del paquete de respuesta a la petición de entrada al modo pasivo.

d) IRC, soporte de DCC

IRC (Internet Relay Chat) es uno de los servicios más populares de Internet, ofreciendo la posibilidad de chatear (intercambiar mensajes de texto) con cualquier persona del mundo. Para ello es necesario disponer de un cliente de IRC instalado en nuestro PC, por ejemplo mIRC (uno de los más populares), Pirch y Virc para Windows, o Ircle para Mac.

Estos clientes tienen otras funcionalidades como el envío y recepción de DCC, permitiendo al usuario el intercambio de archivos con otros clientes o establecer sesiones seguras de chat privado. Es en el envío de DCC donde puede haber problemas si se está haciendo uso de NAT en el router: los paquetes TCP que avisan a otro cliente de la petición de envío de DCC contienen dentro del campo de datos información del usuario, como su dirección IP. Un paquete de este tipo conteniene la siguiente cadena con la información conflictiva:


"DCC send ( )"

La dirección IP es necesaria para que el equipo destino sepa a quién contestar. Si el PC envía la petición con su dirección IP privada no se podrá llevar a cabo la comunicación con éxito, por lo tanto es imprescindible que el router traduzca esta dirección, o que el PC tenga conocimiento de la dirección IP pública y sea él mismo quien envíe el paquete correctamente. Esta segunda opción es la utilizada por el cliente IRC probado en el laboratorio, el mIRC, cuando se configura la opción de "Local Info" con el "Lookup Method" en modo "Server". De esta manera el uso de NAT no influye en el envío o recepción de DCCs ya que el PC sabe cuál es la dirección pública que le corresponde. El comportamiento de otros clientes de IRC puede ser diferente y requerir que el router soporte específicamente este protocolo.

4. Lista de puertos usados por aplicaciones

Independientemente de si una aplicación se apoya o no en un protocolo que requiera soporte específico, si se intenta acceder al router sin que se haya realizado una petición previa por parte de algún puesto de la red local se rechazará la conexión. Este comportamiento de firewall es intrínseco al funcionamiento del NAT, ya que en estos casos el router no tiene conocimiento de cuál es el PC al que van dirigidos los paquetes, y, por lo tanto, los rechaza. Es necesario redireccionar los puertos del router hacia una determinada máquina dentro de la red local, para que así cualquier petición realizada desde Internet hacia ese puerto (por ejemplo, si se monta un servidor web en la red local) sea dirigida al puesto elegido por el usuario para funcionar con esa aplicación.

En las pruebas realizadas en el laboratorio se verificó el correcto funcionamiento de aplicaciones abriendo los siguientes puertos:

- NetMeeting: se basa en el protocolo H.323, y es necesario abrir los puertos TCP de control 1503 y 1720.

- Servidor FTP: puerto TCP 21.

- Servidor Telnet: puerto TCP 23.

- Servidor Web: puerto TCP 80.

- mIRC: para acelerar la entrada a los servidores de IRC es conveniente abrir el puerto TCP 1080, en caso contrario no es posible acceder a ellos hasta que no salte un "time out". Algunos servidores utilizan el servicio de identificación "IDENT", por lo que también es recomendable abrir ese puerto en el router. El número de puerto es configurable por el cliente, y en el caso del mIRC el puerto por defecto es el TCP 113.

El resto de aplicaciones que requieren la apertura y direccionamiento de los puertos no han sido probadas y verificadas en el laboratorio. Esta información puede ser obtenida directamente de la página web de "Practically Networked", concretamente en http://practicallynetworked.com/sharing/
app_port_list.htm , (VER ANEXO 1) pero como se ha comentado antes, estos datos no han sido verificados en nuestros laboratorios.

Anexo1: Lista de puertos usados por aplicaciones

Lista de puertos usados por aplicaciones (fuente: http://practicallynetworked.com/sharing
/app_port_list.htm)

Emnsajería y conferencia

Active Worlds
(Watch Out! Opens a wide port range!)
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

Calista IP phone
OUT TCP 5190
IN UDP 3000

CuSeeMe
(Watch Out! Opens a wide port range!)
OUT UDP 24032
IN UDP 1414 [use H.323 protocol if available]
IN UDP 1424 [use H.323 protocol if available]
IN TCP 1503
IN TCP 1720 [use H.323 protocol if available]
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 [use H.323 protocol if available]
OUT UDP 1424 [use H.323 protocol if available]
OUT TCP 1503
OUT TCP 1720 [use H.323 protocol if available]
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
(Watch Out! Opens a wide port range!)
IN TCP 12053 [use CuSeeMe protocol if available]
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
(Watch Out! Opens a wide port range!)
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
(Watch Out! Opens a wide port range!)
(Incoming calls are not possible
due to NetMeeting assigning ports dynamically.)
OUT TCP 1720
IN UDP 1024 65534 [use H.323 protocol if available]
OUT UDP 1024 65534 [use H.323 protocol if available]
IN TCP 1024 1502 [use H.323 protocol if available]
OUT TCP 1024 1502 [use H.323 protocol if available]
IN TCP 1504 1730 [use H.323 protocol if available]
OUT TCP 1504 1730 [use H.323 protocol if available]
IN TCP 1732 65534 [use H.323 protocol if available]
OUT TCP 1732 65534 [use H.323 protocol if available]
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
The TCP Ports enabled are 5500 - 5503 (This is for the standard 5500
Hotline port)

If you change the default port, then you must enable the 3 ports after
it (so if you choose 4000 then you must enable 4000 - 4003)

The UDP port enabled 5499 is required only if you want to list your
server on a tracker (the data stream is only outgoing so if you want to
disable in bound on a firewall it would work fine)

ICQ
In ICQ under "Preferences & security", "Preferences" and Connections, click on "I am behind a firewall or proxy" then click on "Firewall Settings". Then select "I don´t have a SOCKS Proxy server on my firewall" or "I am using another Proxy server". Click Next. Click "Use the following TCP listen ports for incoming event" and set the TCP ports for 20000 to 20019 for the first user, 20020 to 20039 for the second user, 20040 to 20059 for the third user, etc.

OUT UDP 4000
IN TCP 20000 20019 for one user
OR
IN TCP 20000 20039 for two users
OR
IN TCP 20000 20059 for three users, 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

Internet Phone
OUT UDP 22555

mIRC DCC / IRC DCC.
The IRC port is usually 6667, but is sometimes 7000
OUT TCP 6667
or
OUT TCP 7000
IN TCP 113

mIRC Chat
OUT TCP 100
IN TCP 101

mIRC Fserve
OUT TCP 110
IN TCP 111

mIRC IDENT
IN UDP 113

mIRC Send
OUT TCP 120
IN TCP 121

mIRC Get
OUT TCP 130
IN TCP 131
OUT TCP 132

MSN Messenger
NOTE: Shut off any personal firewall programs such as BlackIce, ZoneAlarm, etc.
Ports 6891-6900 enable File send,
Port 6901 is for voice communications
Allows Voice, PC to Phone, Messages, and Full File transfer capabilities.
Thnx to Brad King & Bill Finch Jr.
IN TCP 6891 - 6900
IN TCP 1863
IN UDP 1863
IN UDP 5190
IN UDP 6901
IN TCP 6901

Net2Phone
OUT UDP 6801
IN UDP 6801
One additional UDP and one TCP port in the range of 1 to 30000
must be mapped. Ports 6802 and 6803 are suggested. These
ports must be mapped in your firewall, then set in the Net2Phone client
as follows:
1) Click on Net2Phone´s "Menu" button.
2) Select "Preferences".
3) Click on the "Network" tab.
4) Enter 6802 for the Client TCP Port.
5) Enter 6803 for the Client UDP Port.

Pal Talk [support page]
Each computer using Pal Talk must use a different OUT port number, starting at 5001 and incrementing by 1.
OUT TCP 5001
IN UDP 2090 2091 [voice]
IN TCP 2090 2091
IN TCP 2095 [file transfer]
IN TCP 5200 5203 [answering service (future)]
IN TCP 8080 [video]
IN UDP 8090 - 8290 [group voice]

PhoneFree
IN UDP 1034 - 1035
IN UDP 9900 - 9901
IN TCP 1034 - 1035
IN TCP 2644
IN TCP 8000
This Mapping is needed to hear the audio from the incoming party, outgoing audio would work without it.
** According to phonefree the ports you need open are:
8000 TCP For Server access
1034 UDP Voice in/out
1035 TCP Voice in/out
2644 TCP Personal Communication Center
I found that port range 9900-9901 UDP is also needed but not mentioned at phonefree support.
Also shut off any other firewall programs you may have running.

To make PC-TO-PHONE calls, it seems only UDP port 9900 must be opened (the fewer ports open, the better!).

Polycom ViaVideo H.323
IN TCP 3230 - 3235
IN UDP 3230 - 3235
NOTE: I needed to set these ports to dial out.
Also enable on ViaVideo (under H.323 QoS) ´Use Fixed Ports´ 3230-3235 TCP & UDP

Roger Wilco [support page]
IN TCP 3782
IN UDP 3782
IN UDP 3783 [only needed for RW Base station]

Speak Freely
IN UDP 2074 - 2076

Yahoo Messenger Chat
IN TCP 5000 - 5001

Yahoo Messenger Phone
IN UDP 5055

Audio y Video

Audiogalaxy Satellite [updated 12/13/00]
(Watch Out! Opens a wide port range!)
IN TCP 41000 - 50000
IN TCP 1117-5190

Camerades
IN TCP 2047 2048
IN UDP 2047 2048

GNUtella
IN TCP 6346
IN UDP 6346

Napster
OUT TCP 6699
IN TCP 6699

QuickTime 4 Server
IN TCP 6970
IN UDP 6970 - 7000

QuickTime 4 Client & RealAudio on Port 554
(Watch Out! Opens a wide port range!)
OUT TCP 554
IN UDP 6970 - 32000

RealAudio on Port 7070
OUT TCP 7070
IN UDP 6970 - 7170

ShoutCast Server
IN TCP 8000 - 8005

Juegos

Aliens vs. Predator
(Watch Out! Opens a wide port range!)
IN UDP 80
IN UDP 2300 - 2400
IN UDP 8000 - 8999

Asheron´s Call [support page] [mapping info]
OUT UDP 9000, 9004, 9008, 9012
IN UDP 9000, 9001, 9004, 9005, 9012, 9013
NOTE! You may also need to open the MSN Game Zone and DX ports

Bungie.net, Myth, Myth II Server
IN TCP 3453

Dark Reign 2
IN TCP 26214
IN UDP 26214

Delta Force (Client and Server)
OUT UDP 3568
IN TCP 3100 3999
OUT TCP 3100 3999
IN UDP 3100 3999
OUT UDP 3100 3999

Elite Force
IN UDP 26000
IN UDP 27500
IN UDP 27910
IN UDP 27960

Everquest
(Watch Out! Opens a wide port range!)
IN TCP 7000
IN UDP 5999
IN UDP 1024 6000
Note: May have to open this last UDP range even wider

Fighter Ace II
(Watch Out! Opens a wide port range!)
IN TCP 50000 - 50100
IN UDP 50000 - 50100

for DX play also open these ports:
IN TCP 47624
IN TCP 2300 - 2400
IN UDP 2300 - 2400

Half Life Server
IN TCP 27015

Heretic II Server
IN TCP 28910

Hexen II
Each computer hosting Hexen II must use a different port number, starting at 26900 and incrementing by 1. IN UDP 26900 (for first player)

KALI
Each computer using KALI must use a different port number, starting at 2213 and incrementing by 1.

IN UDP 2213 (for first player)
IN UDP 6666

Motorhead server
IN UDP 16000
IN TCP 16000
IN TCP 16010 - 16030
IN UDP 16010 - 16030
The ports 16010-16030 are ports I specified in the MotorHead dedicated server client ports section. You need to specify client ports so that Motorhead does not assign client ports randomly.

MSN Game Zone [support page] [DX support page]
(Watch Out! Opens a wide port range!)
IN TCP 6667
IN TCP 28800 - 29000

for DX play also open these ports:
IN TCP 47624
IN TCP 2300 - 2400
IN UDP 2300 - 2400

Need for Speed - Porche
IN UDP 9442

Outlaws
IN UDP 5310
IN TCP 5310

Quake2 (Client and Server)
IN UDP 27910

QuakeIII
Each computer playing QuakeIII must use a different port number, starting at 27660 and incrementing by 1. You´ll also need to do the following:
1. Right click on the QIII icon
2. Choose "Properties"
3. In the Target field you´ll see a line like "C:\Program Files\Quake III Arena\quake3.exe"
4. Add the Quake III net_port command to specify a unique communication port for each system. The complete field should look like this: "C:\Program Files\Quake III Arena\quake3.exe" +set net_port 27660
5. Click OK.
6. Repeat for each system behind the NAT, adding one to the net_port selected (27660,27661,27662)
IN UDP 27660 (for first player)

Rainbow Six (Client and Server)
OUT TCP 2346
IN TCP 2346

Rogue Spear
OUT TCP 2346
IN TCP 2346

Starcraft
IN UDP 6112

Ultima
IN TCP 5001-5010 Game
IN TCP 7775-7777 Login
IN TCP 8888 Patch
IN TCP 8800-8900 UO Messenger
IN TCP 9999 Patch
IN TCP 7875 UOMonitor

Port 7875 is not used by the game, but by UOMonitor, which many players use to monitor server status.

Unreal Tournament server
IN UDP 7777 (default gameplay port)
IN UDP 7778 (server query port
IN UDP 7779+ (UDP 7779+ are allocated dynamically for each
helper UdpLink objects, including UdpServerUplin
objects. Try starting with 7779-7781 and add
ports if needed.))
IN UDP 27900 (server query, if master server uplink is enabled.
Some master servers use other ports, like 27500)
IN TCP 8080
(Port 8080 is for UT Server Admin. In the [UWeb.WebServer] section of the server.ini file, set the ListenPort to 8080 (to match the mapped port above) and ServerName to the IP assigned to the router from your ISP.)

Westwood Online C&C Tiberian Sun & Dune 2000
Note: Westwood Online supports only one user per public IP address at any given time. Apprule courtesy of Quantus´ World
OUT TCP 4000
IN TCP 4000
IN UDP 1140 1234
IN TCP 1140 1234
OUT UDP 1140 1234
OUT TCP 1140 1234

ZNES
IN UDP 7845 [Uasr Quake Translation si se puede]

Servidores comunes
FTP Server on your LAN
IN TCP 21
POP3 Mail Server on your LAN
IN TCP 110
SMTP Mail server" on your LAN
IN TCP 25
TELNET Server on your LAN
IN TCP 23
WEB Server on your LAN
IN TCP 80

BAYVPN
OUT UDP 500

CITRIX Metaframe
IN TCP 1494

CarbonCopy32 host on your LAN
(Watch Out! Opens a wide port range!)
IN TCP 1680
IN UDP 1023-1679

Deerfield MDaemon Email Server
IN TCP 3000
IN TCP 3001

FW1VPN
OUT UDP 259

Laplink Host
IN TCP 1547

Lotus Notes Server
IN TCP 1352

NTP (Network Time Protocol)
OUT UDP 123
IN UDP 123

pcANYHWERE host on your LAN
IN TCP 5631
IN UDP 5632
IN UDP 22

RAdmin (Fama Tech)
IN TCP 4899

Remote Anything
FAQ page
IN TCP 3999 - 4000
IN UDP 3996 - 3998

Remotely Possible Server
IN TCP 799

Shiva VPN
(set the mobile option in the Shiva VPN client software to be your public IP address)
OUT UDP 2233
IN UDP 2233

Virtual Network Computing (VNC)
IN TCP 5500
IN TCP 5800
IN TCP 5900

Windows 2000 Terminal Server
(probably also works for NT Terminal services)
IN TCP 3389
IN UDP 3389

VPN Windows
TCP 1723