Problemas compartilhamento de conexão.

Iniciado por Kwizatz, 21 de Setembro de 2010, 14:39

tópico anterior - próximo tópico

Kwizatz

Olá galera!
Estou montando um servidorzinho pra compartilhar a conexão, com o Ubuntu 10.04.1, mas estou com um probleminha. Alias, é a segunda vez que tenho o mesmo problema, pois instalei e reconfigurei duas vezes.
O compartilhamento ia indo bem, funcionando tudo direitinho, mas do nada, se eu paro ou reinicio o firewall, nada acontece. De inicio, se eu desse o comando pra parar, ele na hora parava o compartilhamento da conexão para as estações, só q agora nao para nem com o comando /etc/init.d/firewall stop e nem se eu digitar as regras do iptables manualmente. Alias, nada do iptables que eu venha a digitar, surte algum efeito.
Ja exclui e refiz o script do firewall varias vezes. Exclui um link q eu havia criado pra ele na pasta /etc/rc5.d, para que ele fosse carregado no boot e nada. Mesmo assim, se eu reinicio o servidor, o compartilhamento ja volta ativo sem o link para o script e sem mesmo o script e posso digitar qualquer comando do iptables que nao da nada. É como se o iptables nao estivesse mais funcionando. A conexão só cai se eu parar o Squid, q também depois disso, só para se der um kill no processo.
Antes de excluir o script, editei ele e comentei todas as linhas q faziam o compartilhamento e a q encaminhava os pacotes para a porta do squid, mas ao reiniciar, como dito antes, voltou como se nada tivesse sido feito, ou seja, compartilhamento ativo e encaminhando para o squid.
Ja desinstalei e reinstalei o iptables, mas nao surtiu efeito.
Será q o ubuntu ta salvando em algum outro lugar do sistema, essas regras do iptables q no inicio funcionavam e agora nao mais funcionam? O rc.local esta vazio também.
Meu script é basico, só algumas regras pra compartilhamento, a fim de testar o servidor. Segue ele abaixo.


#################################
#!/bin/bash

iniciar() {

#limpa regras anteriores

iptables -F
iptables -t nat -F

# Compartilha a conexao:
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Compartilhamento de internet ativado!"

# Proxy transparente:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Proxy transparente ativado!"

# Permite conexao na interface de rede local e na porta 22:
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j LOG
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Regras basicas de firewall:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -p tcp --syn -j DROP

# Bloqueia as portas UDP de 0 a 1023:
iptables -A INPUT -p udp --dport 0:1023 -j DROP


echo "Regras de firewall e compartilhamento de internet ativados!"
}

parar () {
        iptables -F
        iptables -t nat -F
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        echo 0 > /proc/sys/net/ipv4/ip_forward
        echo "Regras de firewall e compartilhamento de internet desativados!"
}

case "$1" in
        "start") iniciar ;;
        "stop") parar ;;
        "restart") parar; iniciar ;;
        *) echo " Use os parametros start ou stop"
esac



Estou pensando em colocar esse servidor pra rodar aki na empresa, mas com esse problema de o iptables nao obedecer nada do q eu digito, fica dificil. As demais configurações de Squid, Sarg, Ntop, SquidGuard, etc, tudo funciona redondinho. Se alguem puder me dar uma luz, eu agradeço.
Valeu!!

[]'s

zekkerj

Executa os comandos abaixo e cola aqui:

ifconfig

nm-tool

sudo iptables -L -v -n

sudo iptables -t nat -L -v -n


CitarMesmo assim, se eu reinicio o servidor, o compartilhamento ja volta ativo sem o link para o script e sem mesmo o script e posso digitar qualquer comando do iptables que nao da nada. É como se o iptables nao estivesse mais funcionando.

Dê mais detalhes sobre isso, por favor. O iptables simplesmente não faz nada, ou dá alguma mensagem de erro?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Kwizatz

IFCONFIG (Suprimi o IP pois é um Ipfixo)

eth0      Link encap:Ethernet  Endereço de HW 00:40:f4:a2:b3:a3 
          inet end.: xxx.xxx.xxx.xxx  Bcast: xxx.xxx.xxx.xxx  Masc:xxx.xxx.xxx.xxx
          endereço inet6: fe80::240:f4ff:fea2:b3a3/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:381 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:350 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:36078 (36.0 KB) TX bytes:30818 (30.8 KB)
          IRQ:18 Endereço de E/S:0x800

eth1      Link encap:Ethernet  Endereço de HW 00:e0:4c:4d:10:80 
          inet end.: 192.168.0.1  Bcast:192.168.0.255  Masc:255.255.255.0
          endereço inet6: fe80::2e0:4cff:fe4d:1080/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:20 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:47 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:1618 (1.6 KB) TX bytes:3418 (3.4 KB)
          IRQ:17 Endereço de E/S:0xe400

lo        Link encap:Loopback Local 
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:16436  Métrica:1
          pacotes RX:35 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:35 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0
          RX bytes:3112 (3.1 KB) TX bytes:3112 (3.1 KB)


IPTABLES -L -V -N

root@webserver:~# iptables -L -v -n
Chain INPUT (policy ACCEPT 20 packets, 1474 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           
    8   560 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22 LOG flags 0 level 4
    8   560 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02
    0     0 DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpts:0:1023

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 18 packets, 2426 bytes)
pkts bytes target     prot opt in     out     source               destination 


NAT

root@webserver:~# iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 5 packets, 313 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 REDIRECT   tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 redir ports 3128

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
    1    89 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 1 packets, 89 bytes)
pkts bytes target     prot opt in     out     source               destination 


Ps.: Esqueci de mencionar q uso o ubuntu 10.04.1 server, entao o nm-tool nao funciona pq nao tenho ambiente grafico.

