Em nossa rede temos um 
servidor proxy/firewall com o CL8 e ip interno 
192.168.0.1 e um 
servidor do banco de dados Firebird com 192.168.0.5 
com CL8 (pode ser Windows).
Nossas aplicações internas e aplicações que rodam em nossas filiais via 
VPN acessam o Firebird diretamente pelo ip 192.168.0.5.
Acessos externos ao Firebird sem estar na VPN, não são liberados pelo 
proxy e somente abrir a porta 3050 nele não bastou.
Para o acesso externo, foi criado um redirecionamento para o servidor 
192.168.0.5.
Para este teste foi utilizado 
Conectiva Linux 8 e 
iptables-1.2.4-1cl no ambiente abaixo:
INTERNET <=> CL8 <=> Firebird
>> PROXY
Eth0_CL8=200.X.X.X (Internet)
Eth1_CL8=192.168.0.1
>> FIREBIRD
Eth0=192.168.0.5
Caso não tenha o iptables no servidor proxy, o pacote está no CD de 
instalação e utilize o comando:
# rpm -ivh iptables*
pronto..... ou ao menos era para estar... :-)
agora vamos ao script...
Crie um arquivo qualquer dentro do 
/etc/rc.d/init.d (por exemplo 
iptables.sh). Dê a seguinte permissão a este arquivo: 
# chmod 700 iptables.sh
Edite o arquivo iptables.sh e adicione este script:
O bloco principal é:
Firebird
iptables -t nat -A PREROUTING -p tcp -s 0/0 -d $IP_EXTERNO --dport 3050 -j DNAT --to-destination $IP_FIREBIRD:3050
iptables -A FORWARD -p tcp -s $IP_FIREBIRD -d $IP_EXTERNO --dport 3050 -j ACCEPT
onde 
-s 0/0 pode ser trocado por somente um IP, isso aumenta o nível 
de segurança, ou seja, somente o IP informado terá acesso ao Firebird, isto 
é útil quando por exemplo, se você tem uma aplicação web em um provedor e 
necessita acessar seu dados no Firebird, assim somente libera o ip do seu 
provedor.
No caso ficaria assim :
IP_LIBERADO="200.201.X.X"
iptables -t nat -A PREROUTING -p tcp -s $IP_LIBERADO -d $IP_EXTERNO --dport 3050 -j DNAT --to-destination $IP_FIREBIRD:3050
iptables -A FORWARD -p tcp -s $IP_FIREBIRD -d $IP_EXTERNO --dport 3050 -j ACCEPT
Execute o script criado (iptables.sh no nosso exemplo): 
# ./iptables start
Teste
Utilizamos uma máquina fora da rede e conectamos na internet via dial-up, 
usando o IBConsole criamos o servidor utilizando o IP de entrada da 
Internet (IP_EXTERNO), O CL8 fará o redirecionamento para o micro que tem o 
Firebird (192.168.0.5) dentro da rede interna ou DMZ. O micro com o Firebird 
pode ser coloca em uma DMZ também.
Os logs da porta 3050 serão gerados dentro de 
/var/log/messages.
Esperamos ter ajudado!
Críticas e melhorias são bem vindas.
Autores:
Luís Gustavo (
lgustavo@directnet.com.br)
Fábio R. Calegari (
fabio.linux@e-logicon.com.br)
26 de Maio de 2003