Squid + dhcp = cliente não navega na internet

1. Squid + dhcp = cliente não navega na internet

Lesley Ribeiro
LesleyRibeiro

(usa CentOS)

Enviado em 25/10/2009 - 14:01h

Caros Senhores,
Já trabalho há 2 anos com linux, tenho conhecimento em algumas áreas desse Sistema Operacional... mas como mostrado nessa pergunta... estou em apuros!
O que quero fazer é: clientes se conectarem ao meu switch obtendo ip dhcp e saiam para a internet passando pelo squid, que está transparente.
Essas são minhas configurações:
o modem tem ip 10.1.1.1 e está gerando ip dhcp para quem se conecta nele, mas estou usando ip statico na eth0 (a placa que conecto nele).
A eth0 que está conectata no modem está com o ip 10.1.1.5
a eth1 está com o ip 192.168.1.100
veja o arquivo /etc/network/interface:
root@linux-desktop:/home/linux# cat /etc/network/interfaces

# ----- LOOPBACK

auto lo

iface lo inet loopback



# ----- INTERNET

auto eth0

iface eth0 inet static

address 10.1.1.5

netmask 255.255.255.0

gatway 10.1.1.1

network 10.1.1.0

broadcast 10.255.255.255

gateway 10.1.1.1



# ----- LAN

auto eth1

iface eth1 inet static

address 192.168.1.100

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

root@linux-desktop:/home/linux#

númerei todas minhas dúvidas, aí está a primeira:
1º eu não sei se devo colocar as eth's em redes diferentes ou se devo deixa-las na mesma rede?

2º eu devo colocar gateway na eth1? nesse caso eu não coloquei. Em caso positivo, qual deve ser o gateway da eth1, porque o da eth0 está sendo o ip do modem: 10.1.1.1?

O DHCP
o serviço de dhcp está funcionando. Quando conecto uma máquina no switch ela ganha ip dentro do range especificado nas confirações.
veja as últimas linhas do arquivo /etc/dhcp3/dhcpd.conf:
root@linux-desktop:/home/linux# cat /etc/dhcp3/dhcpd.conf
ddns-update-style none;

default-lease-time 600;

max-lease-time 7200;

authoritative;



subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.150;

option routers 192.168.1.1;

option domain-name-servers 200.225.157.104;

option domain-name-servers 200.225.157.105;

option broadcast-address 192.168.1.255;

}

root@linux-desktop:/home/linux#


veja que essa configuração vale para a eth1,

mais dúvidas:
3º Tem algo errado nessas configurações?
4º Meu range está definido como 192.168.1.100 até 192.168.1.150, a minha eth1 tem que ter ip dentro desse range? Eu estava usando 192.168.1.10, mas troquei para 192.168.1.100 porque achei que talvez teria algum problema.
5º Outro fato que não sei se está como deveria estar é o seguinte, as máquinas pegam ip de traz para frente. Exemplo: 191.168.1.149, 191.168.1.148, 191.168.1.147...
não sei se isso deveria ser assim ou se devia estar pegando: 191.168.1.101, 191.168.1.102...

Seguindo um tutorial da internet para configurar o meu servidor dhcp, criei o seguinte arquivo:
/etc/iftab, com o conteúdo:
root@linux-desktop:/home/linux# cat /etc/iftab

eth0 mac 00:50:8d:5f:ec:03

eth1 mac 00:60:08:af:96:f3

root@linux-desktop:/home/linux#


são as eth's e seus respectivos mac address,
6º isso deveria existir? e se sim, está correto?

Depois, seguindo o mesmo tutotial, fiz esse passo:
“Compartilhando e ativando o servidor
Agora vamos ativar o compartilhamento com as seguintes regras no shell:

# modprobe iptable_nat
echo > 1 /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE”
7º isso para o minas configurações, está correto?

Para finalizar a configuração do dhcp, editei o arquivo /etc/default/dhcp3-server:
root@linux-desktop:/home/linux# cat /etc/default/dhcp3-server

# Defaults for dhcp initscript

# sourced by /etc/init.d/dhcp

# installed at /etc/default/dhcp3-server by the maintainer scripts

# This is a POSIX shell fragment

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?

# Separate multiple interfaces with spaces, e.g. "eth0 eth1".

INTERFACES="eth1"

root@linux-desktop:/home/linux#

Bom como visto, nesse arquivo o servidor foi configurado para escutar apenas uma placa como rede local.

8º isso está correto?

O SQUID...
A função do squid nesse caso é só para realizar armazenamento de cache.
Na acl que digo qual rede terá acesso a intenet eu coloquei:
acl redelocal src 192.168.1.0/24

http_access allow redelocal


ou seja, disse ao squid para permitir a acesso à rede interna: 192.168.1.0 .

8° deveria essa acl estar assim:
acl redelocal src 10.1.1.0/24

http_access allow redelocal


qual rede devo colocar nesse campo?

segue meu squid.conf:
root@linux-desktop:/home/linux# cat /etc/squid/squid.conf


