[FUGSPBR] Natd deixou de funcionar
Capriotti
capriotti em cee.com
Sáb Ago 25 12:25:27 BRT 2001
Alguns pontos a copnsiderar:
o FreeBSD, assim que sai da "caixa", está pronto para fazer NAT com o PPP,
e só com o ppp, pois na verdade o ppp tem o próprio nat.
Mas o kelnel generic não está habiliutado para NAT, assim como não está
habilitado para firewall.
Você já compilou um kernel novo com essas opções ?
Só para lembrar semana passada eu mesmo fiz um "howtozinho" de
comohabilitar essas coisas no kernel. Deve estar na sua caixa postal.
Abaixo está o procedimento, desde o zero, revisado, de como fazer para o
NAT E FIREWALL funcionarem. E de quebra, como redirecionar portas/serviços.
Boa sorte.
Primeiro, como disso o Edso, você tem que habilitar ulguns suportes no seu
kernel. É bem possível que, por ser novato (o que não é nenhum demérito),
você não tenha tido tempo de se envolver com compilação de kernel.
Compilar um kernel novo faz bem, porque você passa a ter um núcleo do
sistema mais leve e customizado.
Por exemplo, eu removo as opções de processador 386 e 486, removo a opção
de processamento numérico por software (floating point), diminuo o número
de usuários para 10 e incluo as opçãoes para firewall e nat (ipdivert).
Como fazer isso ? Fácil. Primeiro você tem que ter os fontes do kernel
instalados (chamar o /stand/sysinstall na linha de comando).
Entrar na opção "configure"/distributions/
Dentro dessa opção você vai procurar a "sys" (não lembro direito; estou
escrevendo de memória). Com certeza na descrição0 está escrito "System
kernel" ou algo que o valha.
Escolha "OK" para fazer a instalação e espere os arquivos serem instalados.
Saia do /stand/sysinstall
vá para o diretório
/usr/src/sys/i386/conf
Esse é o diretório de arquivos de configuração do Kernel. lá você vai
encontrar alguns arquivos, e dentre eles doi muito importantes:
GENERIC
e
LINT
O LINT é o arquivo onte estão TODAS as opções disponíveis para o kernel. Dê
uma estudada nesse arquivo quando tiver um tempo. Vale a pena.
O GENERIC é o arquivo que gerou o kernel que é instalado por default no
sistema, a partir do CD.
Para você fazer seu próprio kernel, faça o seguinte:
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/JOSE
onde JOSE é na verdade o nome que você deu para sua máquina (o meu
servidor, por exemplo, chama "diana", portanto, o arquivo de configuração
do kernel também chama DIANA - em letras maiúsculas, sempre).
Esse comando copia o arquivo GENERIC para o JOSE
Edite o arquivo jose com seu editor de texto preferido (sem flame wasr
aqui, moçada !!!) e faça as seguintes alterações :
Na linha
ident GENERIC
(seguindo o exemplo) coloque
ident JOSE
Se você estiver com uma rede pequena (10-20 usuários) não tema em mudar o
maxusers 32
para
maxusers 10
e, o mais importante, adicione as seguintes linhas:
options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE #print information about
# dropped packets
options IPFIREWALL_FORWARD #enable transparent proxy support
options IPFIREWALL_VERBOSE_LIMIT=100 #limit verbosity
#options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default
options IPV6FIREWALL #firewall for IPv6
options IPV6FIREWALL_VERBOSE
options IPV6FIREWALL_VERBOSE_LIMIT=100
#options IPV6FIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT #divert sockets
options IPFILTER #ipfilter support
options IPFILTER_LOG #ipfilter logging
options DUMMYNET
options BRIDGE
options ICMP_BANDLIM
Note que eu retirei completamente as regras que habilitam acesso irrestrito
(default to accept). Isso é MUITO perigoso para máquinas públicas. Talvez o
BRIDGE não seja necessário.
E, por via das dúvidas, embora não tenha nada a haver, coloquei a
possibilidade de fazer a limitação de largura de banda também.
Depois de feitas essas alterações no seu arquivo de configuração, faça:
cd /usr/src/sys/i386/conf
config JOSE
(este comando demora alguns minutos)
cd ../../config/JOSE
make depend
(dependendo da velocidade da sua máquina, este comando pode demorar até
duas horas - ne meu pentium 120 demora de 40 min a 1 hora) )
se não der nenhum erro de compilação (que pode ser por causa de algum
caracter ou parâmetro errado no arquivo de configuração) execute:
make
(mais uns 40 minutos, em máquinas lentas)
depois
make install.
Pronto ! se tudo der certinho na compilação, você tem um kernel novinho em
folha, preparado para suas necessidades. Daí pra frente é só colocar pra
funcionar ou o NATd ou o IPnat.
No caso do NAT:
faça um arquivo /etc/natd.conf contento
redirect_port udp 192.168.1.100 31337 20.246.0.252 31337
onde o 200.246.0.252 é o IP externo, público, da sua rede.
E o 192.168.1.100 é o IP da máquina interna que vai lidar com os pacotes
redirecionados.
Para isso funcionar, o seu /etc/rc.conf tem que conter o seguinte:
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="OPEN"
!!!!!!!! Atenção !!! Estruture aqui suas regras de firewall ! Esta opção
ABRE TUDO !!!
firewall_quiet="NO"
firewall_flags=""
natd_program="/sbin/natd"
natd_enable="YES"
#natd_interface="200.246.0.252" # Public interface or IPaddress to use.
natd_interface="rl0"
Nas linhas acima: OU um OU outro ! Eu prefiro usar o IP.
natd_flags=" -f /etc/natd.conf"
Aqui é o pulo do gato: a opção -f faz com que o NAT obedeça o arquivo de
configuração do arquivo que você criou.
esse arquivo de configuração pode ter várias outras regras. Em alguns
sites, por exemplo, eu redireciono todo o tráfego da porta 25 tcp para uma
máquina interna, que fica responsável só por email. No mesmo arquivo de
NATd eu redireciono todo o tráfego de VPN para outro computador, que cuida
dessa parte.
At 11:38 AM 8/25/01 -0300, you wrote:
>Urgente,
>
>Tinha uma conexao PPP dedicada, uso um Free 4.1 como gateway, fazendo nat
>para a rede interna com IP falso. Troquei a conexao PPP por um link
>Sincrono, para isto coloquei uma segunda placa de rede no Free, as duas
>estao funcionado, pois do free ping para fora, e para a rede interna. Da
>rede interna consigo pingar para o Free, porém nao consigo pingar para fora.
>
>ja alterei o rc.conf, o hosts, e o rc.firewall, (segui os exemplos da
>FPP), porém o nat nao esta mais funcionando.
>
>o que pode estar errado?
----
Para sair da lista envie um e-mail para majordomo em fugspbr.org
com as palavras "unsubscribe fugspbr" no corpo da mensagem.
Mais detalhes sobre a lista de discussão freebsd