Bom, é estranho pq parece q só nao funcionam os comandos para as regras q ativam o compartilhamento da conexão, pois se eu ativo o firewall e dou um ping de outra makina atraves do IP fixo, ele nao responde, se eu desativo, responde. Isso aí ta certo, mas se eu dou, por exemplo, no braço mesmo os comandos: iptables -F, iptables -t nat -F, etc, o compartilhamento da conexão continua ativo. Assim q montei o servidor, se eu desse os comandos do script q colei, ele parava o compartilhamento, reiniciava certinho, só compartilhava após o boot se eu desse um start, agora nao.. eu reinicio o servidor e ele ja volta com o compartilhamento ativo, mesmo nao tendo nenhuma referencia em local algum do sistema, para que ele execute o start do script q eu criei.
Qdo digito os comando do iptables nao da erro nenhum... ele até limpa as regras, mas o problema é só o compartilhamento q fica sempre ativo...rs

[]'s

zekkerj

CitarQdo digito os comando do iptables nao da erro nenhum... ele até limpa as regras, mas o problema é só o compartilhamento q fica sempre ativo...rs
Vc diz, as máquinas da rede interna continuam acessando a rede externa, mesmo sem ser pelo navegador? Bem, enquanto o flag "ip_forward" estiver ativo, ele vai encaminhar pacotes... só o NAT que não vai ocorrer, então vc não vai ter resposta.

Já as estações cujo navegador esteja com o proxy configurado (em vez de transparente) podem continuar funcionando, mesmo depois de você desativar o firewall, o NAT e o encaminhamento, desde que o cache (squid, não?) continue ativo.

Qual o teste que você fez pra perceber que o compartilhamento fica ativo?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Kwizatz

Bom, se pela rede interna eu tentar dar um ping no uol, por exemplo, ele pinga, mesmo desativando o firewall. O ip_forward não seria desativado se eu desse alguns comandos como: iptables -F, iptables -t nat -F, echo > 0 /proc/.../ip_forward??
O teste q fiz foi tentando navegar com qualquer browser, mesmo depois de digitar tais comandos, ou mesmo fazendo pings ou ftp.
E mais uma duvida, mesmo reiniciando a maquina após esses comandos, pra voltar a acontecer o encaminhamento de pacotes e o NAT, eu nao teria q executar isso de alguma forma, seja com linha de comando ou script? Ou uma vez eu dando um modprobe iptable_nat e  fazendo o forward, o sistema ja executaria isso automaticamente após um boot??
Sim, meu cache é squid! Esse  funciona q é uma maravilha, tanto ele qto o squidguard! Aí sim, se eu paro o squid, entao as estações não navegam mais.
Desculpe a complicação, mas é o primeiro servidor q to montando e to tendo essas duvidas de amador...rs

[]'s

zekkerj

Citação de: Kwizatz online 21 de Setembro de 2010, 23:25
Bom, se pela rede interna eu tentar dar um ping no uol, por exemplo, ele pinga, mesmo desativando o firewall. O ip_forward não seria desativado se eu desse alguns comandos como: iptables -F, iptables -t nat -F, echo > 0 /proc/.../ip_forward??
O encaminhamento seria desativado quando vc fizesse o "echo 0 > ... ip_forward".
Mas os pings teriam que parar de funcionar quando vc limpasse as regras de NAT.

Desculpe a pergunta estúpida, mas vc está executando esses comandos como root, não?

CitarO teste q fiz foi tentando navegar com qualquer browser, mesmo depois de digitar tais comandos, ou mesmo fazendo pings ou ftp.
Se o browser estiver configurado com o proxy, e o proxy estiver ativo, ele vai navegar mesmo sem encaminhamento ou nat. A mágica: o browser pede o acesso ao proxy, o proxy acessa como se fosse o servidor (por isso ele se chama proxy --- procurador). Só é preciso que o proxy esteja ativo, e o servidor tenha conexão ativa pra internet.

Citar
E mais uma duvida, mesmo reiniciando a maquina após esses comandos, pra voltar a acontecer o encaminhamento de pacotes e o NAT, eu nao teria q executar isso de alguma forma, seja com linha de comando ou script? Ou uma vez eu dando um modprobe iptable_nat e  fazendo o forward, o sistema ja executaria isso automaticamente após um boot??
O "echo 1 > ...ip_forward" pode ser substituído pelo comando "sysctl net.ipv4.ip_forward=1". E esse comando pode ser programado no arquivo "/etc/sysctl.conf".

Já os comandos do firewall, o script pode ter sido programado pra carregar automaticamente no boot, ou então está sendo chamado em algum script que está (p.ex. o arquivo /etc/rc.local).

Citar
Sim, meu cache é squid! Esse  funciona q é uma maravilha, tanto ele qto o squidguard! Aí sim, se eu paro o squid, entao as estações não navegam mais.
Desculpe a complicação, mas é o primeiro servidor q to montando e to tendo essas duvidas de amador...rs

[]'s
Acontece.

Acredita que eu esqueci 3x de ativar o "ip_forward" na mesma máquina?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Kwizatz

Sim, estou executando como root.
Valeu cara, agora entendi de fato o esquema do proxy. Era aí q eu ficava em duvida, pois eu desativava o firewall e a estação continuava navegando normalmente. Eu achava q com a desativação do firewall, nat, encaminhamento, as estações com o proxy iam parar de navegar também, mas ta funcionando conforme vc disse.
Refiz os testes de pings, tanto de fora pra dentro, como de dentro pra fora e deu certo. Dei um update-rc.d no firewall e ele voltou a ser executado na inicialização.
Só falta agora configurar o chpasswd pra os usuarios trocarem suas senhas do squid, pra colocar o servidor em produção.

Obrigado!
Abraços!