# Squid.conf #


# Autor: #

# Lesley Santos Ribeiro #


##### Dados do Squid #####


http_port 3128 transparent

visible_hostname linux-desktop


##### Configuração do cache #######

#### Cache do Windows Update #####

refresh_pattern windowsupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims

refresh_pattern download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims

refresh_pattern www.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims

refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims


cache_mem 128 MB

cache_swap_low 90

cache_swap_high 95

maximum_object_size 300 MB

maximum_object_size_in_memory 200 KB

minimum_object_size 0 KB

cache_replacement_policy lru

memory_replacement_policy lru

cache_dir ufs /var/spool/squid 10000 16 256

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

pid_filename /var/run/squid.pid

log_mime_hdrs on

hosts_file /etc/hosts

redirect_children 5

redirect_rewrites_host_header on


#Mensagens de erro do Squid em Português

#error_directory /usr/share/squid/errors/Portuguese


# Localização do arquivo de log do Squid

cache_access_log /var/log/squid/access.log


# Atualização do Cache

refresh_pattern ^ftp: 15 20% 2280

refresh_pattern ^gopher: 15 20% 2280

refresh_pattern . 15 20% 22820


### Configuracao Minima Recomendada #####


acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 # https

acl SSL_ports port 563 # snews

acl SSL_ports port 873 # rsync

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 # https

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl Safe_ports port 631 # cups

acl Safe_ports port 873 # rsync

acl Safe_ports port 901 # SWAT

acl purge method PURGE

acl CONNECT method CONNECT


### Minhas Regras ######

acl redelocal src 192.168.1.0/24



##### Minhas Acoes ####
http_access allow redelocal


#### Negar Acessos Externos ####


http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports


#### Liberar acesso para a rede local ###
http_access allow localhost

http_access allow redelocal


#### Bloquear tudo que nao esteja mencionado ####

http_access deny all

root@linux-desktop:/home/linux#


Agora vamos ao grande motivo dessa pergunta:
os clientes que eu conecto ao switch recebem ip pelo dhcp mas, não navegam na internet!!!
existe algo que ainda devo fazer???
já pedi ajuda para meus colegas mais experientes, estou há uma semana tentando resolver esse probleminha.

Agradeço desde já a todos da comunidade Linux.



  


2. Re: Squid + dhcp = cliente não navega na internet

Luis Carlos da Silva
luisc

(usa CentOS)

Enviado em 25/10/2009 - 20:14h

olha, vc tem um comentario que deve ser retirado nesta linha (modprobe iptable_nat)
acrecente estas linhas.

# permite o acesso do micros da rede local
iptables -A INPUT -i eth1 -j ACCEPT

# permite pacotes transmitidos através da interface de loopback
iptables -A INPUT -i lo -j ACCEPT

# bloqueia conexão nas demais portas, protegendo o servidor.
iptables -A INPUT -p tcp --syn -j DROP

# para redirecionar as requisições recebida na porta 80 para o squid
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


quanto ao dhcp a setaxe é.

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 208.67.222.222,208.67.220.220;
option broadcast-addres 192.168.1.255;
}


3. Re: Squid + dhcp = cliente não navega na internet

Lesley Ribeiro
LesleyRibeiro

(usa CentOS)

Enviado em 26/10/2009 - 14:15h

Luis,
Fiz a seguinte sequência de comando como vc disse:
root@linux-desktop:/home/linux# modprobe iptable_nat
root@linux-desktop:/home/linux# echo > 1 /proc/sys/net/ipv4/ip_forward
root@linux-desktop:/home/linux# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
root@linux-desktop:/home/linux# iptables -A INPUT -i eth1 -j ACCEPT
root@linux-desktop:/home/linux# iptables -A INPUT -i lo -j ACCEPT
root@linux-desktop:/home/linux# iptables -A INPUT -p tcp --syn -j DROP
root@linux-desktop:/home/linux# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
root@linux-desktop:/home/linux#

O cliente pegou ip 192.168.1.148 através do switch que está na eth1.
mas ainda não conseguiu entrar na internet.
continuo acessando a rede somento no servidor que está com a placa eth0 conectada ao modem: ip do servidor: 10.1.1.5, statico.

não sei o que deve ser...
e obrigado por estar me ajudando.


4. script para a navegação do servidor

Lesley Ribeiro
LesleyRibeiro

(usa CentOS)

Enviado em 26/10/2009 - 14:48h

Luis, eu criei um arquivo com as confirações que vc me recomendou, mas sempre que executo o arquivo o servidor não consegue navegar na net.
segue script:
root@linux-desktop:/home/linux# cat scriptIptables
#!/bin/bash
# Carrega módulos
modprobe iptable_nat
# Limpa regras
iptables -F
iptables -t nat -F
## SNAT
echo > 1 /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
root@linux-desktop:/home/linux#

quando tento pingar o modem, após executar esse script, é mostrado a mensagem: operation not permited.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts