Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Olá pessoal,
Tenho um pequeno problema. Dentro das minhas regras de firewall, criei uma regra para fazer proxy transparente, descrita abaixo:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Assim funciona que é uma beleza, todo mundo que está na interface eth0 sai para a internet usando o squid.
Só que tenho um problema, um usuário dessa interface não pode sair para a internet usando o Proxy Transparente, somente ele deve sair sem proxy, o restante do pessoal deve usar o proxy!
A pergunta é... 
Como fazer para que somente o ip 10.10.1.50 não saia para internet 
usando o Proxy?
Abraços
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		
	Citação:
	
		
		
			
				Postado originalmente por felco
				
			
			Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra deve vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
			
		
	 
 Não entendi!
Como seria a regra completa?
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		seria isso?
iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT
 :?
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		
	Citação:
	
		
		
			
				Postado originalmente por RicardoVS
				
			
			seria isso?
iptables -t nat -A PREROUTING -i eth0 -s 200.202.246.198 -d 0/0 -j ACCEPT
 :?
			
		
	 
 Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Depende, o IP que vc quer que passe direto pelo proxy eh 200.202.246.198?! Nao era 10.10.1.50?[/quote]
é que agora vou mudar o IP do usuário...
seria isso mesmo? Pois não deu certo!
Meu firewall está assim:
#!/bin/sh
 # Variaveis
 # -------------------------------------------------------
 IF_EXTERNA=eth0
 IF_LOJA=eth1
 IF_WIRELESS=eth3
 IF_LINUX=eth2
 # Ativa modulos
 # -------------------------------------------------------
 /sbin/modprobe iptable_nat
 /sbin/modprobe ip_conntrack
 /sbin/modprobe ip_conntrack_ftp
 /sbin/modprobe ip_nat_ftp
 /sbin/modprobe ipt_LOG
 /sbin/modprobe ipt_REJECT
 /sbin/modprobe ipt_MASQUERADE
 # Ativa roteamento no kernel
 # -------------------------------------------------------
 echo "1" > /proc/sys/net/ipv4/ip_forward
 # Protecao contra IP spoofing
 # -------------------------------------------------------
 echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
 # Zera regras
 # -------------------------------------------------------
 iptables -F
 iptables -X
 iptables -F -t nat
 iptables -X -t nat
 iptables -F -t mangle
 iptables -X -t mangle
 # Determina a politica padrao
 # -------------------------------------------------------
 iptables -P INPUT DROP
 iptables -P OUTPUT DROP
 iptables -P FORWARD DROP
 #########################################################
 # Tabela FILTER
 #########################################################
 # Dropa pacotes TCP indesejaveis
 # -------------------------------------------------------
 iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
 # Dropa pacotes mal formados
 # -------------------------------------------------------
 iptables -A INPUT -i $IF_EXTERNA -m unclean -j DROP
 # Aceita os pacotes que realmente devem entrar
 # -------------------------------------------------------
 iptables -A INPUT -i ! $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
 iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
 # Protecao contra trinoo
 # -------------------------------------------------------
 iptables -N TRINOO
 iptables -A TRINOO -j DROP
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27444 -j TRINOO
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 27665 -j TRINOO
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 31335 -j TRINOO
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 34555 -j TRINOO
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 35555 -j TRINOO
 # Protecao contra tronjans
 # -------------------------------------------------------
 iptables -N TROJAN
 iptables -A TROJAN -j DROP
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 666 -j TROJAN
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 4000 -j TROJAN
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6000 -j TROJAN
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 6006 -j TROJAN
 iptables -A INPUT -p TCP -i $IF_EXTERNA --dport 16660 -j TROJAN
 # Protecao contra worms
 # -------------------------------------------------------
 iptables -A FORWARD -p tcp --dport 135 -i $IF_LOJA -j REJECT
 iptables -A FORWARD -p tcp --dport 135 -i $IF_WIRELESS -j REJECT
 iptables -A FORWARD -p tcp --dport 135 -i $IF_LINUX -j REJECT
 # Protecao contra syn-flood
 # -------------------------------------------------------
 iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT
 # Protecao contra ping da morte
 # -------------------------------------------------------
 # Aceita a requisição do PING
 iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 # Protecao contra port scanners
 # -------------------------------------------------------
 iptables -N SCANNER
 iptables -A SCANNER -j DROP
 iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags ALL NONE -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags ALL ALL -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i $IF_EXTERNA -j SCANNER
 iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i $IF_EXTERNA -j SCANNER
 # Libera acesso externo a determinadas portas
 # -------------------------------------------------------
 iptables -A INPUT -p tcp --dport 443 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p udp --dport 443 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 22 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 21 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 3306 -i $IF_WIRELESS -j ACCEPT
 iptables -A INPUT -p tcp --dport 3306 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 3306 -i $IF_LOJA -j ACCEPT
 iptables -A INPUT -p tcp --dport 5800 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 5900 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 80 -i $IF_EXTERNA -j ACCEPT
 iptables -A INPUT -p tcp --dport 5800 -i $IF_LINUX -j ACCEPT
 iptables -A INPUT -p tcp --dport 5900 -i $IF_LINUX -j ACCEPT
 #########################################################
 # Tabela NAT
 #########################################################
 # Ativa mascaramento de saida
 # -------------------------------------------------------
 iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
