[FUG-BR] Dúvida Natd (fluxo de pacotes pelo ipfw)
Joao Paulo Marques Mattos
jampa25 em gmail.com
Sexta Agosto 24 10:28:32 BRT 2007
Rodolfo,
Vee se esse script te ajuda... fiz ele ja faz um tempo, seria apenas um
exemplo que separa o fluxo, se alguma coisa der errado ou nao funcionar
verifique os logs
[]´s
JP
#!/bin/sh
# Regras de Firewall (ipfw - IP firewall and traffic shaper control program)
# Escrito por Joao Paulo Marques Mattos (jampa25 at gmail.com)
# Data: 27/12/2002
#
#
# para que este script funcione eh necessario que seja indicado a
localizacao
# dele no arquivo "/etc/rc.conf", procure por: firewall_enable="YES"
# e insira na proxima linha: firewall_script="/etc/firewall/fwrules"
# define o comando do firewall (igual ao /etc/rc.firewall) para simplificar
# a referencia. facilita a leitura.
fwcmd="/sbin/ipfw"
# define a interface externa e o seu IP
exteth="rl1"
extIP="200.0.0.139/32"
# define a interface interna
inteth="rl0"
# forca a remocao das regras atuais antes de carregar
$fwcmd -f flush
# dummynet setando o pipe e a sua velocidade
#$fwcmd pipe 10 config mask src-ip 0x000000ff bw 64kbit/s queue 6Kbytes
#$fwcmd pipe 11 config mask dst-ip 0x000000ff bw 64kbit/s queue 6Kbytes
# Verifica todo o trafego entrante... interface externa
# em caso positivo pula para a regra 50000
##################################################################################
$fwcmd add skipto 50000 all from any to me in recv $exteth
##################################################################################
# Filtra e verifica todo trafego sainte e (com regras dinamicas)
# todo trafego entrante
##################################################################################
# libera pelo NAT
$fwcmd add skipto 40000 tcp from 192.168.1.10 to any keep-state out xmit
$exteth
# ICMP GERAL
$fwcmd add skipto 40000 icmp from any to any icmptypes 0,3,8,11
##################################################################################
# permite todas as conexoes confiaveis - interface interna
##################################################################################
# localhost
$fwcmd add allow ip from any to any via lo0
# dummynet para squid
#$fwcmd add pipe 10 log all from 192.168.1.10 to me 3128 out via $exteth
#$fwcmd add pipe 11 log all from me 3128 to 192.168.1.10 in via $exteth
# liberado somente para interface interna
$fwcmd add allow tcp from any to any out xmit $exteth setup
$fwcmd add allow udp from any to any out xmit $exteth
# uma vez que uma conexao foi estabelecida, permite que fique aberta
$fwcmd add allow tcp from any to any via $exteth established
# Libera e loga o resto do trafego da interface interna
$fwcmd add allow log ip from any to any via $inteth
$fwcmd add allow udp from any 53 to any in via $exteth
# Pra ter certeza de que nao passara nada que nao for permitido
$fwcmd add deny log ip from any to any
##################################################################################
# Somente passarao por estas regras em duas circunstancias:
# 1) Qualquer pacote sainte que recebeu a flag keep-state
# 2) Qualquer pacote entrante que encontrar uma regra dinamica
##################################################################################
# NAT
$fwcmd add 40000 divert natd all from any to any out xmit $exteth
# dummynet
$fwcmd add pipe 11 log all from any 80 to 192.168.1.10 in via $exteth
# Interface interna
$fwcmd add allow ip from any to any via $inteth
# conexoes iniciadas pelo servidor
$fwcmd add allow tcp from any to any out xmit $exteth setup
$fwcmd add allow udp from any to any out xmit $exteth
# uma vez que uma conexao foi estabelecida, permite que fique aberta
$fwcmd add allow tcp from any to any via $exteth established
# ICMP (para ping e traceroute funcionarem)
$fwcmd add allow icmp from any to any
# DNS
$fwcmd add allow udp from any 53 to any 1024-65535 in via $exteth
# Liberacao de todo resto com log para debug
$fwcmd add allow log all from any to any
# Pra ter certeza de que nao passara nada que nao for permitido
$fwcmd add deny log all from any to any
##################################################################################
# Somente passarao por estas regras trafego entrante. Precisamos
# definir o que queremos aceitar ou nao. A flag ckeck-state
# ira disparar a regra dinamica e pular para a 40000
##################################################################################
$fwcmd add 50000 divert natd all from any to any in recv $exteth
$fwcmd add check-state
# conexoes iniciadas pelo servidor
$fwcmd add allow tcp from any to any out xmit $exteth setup
$fwcmd add allow udp from any to any out xmit $exteth
# uma vez que uma conexao foi estabelecida, permite que fique aberta
$fwcmd add allow tcp from any to any via $exteth established
# UDP - DNS
$fwcmd add allow udp from any 53 to any in
$fwcmd add allow udp from any to any 53 in
# ICMP (para ping e traceroute funcionarem)
$fwcmd add allow icmp from any to any
# rejeita o resto
$fwcmd add deny log all from any to any
Mais detalhes sobre a lista de discussão freebsd