Problema em deixar o PROXY transparente.

Iniciado por EuripedesXD, 05 de Junho de 2012, 11:18

tópico anterior - próximo tópico

zekkerj

CitarComo 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ê.
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

EuripedesXD

Citação de: zekkerj online 08 de Junho de 2012, 13:41
CitarComo 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
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!

zekkerj

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)?
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

EuripedesXD

Citação de: zekkerj online 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)?

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?

zekkerj

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.
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

EuripedesXD

Citação de: zekkerj online 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.

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:


#!/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!

EuripedesXD

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.


EuripedesXD

#22
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.

zekkerj

Então a sua rede interna não era a eth1, e sim a eth0?
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

EuripedesXD

Citação de: zekkerj online 11 de Junho de 2012, 17:18
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!

zekkerj

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.
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

EuripedesXD

Citação de: zekkerj online 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.

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!