Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: EuripedesXD em 05 de Junho de 2012, 11:18

Título: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 05 de Junho de 2012, 11:18
Bom Dia!

Meu proxy funciona perfeitamente se coloco a configuração no navegador,
mas quero deixá-lo transparente.
Sei que o problema é no FireWall, mas estou com muita dificuldade.

Segue abaixo meus arquivos de config.

Interfaces - eth0 esta o modem
Código: [Selecionar]
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The second network interface
auto eth1
iface eth1 inet static
        address 192.168.1.254
        netmask 255.255.255.0
        network 192.168.1.1
        broadcast 192.168.1.255

squid.conf (sei que é muito básico, mas quero deixá-lo assim para depois aplicar as policticas.
Código: [Selecionar]
http_port 3128 transparent
visible_hostname QUALYPROXY
acl todos src 0.0.0.0/0.0.0.0
http_access allow todos

rc.local - Coloquei a regra do iptables aqui.
Código: [Selecionar]
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128
iptables -A FORWARD -i eth1 -p tcp --dport 3128 -j ACCEPT
exit 0

Sei que seria melhor criar uma aquivo dentro da pasta /etc/init.d/firewall
Eu ate tentei, mas quando dou um "cat /etc/init.d/firewall" aparece "acesso negado", aceito sugestões.

Obrigado!
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 09:47
Citar
iptables -A FORWARD -i eth1 -p tcp --dport 3128 -j ACCEPT
O correto seria colocar na cadeia INPUT, já que vc está redirecionando. Mas o mais provável é que simplesmente não seja necessário.

Quando vc executa esses comandos manualmente, o proxy transparente funciona?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 06 de Junho de 2012, 14:14
Citar
iptables -A FORWARD -i eth1 -p tcp --dport 3128 -j ACCEPT
O correto seria colocar na cadeia INPUT, já que vc está redirecionando. Mas o mais provável é que simplesmente não seja necessário.

Quando vc executa esses comandos manualmente, o proxy transparente funciona?

Quando eu faço manualmente também não funciona.
Tem outra sugestão de regra?

Obrigado!
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 14:38
A regra é essa, não tem outra. Ou funciona, ou tem alguma outra coisa te atrapalhando.

Já viu se não é o firewall do ubuntu -- o UFW --- que está ativo?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 06 de Junho de 2012, 15:22
A regra é essa, não tem outra. Ou funciona, ou tem alguma outra coisa te atrapalhando.

Já viu se não é o firewall do ubuntu -- o UFW --- que está ativo?

digitei "ufw status" e deu como desativado.
Ai digitei "ufw enable".

Mas ainda continua tendo que configurar o Internet Explorer.

Não estou acredito ...
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 15:43
Mantenha o ufw desativado até segunda ordem. Execute estes comandos e cole o resultado aqui.

sudo iptables -t nat -L -v -n

sudo iptables -L -v -n
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 06 de Junho de 2012, 15:59
Mantenha o ufw desativado até segunda ordem. Execute estes comandos e cole o resultado aqui.

sudo iptables -t nat -L -v -n

sudo iptables -L -v -n


iptables -t nat -L -v -n
Código: [Selecionar]
Chain PREROUTING (policy ACCEPT 66 packets, 4708 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 INPUT (policy ACCEPT 4 packets, 208 bytes)
 pkts bytes target     prot opt in     out     source               destination

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

Chain POSTROUTING (policy ACCEPT 10 packets, 990 bytes)
 pkts bytes target     prot opt in     out     source               destination

iptables -L -v -n
Código: [Selecionar]
Chain INPUT (policy ACCEPT 655 packets, 248K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3128

Chain OUTPUT (policy ACCEPT 686 packets, 267K bytes)
 pkts bytes target     prot opt in     out     source               destination
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 16:32
As estações de trabalho são windows? Se forem, execute este comando em uma delas, cole o resultado aqui.

ipconfig /all
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 06 de Junho de 2012, 17:40
As estações de trabalho são windows? Se forem, execute este comando em uma delas, cole o resultado aqui.

ipconfig /all

Coloquei ip fix na extação de trabalho (windows).
Pelo resultado do comando que mostrei, esta tudo ok?

Configuração:

Ip : 192.168.1.110
Mascara: 255.255.255.0
Gateway: 192.168.1.254

DNS Preferencial: 192.168.1.254
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 17:54
A estação não está usando o proxy configurado no momento, está?

Eu imaginei que por algum motivo a estação não estivesse saindo por esse gateway. O que aliás é consistente com o fato de vc não ter tráfego nenhum de forward.

Diga uma coisa, por acaso o erro que vc recebe é de que "O navegador não conseguiu localizar <url>"?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 06 de Junho de 2012, 22:54
A estação não está usando o proxy configurado no momento, está?

Eu imaginei que por algum motivo a estação não estivesse saindo por esse gateway. O que aliás é consistente com o fato de vc não ter tráfego nenhum de forward.

Diga uma coisa, por acaso o erro que vc recebe é de que "O navegador não conseguiu localizar <url>"?

Sim, eu estava usando a estação com configuração de proxy no Internet Explorer.
HuMmMm ... agora só sexta para eu te passar a mensagem de erro.

Tem alguma solução. Obrigado mais uma vez.
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 06 de Junho de 2012, 23:44
Se o erro for de URL não encontrada, pode ser pq vc está passando um DNS inválido pras estações. Pode fazer um teste, abrir uma janela de comandos na estação e tentar pingar o nome de algum site (tipo, "www.google.com"). Se der erro, com certeza é DNS inválido.

"By the way"... você está apontando o DNS pro gateway. Mas você ativou algum servidor DNS nesse servidor?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 08 de Junho de 2012, 08:56
Se o erro for de URL não encontrada, pode ser pq vc está passando um DNS inválido pras estações. Pode fazer um teste, abrir uma janela de comandos na estação e tentar pingar o nome de algum site (tipo, "www.google.com"). Se der erro, com certeza é DNS inválido.

"By the way"... você está apontando o DNS pro gateway. Mas você ativou algum servidor DNS nesse servidor?

O erro é "O Internet Explorer não pode exibir a página da Web".
Realmente não pingou o "www.google.com.br" no Dos, mesmo eu colocando os servidores de DNS da GVT. (200.175.5.139 e 200.175.89.139)

Meu Ubuntu é:
Ubuntu 12.04 LTS  (Server x86)

Squid:
Squid 3.1.19


Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 08 de Junho de 2012, 11:21
Você ativou o encaminhamento de pacotes?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 08 de Junho de 2012, 12:35
Você ativou o encaminhamento de pacotes?

Como que faz?
Só deixei este comando no arquivo rc.local:
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128
iptables -A FORWARD -i eth1 -p tcp --dport 3128 -j ACCEPT
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 08 de Junho de 2012, 13:41
Citar
Como que faz?
Edite o arquivo /etc/sysctl.conf, retire o "#" do início da linha que tem "net.ipv4.ip_forward = 1".

Informe-se também sobre o pacote "dnsmasq", acho que ele vai ser útil pra você.
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 09 de Junho de 2012, 10:21
Citar
Como que faz?
Edite o arquivo /etc/sysctl.conf, retire o "#" do início da linha que tem "net.ipv4.ip_forward = 1".

Informe-se também sobre o pacote "dnsmasq", acho que ele vai ser útil pra você.

Fiz isso, agora quando coloco o ip no navegador ele passa pelo o proxy,
pois coloquei uns bloqueio de site e funcionou.

E fiz o comando: iptables -L -v -n
Código: [Selecionar]
Chain INPUT (policy ACCEPT 86424 packets, 75M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 68 packets, 3302 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3128

Chain OUTPUT (policy ACCEPT 101K packets, 76M bytes)
 pkts bytes target     prot opt in     out     source               destination

Só que se eu tirar a cofiguração do navegador a internet não funciona.
O comando: iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128
tem que usar o eth1 mesmo? esta é minha placa com a configuração local, a eth0 é onde esta plugado o modem.

Obrigado!
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 09 de Junho de 2012, 15:12
Sim, a regra está correta, pois você tem que redirecionar o que entra pela interface da rede local.

Ainda está usando o servidor DNS apontado pro gateway, ou apontou pra um servidor válido da internet (e.g. google 8.8.8.8, OPenDNS 208.67.220.220)?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 09 de Junho de 2012, 16:30
Sim, a regra está correta, pois você tem que redirecionar o que entra pela interface da rede local.

Ainda está usando o servidor DNS apontado pro gateway, ou apontou pra um servidor válido da internet (e.g. google 8.8.8.8, OPenDNS 208.67.220.220)?

Estava com o dns da gvt mesmo.
Te como eu colocar este dns no própio proxy?
Mas não vai poder ser servidor de dns, pois vou fazer um servidor de dominio Windows Server, e ele é obrigatório ter um dns.

Cara, não entendo.
Acabei de instalar este linux, não fiz NADA para dar este peteco.
Acho que vou formatar, e se não der ainda, vou colocar uma versão mais antiga.

Tem outra ideia?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 09 de Junho de 2012, 18:29
O problema todo é que vc ainda não fez esse servidor DNS interno. Quando vc configurar, as máquinas vão funcionar normalmente.

Quando as máquinas usam o proxy configurado, elas conversam com o proxy, e pedem a ele que abra o URL. Assim elas não precisam de DNS pra navegar.

Já quando você usa o proxy transparente, a máquina faz as próprias consultas de DNS, e tenta abrir diretamente as paǵinas. Assim, se elas não tiverem um DNS funcional, elas não vão conseguir nada.

Entende? Seu problema não é no proxy, nem no redirecionamento; seu problema é que as máquinas não estão conseguindo fazer consultas DNS.
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 09 de Junho de 2012, 20:08
O problema todo é que vc ainda não fez esse servidor DNS interno. Quando vc configurar, as máquinas vão funcionar normalmente.

Quando as máquinas usam o proxy configurado, elas conversam com o proxy, e pedem a ele que abra o URL. Assim elas não precisam de DNS pra navegar.

Já quando você usa o proxy transparente, a máquina faz as próprias consultas de DNS, e tenta abrir diretamente as paǵinas. Assim, se elas não tiverem um DNS funcional, elas não vão conseguir nada.

Entende? Seu problema não é no proxy, nem no redirecionamento; seu problema é que as máquinas não estão conseguindo fazer consultas DNS.

Uma vez eu fiz um servidor proxy, e coloquei transparente, não instalei um servidor DNS no linux, era a Linux Ubuntu Server 10.04.
Não vi em outros tópicos as pessoas falarem que instalou um servidor dns no servidor proxy.

Este outro servidor que eu fiz, usei o seguinte arquivo de firewall:

Código: [Selecionar]
#!/bin/sh
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp

############################
# Definicoes das Variaveis #
############################
IR0="eth1"
IR1="eth2"
UP_PORTS="1024:65535"
D_PORTS=":1024"

#Servidores NTP
NTP1="200.20.186.75"
NTP2="200.20.186.94"

export IR0 IR1 UP_PORTS D_PORTS NTP1 NTP2

#####################################
##### Definicao de Policiamento #####
####################################
# Tabela filter
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
     
##### Protecao contra IP Spoofing #####
     for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
      echo 1 >$i
     done
     
##### Ativacao do redirecionamento de pacotes (requerido para NAT) #####
     echo "1" >/proc/sys/net/ipv4/ip_forward

###############################################################
route add default gw 10.1.1.1
###############################################################

# Redirecionando Porta 80 para SQUID
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 80 -j REDIRECT --to-port 3128
 

# Direcionamento de TS para o servidor Windows
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 3389 -j DNAT --to 192.168.0.210:3389

#Direcionamento do ponto eletronico
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 2001 -j DNAT --to 192.168.0.201:2001
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 2101 -j DNAT --to 192.168.0.201:2101
iptables -t nat -A PREROUTING -p tcp -i $IR0 --dport 2601 -j DNAT --to 192.168.0.201:2601

# Masquerade
iptables -t nat -A POSTROUTING -o $IR0 -j MASQUERADE

E deixei o IR0=eth1 (minha placa para rede local) e IR1=eth0 (minha placa onde conecto o modem), seria esta as alterações né?
E mesmo com este arquivo o proxy não funcionou transparente, e funcionava no proxy que fiz com o Linux Ubuntu 10.04 Server.

Então vc acha que o problema pode ser o dns que coloco nas estações? Vou testar estes dns que vc passou.
O que quebra minha cabeça é que não criei servidor de dns neste Linux que fiz.

Obrigado!
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 11 de Junho de 2012, 10:32
zekkerj mesmo coloca o DNS do Google e OpenDNS não consigo ping "www.google.com.br" pelo dos,
mesmo configurando o Proxy no I.E. e sem configurar continuar não acessando a internet, mesmo com estes dns.

Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 11 de Junho de 2012, 16:49
zekkerj consegui resolver o problema e de um jeito muito simples.

Acrescentei no rc.local:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Pronto ... só isso, esta funcionando transparante.
Agora a questão do dns ainda continua, se eu coloco o ip do proxy não pinga no dos, se eu coloco o ip do google pinga.

Li alguns foruns sobre dnsmasq e achei muito confuso, um diz que colocar no arquivo de config dele o ip da própia maquina, na linha "listen-address", e outro ip do opendns.
Descomentar e colocar o ip da maquina, aí tem outro arquivo, alguma coisa dhcp ( este arquivo seria apenas quando o pc também for servidor dhcp?).

Se poder me orientar só isso seria demais.
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 11 de Junho de 2012, 17:18
Então a sua rede interna não era a eth1, e sim a eth0?
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 11 de Junho de 2012, 17:57
Então a sua rede interna não era a eth1, e sim a eth0?

Não ... minha rede interna é eth1 mesmo.
Vou fazer um teste, usar esta regra no eth1 e ver se funciona também.

E a questão do dnsmasq, tem uma dica?

Obrigado!
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: zekkerj em 12 de Junho de 2012, 00:42
A única forma dessa regra ter funcionado é se a sua rede interna estiver na eth0,e não na eth1.

A regra que você colocou diz pra fazer masquerade nos pacotes que entram pela eth0. Ora, se isso fez funcionar, é pq os pacotes da sua rede local estão entrando pela eth0, não pela eth1.
Título: Re: Problema em deixar o PROXY transparente.
Enviado por: EuripedesXD em 12 de Junho de 2012, 21:20
A única forma dessa regra ter funcionado é se a sua rede interna estiver na eth0,e não na eth1.

A regra que você colocou diz pra fazer masquerade nos pacotes que entram pela eth0. Ora, se isso fez funcionar, é pq os pacotes da sua rede local estão entrando pela eth0, não pela eth1.

Cara ... foi como eu disse, fiz o masquerade na eth0 (interface onde esta conectado o modem da gvt) e o proxy funcionou transparente.
Quando eu fiz o masquerade na eth1 (interface da rede local) não funcionava transparente.

Muito obrigado pela sua ajuda e atenção.

obrigado!