Caras,
Estou trocando um servidor IPTABLES+DHCP. A máquina velha (em funcionamento hoje) está com FC2 e os serviços/configs da sua época.
A máquina nova que estou trocando está com FC8 toda atualizadinha e com os 2 serviços instalados.
A topologia segue:
http://img182.imageshack.us/img182/5...uvidxx4.th.png
DETALHE: O SERVIÇO DE DHCP NA MÁQUINA NOVA ESTÁ PARADO PARA NÃO DAR CAGADA COM A MÁQUINA VELHA!!!
Cara, ainda to quebrando um pouco a cabeça com esse papo de iptables, roteamento e tals. Eu sou novato no quesito servidores e preciso muito da ajuda dos amigos para aproveitar a oportunidade que estão me dando aqui no trampo.
Bem, vamos aos detalhes:
MAQUINA IPTABLES VELHA:
No script /etc/rc.d/init.d/iptables foram adicionadas algumas linhas que fazem:
- o compartilhamento da internet na eth1 para a eth0;
- o roteamento de saída da eth0 (porta 80 apenas) para o servidor com squid;
- o roteamento de algumas máquinas na rede interna, para serem acessadas pela internet.
Já no arquivo de configuração em /etc/sysconfig/iptables:
- tabela *filter com a liberação de algumas portas, etc.
Está tudo funfando de boa.
Lendo em muitos lugares, descobri que eu poderia colocar a tabela *nat no mesmo aquivo em /etc/sysconfig/iptables, ao invés de mantê-lo no script original do iptables em /etc/rc.d/init.d/iptables. Fiz isso na máquina de IPTABLES NOVA para ficar mais elegante, script de um lado e arquivo de configuração no outro. Reparei também, que nessa versão do fedora (FC8), os flags de /proc/sys/net/ipv4/ip_tables e /etc/sysctl.conf (net.ipv4.conf.default.rp_filter) já estavam, por padrão, inicializados com 1.
O que acontece, toda vez que reinicio esse servidor novo, o script de iniciazliação do iptables lê o arquivo de configuração /etc/sysconfig/iptables e beleza, tudo no lugar.
Quando passei a fazer o MASQUERADE na máquina nova, também funfou de boa apenas alterando o arquivo de configuração. Depois, acrescentei a regra para que, toda a conexão de saída pela porta 80 da rede interna, fosse desviada para o servidor que tem squid instalado. Beleza, funfou de boa!! Por último fui testar o acesso à uma máquina da rede interna, pela internet. Fiz o seguinte: Nessa máquina nova criei 2 alias (210.200.200.223 e 210.200.200.224) na eth1 com IPs válidos e que não estão sendo utilizados pela empresa, claro. Beleza, assim, essa máquina nova passou a responder os pings por esses IPs, da mesma maneira que está a máquina velha. Até aím, sem novidades, tudo OK.
Testei então adicionar a regra PREROUTING para quando chegasse requisições na porta 80 para o IP externo 210.200.200.223 (configurado como alias da eth1 da maquina nova) fosse roteado para a minha máquina, na rede interna, com o IP 192.168.1.25. Maravilha, funcionou de prima. Testei tanto de outras máquinas da rede interna, como de outros servidores que estão antes do router, além de pedir que colegas da maztriz que fica em outro prédio looonge daqui também acessassem a minha máquina com esse IP novo e beleza. Funcionou perfeitamente.
Agora, a cagada: Quando altero o arquivo de configuração e faço com que o roteamento não vá mais para a minha máquina (192.168.1.15) e sim para a máquina correta (192.168.1.16) que já está sendo roteada pelo servidor antigo, apenas esse roteamento não funciona nem a pau. Vou fazer um teste hoje à noite desligando o servidor de ITPABLES velho, deixando apenas esse novo que estou terminando para ver no que dá.
segue o arquivo de configuração do IPTABLES:
# Generated by iptables-save v1.4.1.1 on Mon Sep 8 17:44:01 2008
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#Olha o que descobri!! O tal do RH-Firewall-1-INPUT é apenas uma TAG!!
# Vou utilizar a seguinte TAG que pelo menos não quebra a linha
# na hora de consultar o arquivo no shell. Apenas trocando o nome
# RH-Firewall-1-INPUT.... para TESTE-FW
:TESTE-FW - [0:0]
# Redirecionando todos os INPUTs e FORWARDs para a regra personalizada.
-A INPUT -j TESTE-FW
-A FORWARD -j TESTE-FW
# Filtrando os INPUTs E FORWARDs, igualmente.
#liberadno INPUT e FORWARD para a interface 'lo'
-A TESTE-FW -i lo -j ACCEPT
#liberando INPUT e FORWARD para a interface 'eth0' (rede interna)
-A TESTE-FW -i eth0 -j ACCEPT
#liberando INPUT e FORWARD para a rede '192.168.1.0'
-A TESTE-FW -s 192.168.1.0/24 -j ACCEPT
-A TESTE-FW -d 192.168.1.0/24 -j ACCEPT
#liberando INPUT e FORWARD para o protocolo ICMP para qualquer interface
-A TESTE-FW -p icmp --icmp-type any -j ACCEPT
#liberando INPUT e FORWARD para conexoes com o estado abaixo
-A TESTE-FW -m state --state RELATED,ESTABLISHED -j ACCEPT
#negando INPUT e FORWARD para o protocolo ICMP no estado abaixo
-A TESTE-FW -j REJECT --reject-with icmp-host-prohibited
#liberando portas
-A TESTE-FW -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A TESTE-FW -p tcp --dport 80 -j ACCEPT
COMMIT
*nat
# Regra padrão para NAT
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Compartilhando a rede da 'eth1'
-A POSTROUTING -o eth1 -j SNAT --to 210.200.200.218
# Desviando o fluxo da eth0-porta 80 para o servidor squid
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 210.200.200.212:3128
#### O PROBLEMA ESTÁ AGORA! QUANDO A ROTA É PARA MINHA MÁQUINA (192.168.1.25)
#### FUNFA DE BOA, DE QUALQUER LUGAR. MAS QUANDO ALTERO PARA O IP 192.168.1.16
#### QUE EJÁ ESTÁ SENDO ROTEADO PELO SERVIDOR VELHO, ESSE ROTEAMENTO NÃO
#### FUNCIONA MAIS. APENAS O QUE JÁ ESTÁ NA MÁQUINA VELHA FICA FUNCIONANDO...
# DNAT para o servidor da rede interna na porta 80 apenas
-A PREROUTING -p tcp -m tcp --dport 80 -d 210.200.200.223 -j DNAT --to 192.168.1.16:80
COMMIT
Antemão, além de deixar uma mostra interessante de topologia, distribuição de serviços, roteamento e regras, gostaria de saber o seguinte:
1- por que tá dando essa cagada? Será por causa de ter duas máquinas fazendo o mesmo serviço, apesar de trabalharem com IPs de origem diferentes e apenas os IPs de destino iguais???
2- por que é raríssimo encontrar na internet tutoriais para configuração de IPTABLES que trabalham sempre em cima de scripts e não do próprio arquivo de configuração localizado em /etc/sysconfig/iptables?
Colegas, se o texto que escrevi ficou confuso, por favor, indaguem!! Mas to quebrando a cabeça para esclarecer esses assuntos.
Abaixo segue o arquivo de configuração do iptables da máquina nova!
No aguardo!!
[]s
Daniel