# Libera o acesso para sair do Proxy Transparente
# -------------------------------------------------------
 iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT
# Proxy transparente
# -------------------------------------------------------
 iptables -t nat -A PREROUTING -i $IF_LOJA -p tcp --dport 80 -j REDIRECT --to-port 3128
 iptables -t nat -A PREROUTING -i $IF_WIRELESS -p tcp --dport 80 -j REDIRECT --to-port 3128
 iptables -t nat -A PREROUTING -i $IF_LINUX -p tcp --dport 80 -j REDIRECT --to-port 3128
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Hummmmmm eh verdade x)
Mas acho que esta DROP no OUTPUT
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Ahhhh sabia que eu nao tava viajando -j ACCEPT funciona sim, pq ele manda o pacote pra tabela filter, ele esta na tabela NAT entao ele vai pra tabela filter porque o destino dele eh a internet ele vai para FORWARD eh depois pra OUTPUT
# Ativa mascaramento de saida
# -------------------------------------------------------
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE
# Libera o acesso para sair do Proxy Transparente
# -------------------------------------------------------
iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT 
Eh isso mesmo POREM CONTUDO.... eu disse
Coloque uma regra acima dessa dizendo que -s 10.10.1.50 com -d indefinido(0/0) eh -j ACCEPT
Essa regra DEVE vir antes da regra que vc postou deve estar na mesma chain eh na mesma tabela
eh vc coloquei embaixo
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Ta certo, foi mal, mas esse IP que vc colocou ai 200.x.y.z? Nao eh pra ser um IP privado?!
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Mais eu coloquei assim e ainda nao funcionou, o cliente continua saindo com o IP do servidor. 
# Ativa mascaramento de saida 
# ------------------------------------------------------- 
iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE 
# Libera o acesso para sair do Proxy Transparente 
# ------------------------------------------------------- 
iptables -t nat -A PREROUTING -i $IF_WIRELESS -s 200.202.246.198 -d 0/0 -j ACCEPT 
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Calma ai cara, oq vc quis dizer com "continua saindo com o IP do servidor"?
Vai ser o IP do servidor nao pq vc esta saindo pelo Squid, isso eh indeferente, ele sai com IP do Firewall pq vc esta fazendo MASQUERADE nao SNAT
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Então me desculpe.
Preciso que o cliente saia para internet usando o IP valido dele! Por isso preciso que ele não passe pelo Proxy Transparente.
Entendeu?
	 
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
	
	
	
		Tirar apenas um IP para nao passar dentro do Proxy Transpare
	
	
		Sem muito estresse, na mesma regra de redirecionamento para o proxy transparente faça o seguinte...
                Código :
                
# iptables -t nat -A PREROUTING -i eth0 -s ! <ip do host a liberar> -p tcp --dport 80 -j REDIRECT --to-port 3128
  
Esta inserção diz + ou - o seguinte:
Redirecione tudo o que vem pela eth0, menos da fonte <ip do host...> , com porta de destino 80 para a porta 3128
Desta forma vc estará excluindo o IP postado depois da "!" da regra de redirecionamento.
Qualquer coisa, escreva...
T+