[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