{"id":7,"date":"2010-05-02T20:56:54","date_gmt":"2010-05-02T23:56:54","guid":{"rendered":"http:\/\/www.tia-go.net\/wordpress\/?p=7"},"modified":"2010-05-16T12:52:43","modified_gmt":"2010-05-16T15:52:43","slug":"debian-etch-roteador-basico-dhcpd-squid-proxy-transparente","status":"publish","type":"post","link":"https:\/\/www.tia-go.net\/wordpress\/debian-etch-roteador-basico-dhcpd-squid-proxy-transparente\/","title":{"rendered":"Debian Etch Roteador B\u00e1sico + DHCPD + Squid Proxy Transparente"},"content":{"rendered":"<div>\n<h2>\u00cdndice de conte\u00fado<\/h2>\n<\/div>\n<ul>\n<li><a href=\"#Instalando_um_Roteador_B.C3.A1sico_com_Debian_Etch_.2B_DHCPD_.2B_Proxy_Transparente_com_Squid._.28imcompleto_ainda....29\">1 Instalando um Roteador B\u00e1sico com Debian Etch + DHCPD + Proxy Transparente com Squid. (imcompleto ainda&#8230;)<\/a>\n<ul>\n<li><a href=\"#Introdu.C3.A7.C3.A3o\">1.1 Introdu\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"#Ingredientes_da_receita\">1.2 Ingredientes da receita<\/a><\/li>\n<li><a href=\"#Instala.C3.A7.C3.A3o_e_configura.C3.A7.C3.A3o_do_DHCP_Server\">1.3 Instala\u00e7\u00e3o e configura\u00e7\u00e3o do DHCP Server<\/a><\/li>\n<li><a href=\"#Instala.C3.A7.C3.A3o_e_configura.C3.A7.C3.A3o_do_proxy_Squid\">1.4 Instala\u00e7\u00e3o e configura\u00e7\u00e3o do proxy Squid<\/a><\/li>\n<li><a href=\"#Fazendo_o_proxy_transparente\">1.5 Fazendo o proxy transparente<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a name=\"Instalando_um_Roteador_B.C3.A1sico_com_Debian_Etch_.2B_DHCPD_.2B_Proxy_Transparente_com_Squid._.28imcompleto_ainda....29\"><\/a><\/p>\n<h2>Instalando um Roteador B\u00e1sico com Debian Etch + DHCPD + Proxy Transparente com Squid. (imcompleto ainda&#8230;)<\/h2>\n<p><a name=\"Introdu.C3.A7.C3.A3o\"><\/a><\/p>\n<h3>Introdu\u00e7\u00e3o<\/h3>\n<p>Voc\u00ea j\u00e1 precisou de uma m\u00e1quina para ser um firewall bem simples, somente como servidor DHCP e um proxy,<br \/>\npara gerenciar sua rede e facilitar sua vida??? J\u00e1?? E n\u00e3o fez por que??<br \/>\nBem, se voc\u00ea j\u00e1 pensou e n\u00e3o fez, vou mostrar como fazer!<br \/>\nAbaixo, vou descrever como instalar um servidor que ser\u00e1 seu roteador de borda, o cara que vai receber seu link<br \/>\npara o mundo externo e gerenciar sua rede. Para isso, teremos a ajuda de um servidor DHCP que, al\u00e9m de dar endere\u00e7os IPs din\u00e2micos, tamb\u00e9m ir\u00e1 passar IPs fixos.<br \/>\nDetalhes sobre DHCP na <a title=\"http:\/\/pt.wikipedia.org\/wiki\/Dhcp\" rel=\"nofollow\" href=\"http:\/\/pt.wikipedia.org\/wiki\/Dhcp\">Wikip\u00e9dia<\/a>.<br \/>\nTamb\u00e9m usaremos um servidor proxy, que ajudar\u00e1 o administrador a ter um melhor rendimento de sua rede,<br \/>\nj\u00e1 que o proxy guardar\u00e1 uma c\u00f3pia em seu cache das p\u00e1ginas mais acessadas.<br \/>\nAl\u00e9m disso, com o servidor proxy o administrador poder\u00e1 criar ACLs para controlar quais sites os usu\u00e1rios de sua rede podem acessar.<\/p>\n<p><a name=\"Ingredientes_da_receita\"><\/a><\/p>\n<h3>Ingredientes da receita<\/h3>\n<ul>\n<li> 1 &#8211; M\u00e1quina com Sistema Operacional GNU\/Linux Debian Etch instalado;<\/li>\n<li> 2 &#8211; Placas de rede;<\/li>\n<li> 1 &#8211; Servidor DHCP;<\/li>\n<li> 1 &#8211; Servidor Proxy;<\/li>\n<\/ul>\n<p>Para prepararmos o bolo usaremos o GNU\/Linux Debian Etch (meu sistema operacional preferido!), que nos fornece<br \/>\ntodos os recursos necess\u00e1rios.<br \/>\nN\u00e3o irei abordar nesse texto a instala\u00e7\u00e3o do sistema operacional, vou partir do ponto onde voc\u00ea j\u00e1 tem um<br \/>\nDebian Etch instalado e funcionando.<br \/>\nEssa maquina tamb\u00e9m dever\u00e1 ter 2 placas de Rede, eth0 e eth1.<br \/>\nA placa eth0 ser\u00e1 sua rede interna e eth1 a externa.<\/p>\n<p>A rede interna ser\u00e1 configurada da seguint forma:<\/p>\n<p>[plain]<br \/>\n~# grep eth0 -A5 \/etc\/network\/interfaces<br \/>\nauto eth0<br \/>\niface eth0 inet static<br \/>\naddress 192.168.0.1<br \/>\nnetwork 192.168.0.0<br \/>\nnetmask 255.255.255.0<br \/>\n[\/plain]<\/p>\n<p>Como essa interface somente serve para gerenciar da rede interna, ela n\u00e3o possui gateway, ela \u00e9 o gateway\u00a0\ud83d\ude42<br \/>\nA interface externa j\u00e1 dever\u00e1 ter sua configura\u00e7\u00e3o feita e funcionando antes de voce prosseguir.<\/p>\n<p>Bem, vamos ao que interessa!!!<\/p>\n<p><a name=\"Instala.C3.A7.C3.A3o_e_configura.C3.A7.C3.A3o_do_DHCP_Server\"><\/a><\/p>\n<h3>Instala\u00e7\u00e3o e configura\u00e7\u00e3o do DHCP Server<\/h3>\n<p>Em seu shell favorito vamos instalar o DHCPD:<\/p>\n<p>[plain]<br \/>\n~# apt-get update;apt-get install dhcp3-server<br \/>\n[\/plain]<\/p>\n<p>Ser\u00e1 emitido um aviso sobre a autoridade do servidor em sua rede, de OK e vamos continuar.<\/p>\n<p>Ap\u00f3s a instala\u00e7\u00e3o, digite em seu shell:<\/p>\n<p>[plain]<br \/>\n~# dpkg-reconfigure dhcp3-server<br \/>\n[\/plain]<\/p>\n<p>Ser\u00e1 solicitado qual a placa de rede onde o servidor DHCP ficar\u00e1 &#8220;escutando&#8221; por requisi\u00e7\u00f5es,<br \/>\ncoloque ent\u00e3o sua placa de rede INTERNA, eth0 e na tela seguinte, (autoridade de novo) de OK.<\/p>\n<p>Abra o arquivo \/etc\/dhcp3\/dhcpd.conf com seu editor de textos favorito e criar uma configura\u00e7\u00e3o<br \/>\nde DHCP padr\u00e3o:<\/p>\n<p>[plain]<br \/>\n~# vim \/etc\/dhcp3\/dhcpd.conf<br \/>\n[\/plain]<\/p>\n<p>O arquivo dever\u00e1 ficar mais ou menos assim:<\/p>\n<p>[plain]<br \/>\n#<br \/>\n# Sample configuration file for ISC dhcpd for Debian<br \/>\n#<br \/>\n# $Id: dhcpd.conf,v 1.1.1.1 2002\/05\/21 00:07:44 peloy Exp $<br \/>\n#<\/p>\n<p># The ddns-updates-style parameter controls whether or not the server will<br \/>\n# attempt to do a DNS update when a lease is confirmed. We default to the<br \/>\n# behavior of the version 2 packages (&#8216;none&#8217;, since DHCP v2 didn&#8217;t<br \/>\n# have support for DDNS.)<br \/>\nddns-update-style none;<\/p>\n<p># option definitions common to all supported networks&#8230;<br \/>\n#option domain-name &quot;example.org&quot;;<br \/>\noption domain-name-servers 192.168.0.1;<\/p>\n<p>#default-lease-time 3600;<br \/>\n#max-lease-time 7200;<\/p>\n<p># If this DHCP server is the official DHCP server for the local<br \/>\n# network, the authoritative directive should be uncommented.<br \/>\nauthoritative;<\/p>\n<p># Use this to send dhcp log messages to a different log file (you also<br \/>\n# have to hack syslog.conf to complete the redirection).<br \/>\nlog-facility local7;<\/p>\n<p># No service will be given on this subnet, but declaring it helps the<br \/>\n# DHCP server to understand the network topology.<\/p>\n<p>#subnet 10.152.187.0 netmask 255.255.255.0 {<br \/>\n#}<\/p>\n<p># This is a very basic subnet declaration.<\/p>\n<p>#subnet 10.254.239.0 netmask 255.255.255.224 {<br \/>\n#  range 10.254.239.10 10.254.239.20;<br \/>\n#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;<br \/>\n#}<\/p>\n<p># This declaration allows BOOTP clients to get dynamic addresses,<br \/>\n# which we don&#8217;t really recommend.<\/p>\n<p>#subnet 10.254.239.32 netmask 255.255.255.224 {<br \/>\n#  range dynamic-bootp 10.254.239.40 10.254.239.60;<br \/>\n#  option broadcast-address 10.254.239.31;<br \/>\n#  option routers rtr-239-32-1.example.org;<br \/>\n#}<\/p>\n<p># A slightly different configuration for an internal subnet.<br \/>\n#subnet 10.5.5.0 netmask 255.255.255.224 {<br \/>\n#  range 10.5.5.26 10.5.5.30;<br \/>\n#  option domain-name-servers ns1.internal.example.org;<br \/>\n#  option domain-name &quot;internal.example.org&quot;;<br \/>\n#  option routers 10.5.5.1;<br \/>\n#  option broadcast-address 10.5.5.31;<br \/>\n#  default-lease-time 600;<br \/>\n#  max-lease-time 7200;<br \/>\n#}<\/p>\n<p># Hosts which require special configuration options can be listed in<br \/>\n# host statements.   If no address is specified, the address will be<br \/>\n# allocated dynamically (if possible), but the host-specific information<br \/>\n# will still come from the host declaration.<\/p>\n<p>#host passacaglia {<br \/>\n#  hardware ethernet 0:0:c0:5d:bd:95;<br \/>\n#  filename &quot;vmunix.passacaglia&quot;;<br \/>\n#  server-name &quot;toccata.fugue.com&quot;;<br \/>\n#}<\/p>\n<p># Fixed IP addresses can also be specified for hosts.   These addresses<br \/>\n# should not also be listed as being available for dynamic assignment.<br \/>\n# Hosts for which fixed IP addresses have been specified can boot using<br \/>\n# BOOTP or DHCP.   Hosts for which no fixed address is specified can only<br \/>\n# be booted with DHCP, unless there is an address range on the subnet<br \/>\n# to which a BOOTP client is connected which has the dynamic-bootp flag<br \/>\n# set.<br \/>\n#host fantasia {<br \/>\n#  hardware ethernet 08:00:07:26:c0:a5;<br \/>\n#  fixed-address fantasia.fugue.com;<br \/>\n#}<\/p>\n<p># You can declare a class of clients and then do address allocation<br \/>\n# based on that.   The example below shows a case where all clients<br \/>\n# in a certain class get addresses on the 10.17.224\/24 subnet, and all<br \/>\n# other clients get addresses on the 10.0.29\/24 subnet.<\/p>\n<p>#class &quot;foo&quot; {<br \/>\n#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;<br \/>\n#}<\/p>\n<p>#shared-network 224-29 {<br \/>\n#  subnet 10.17.224.0 netmask 255.255.255.0 {<br \/>\n#    option routers rtr-224.example.org;<br \/>\n#  }<br \/>\n#  subnet 10.0.29.0 netmask 255.255.255.0 {<br \/>\n#    option routers rtr-29.example.org;<br \/>\n#  }<br \/>\n#  pool {<br \/>\n#    allow members of &quot;foo&quot;;<br \/>\n#    range 10.17.224.10 10.17.224.250;<br \/>\n#  }<br \/>\n#  pool {<br \/>\n#    deny members of &quot;foo&quot;;<br \/>\n#    range 10.0.29.10 10.0.29.230;<br \/>\n#  }<br \/>\n#}<\/p>\n<p>subnet 192.168.0.0 netmask 255.255.255.0 {<br \/>\n  range 192.168.0.10 192.168.0.20;<br \/>\n  option domain-name-servers 192.168.0.1;<br \/>\n  option routers 192.168.0.1;<br \/>\n  default-lease-time 3600;<br \/>\n  max-lease-time 7200;<br \/>\n}<br \/>\n[\/plain]<\/p>\n<p>O que interessa, s\u00e3o as linhas que n\u00e3o est\u00e3o comentadas (\u00f3bvio!!!), que vou explicar agora o que fazem:<\/p>\n<p>[plain]<br \/>\n~# ddns-update-style none;<br \/>\n[\/plain]<\/p>\n<p>Desativa o suporte a DNS din\u00e2mico.<\/p>\n<p>[plain]<br \/>\n~# option domain-name-servers 192.168.0.1;<br \/>\n[\/plain]<\/p>\n<p>Informa que o IP do servidor DNS padr\u00e3o. Caso voce tenha mais de uma sub-rede configurada no DHCP, esse servidor<br \/>\nser\u00e1 o padr\u00e3o, mas, voce poder\u00e1 configurar outro ou o mesmo, dentro da defini\u00e7\u00e3o da sub-rede.<\/p>\n<p>[plain]<br \/>\n~# authoritative;<br \/>\n[\/plain]<\/p>\n<p>Informa que esse \u00e9 o servidor DHCP com autoridade sobre a rede.<br \/>\nSempre mantenho 1 servidor DHCP na rede, mas, caso voce tenha mais de 1 \u00e9 bom saber qual \u00e9 o principal.<\/p>\n<p>[plain]<br \/>\n~# log-facility local7;<br \/>\n[\/plain]<\/p>\n<p>Informa a configura\u00e7\u00e3o do Syslog.<\/p>\n<p>[plain]<br \/>\nsubnet 192.168.0.0 netmask 255.255.255.0 {<br \/>\n  range 192.168.0.10 192.168.0.20;<br \/>\n  option domain-name-servers 192.168.0.1;<br \/>\n  option routers 192.168.0.1;<br \/>\n  default-lease-time 3600;<br \/>\n  max-lease-time 7200;<br \/>\n}<br \/>\n[\/plain]<\/p>\n<p>Essa \u00e9 a parte que realmente interessa, o bloco que define a configura\u00e7\u00e3o de uma subrede para o DHCP.<br \/>\nVamos analizar essa linha<\/p>\n<ul>\n<li> subnet 192.168.0.0 netmask 255.255.255.0 {<\/li>\n<\/ul>\n<p>Define a subrede 192.168.0.0 (network) com a mascara 255.255.255.0, que \u00e9 rede que usei no meu caso.<\/p>\n<ul>\n<li> range 192.168.0.10 192.168.0.20;<\/li>\n<\/ul>\n<p>Esse \u00e9 o range de IPs que o servidor DHCP der\u00e1 para as maquinas da rede, nesse caso do IP 10 ao 20.<br \/>\nVoc\u00ea pode ter mais de um range dentro da mesma rede, por exemplo:<\/p>\n<p>[plain]<br \/>\nrange 192.168.0.10 192.168.0.20;<br \/>\nrange 192.168.0.30 192.168.0.40;<br \/>\n[\/plain]<\/p>\n<ul>\n<li> option domain-name-servers 192.168.0.1;<\/li>\n<\/ul>\n<p>Servidor DNS que ser\u00e1 passado no DHCP para os clientes. Caso voc\u00ea n\u00e3o informe essa linha, ser\u00e1 usado o servidor<br \/>\nque definimos no in\u00edcio do arquivo.<\/p>\n<ul>\n<li> option routers 192.168.0.1;<\/li>\n<\/ul>\n<p>Endere\u00e7o do gateway que ser\u00e1 passado para os clientes DHCP.<\/p>\n<ul>\n<li> default-lease-time 3600;<\/li>\n<li> max-lease-time 7200;<\/li>\n<\/ul>\n<p>Defini\u00e7\u00f5es sobre o tempo em segundos que a informa\u00e7\u00e3o do DHCP ser\u00e1 v\u00e1lida e o tempo m\u00e1ximo dessa informa\u00e7\u00e3o.<br \/>\nAp\u00f3s esse tempo, o cliente DHCP ir\u00e1 fazer uma nova requisi\u00e7\u00e3o ao servidor para receber novas informa\u00e7\u00f5es.<\/p>\n<p>Ok, temos o servidor DHCP instalado e configurado. Vamos reiniciar o servi\u00e7o:<\/p>\n<p>[plain]<br \/>\n~# \/etc\/init.d\/dhcp3-server restart<br \/>\n[\/plain]<\/p>\n<p>Caso n\u00e3o ocorram erros, estamos com o DHCP completo. Se tiver erros, veja-os no syslog em <strong>\/var\/log\/syslog<\/strong><\/p>\n<p><a name=\"Instala.C3.A7.C3.A3o_e_configura.C3.A7.C3.A3o_do_proxy_Squid\"><\/a><\/p>\n<h3>Instala\u00e7\u00e3o e configura\u00e7\u00e3o do proxy Squid<\/h3>\n<p>Ok, tamb\u00e9m n\u00e3o vou falar muito do programa em si, mas sim do conceito.<br \/>\nUsaremos o squid como um cache proxy transparente, deixando a rede mais segura e r\u00e1pida.<\/p>\n<p>Primeiramente, vamos instalar o squid em nosso Debian Etch.<br \/>\nUsaremos a vers\u00e3o 2.6 do squid, pois ainda n\u00e3o testei o 3&#8230; sorry<\/p>\n<p>[plain]<br \/>\n~# apt-get update;apt-get install squid<br \/>\n[\/plain]<\/p>\n<p>Ap\u00f3s a instala\u00e7\u00e3o caso ocorra um erro na configura\u00e7\u00e3o ou hajam perguntas de ok e ignore-as, pois vamos configurar na m\u00e3o.<\/p>\n<p>Como o arquivo de configura\u00e7\u00e3o do squid \u00e9 bem grande, n\u00e3o vou coloca-lo aqui, somente vamos aos pontos que interessam.<br \/>\nAbra o arquivo \/etc\/squid\/squid.conf:<\/p>\n<p>[plain]<br \/>\n~# vim \/etc\/squid\/squid.conf<br \/>\n[\/plain]<\/p>\n<p>Procure pela linha que inicia com <strong>http_port 3128<\/strong> e vamos altera-la da seguinte forma:<\/p>\n<p>[plain]<br \/>\nhttp_port 192.168.0.1:3128 transparent<br \/>\n[\/plain]<\/p>\n<p>Essa linha define o proxy rodando sobre o IP 192.168.0.1 que \u00e9 o IP da sua placa eth0,<br \/>\nna porta 3128 que \u00e9 o padr\u00e3o do proxy, e como um proxy transparente.<\/p>\n<p>Em seguida, procure pela linha <strong># cache_mem 8 MB<\/strong>.<br \/>\nEssa linha define qual o tamanho de memoria o squid usar\u00e1 para cachear os objetos na mem\u00f3ria.<br \/>\nAltere-a da seguinte forma:<\/p>\n<p>[plain]<br \/>\ncache_mem 32 MB<br \/>\n[\/plain]<\/p>\n<p>32Mb \u00e9 um bom valor, mas, se voce n\u00e3o tiver essa mem\u00f3ria livre no sistema, use menos, 16Mb tamb\u00e9m \u00e9 legal.<\/p>\n<p>Vamos agora para a linha <strong># maximum_object_size 4096 KB<\/strong>, que serve para definir qual o tamanho m\u00e1ximo dos arquivos<br \/>\nque o squid ir\u00e1 armazenar no disco. Arquivos maiores n\u00e3o ser\u00e3o cacheados.<\/p>\n<p>[plain]<br \/>\nmaximum_object_size 20480 KB<br \/>\n[\/plain]<\/p>\n<p>Se voce tiver HD sobrando, aumente esse espa\u00e7o, eu estou colocando 20Mb, mas 100Mb tamb\u00e9m \u00e9 um valor bom.<\/p>\n<p>Agora, vamos para uma linha muito importante, procure por <strong># cache_dir ufs \/var\/spool\/squid 100 16 256<\/strong><\/p>\n<p>[plain]<br \/>\ncache_dir ufs \/var\/spool\/squid 2000 16 256<br \/>\n[\/plain]<\/p>\n<p>Essa linha quer dizer o seguinte:<\/p>\n<ul>\n<li> ufs: Sistema de arquivos que o squid usar\u00e1 para fazer seu cache, UFS \u00e9 o padr\u00e3o, mantenha ele.<\/li>\n<li> \/var\/spool\/squid: Diret\u00f3rio onde o squid ir\u00e1 manter seu cache, muito importante ter espa\u00e7o nessa parti\u00e7\u00e3o.<\/li>\n<li> 2000: O padr\u00e3o vem com 100, que \u00e9 a defini\u00e7\u00e3o em Mb de qual ser\u00e1 o espa\u00e7o do cache do squid. Se voce ter\u00e1 essa maquina<\/li>\n<\/ul>\n<p>somente para isso, pode usar por exemplo 20000, que seriam 20 Gb de cache.<\/p>\n<ul>\n<li> 16 256: Esses n\u00fameros definem a quantidade de diret\u00f3rios e sub-diret\u00f3rios que o squid usar\u00e1 para armazenar o cache, mantenha o padr\u00e3o.<\/li>\n<\/ul>\n<p>Essas s\u00e3o as configura\u00e7\u00f5es padr\u00e3o do squid, mas, ainda temos que liberar acesso a nossa rede, procure a linha:<\/p>\n<p>[plain]<br \/>\nhttp_access allow localhost<br \/>\n[\/plain]<\/p>\n<p>Ela fica um pouco abaixo do coment\u00e1rio:<\/p>\n<p>[plain]<br \/>\n# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS<br \/>\n[\/plain]<\/p>\n<p>Abaixo dessa linha, acrescente as seguintes linhas:<\/p>\n<p>[plain]<br \/>\nacl rede_interna src 192.168.0.0\/24<br \/>\nhttp_access allow rede_interna<br \/>\n[\/plain]<\/p>\n<p>Com isso, estamos criando uma uma acl <strong>rede_interna<\/strong> e liberando acesso a toda<br \/>\nrede 192.168.0.0 para acessar a internet livremente.<\/p>\n<p>Para terminar, procure pela seguinte linha:<\/p>\n<p>[plain]<br \/>\nTAG: visible_hostname<br \/>\n[\/plain]<\/p>\n<p>Caso sua maquina possua um hostname v\u00e1lido, voce n\u00e3o ter\u00e1 problemas, mas, caso seu hostname n\u00e3o esteja<br \/>\nbem configurado, altere essa linha deixando o nome que voce define para essa maquina na rede.<br \/>\nComo est\u00e1 linha est\u00e1 dentro de um bloco de explica\u00e7\u00e3o do que ela faz, coloque logo ap\u00f3s o bloco o valor.<br \/>\nO meu ficou como &#8220;meu_proxy&#8221;, ent\u00e3o:<\/p>\n<p>[plain]<br \/>\nvisible_hostname meu_proxy<br \/>\n[\/plain]<\/p>\n<p><strong><br \/>\n<\/strong><\/p>\n<p>Por enquanto acabamos com as configura\u00e7\u00f5es, ent\u00e3o, vamos reiniciar o squid:<\/p>\n<p>[plain]<br \/>\n~# \/etc\/init.d\/squid restart<br \/>\n[\/plain]<\/p>\n<p>Ap\u00f3s reiniciarmos o squid, caso n\u00e3o ocorra nenhum erro, temos um proxy funcionando.<br \/>\nMas, ele ainda n\u00e3o est\u00e1 sendo usado pela rede, pois, somente o trafego que passar pela<br \/>\nporta 3128, ser\u00e1 &#8220;proxyada&#8221;. Ent\u00e3o, precisamos fazer com que o trafego de porta 80 (HTTP),<br \/>\npasse pelo proxy. NEXT!!!<\/p>\n<p><a name=\"Fazendo_o_proxy_transparente\"><\/a><\/p>\n<h3>Fazendo o proxy transparente<\/h3>\n<p>Para que um proxy funcione, \u00e9 necess\u00e1rio que sejam adicionadas configura\u00e7\u00f5es no navegador do<br \/>\nusu\u00e1rio, normalmente nas configura\u00e7\u00f5es de rede, onde voce especifica o endere\u00e7o IP do servidor<br \/>\nproxy, a porta do proxy (3128) e para quais protocolos ele ser\u00e1 usado (FTP, HTTP, SSL, GOPHER,etc..).<\/p>\n<p>Essa \u00e9 uma forma de se usar, mas, requer uma configura\u00e7\u00e3o manual por parte do administrador da rede,<br \/>\nem cada uma das maquinas da rede.. Muitas vezes, uma maquina \u00e9 usada por mais de um usu\u00e1rio, onde cada um<br \/>\npossui configura\u00e7\u00f5es pr\u00f3prias para seu perfil, fazendo com que o administrador, tenha que configurar tamb\u00e9m<br \/>\no proxy, no navegador de cada um dos perfis da m\u00e1quina.<\/p>\n<p>Em um proxy transparente, quando um acesso \u00e9 requisitado para sair pela porta 80, o servidor roteador\/firewall,<br \/>\nredireciona a requisi\u00e7\u00e3o para a porta 3128, passando o trafego pelo proxy que devolver\u00e1 para o cliente de forma<br \/>\ntransparente\u00a0\ud83d\ude42<\/p>\n<p>Para que ele funcione, s\u00e3o necess\u00e1rias algumas configura\u00e7\u00f5es feitas no iptables, o firewall do kernel 2.4\/2.6 do Linux.<br \/>\nEssas configura\u00e7\u00f5es servem para fazer com que a rede interna da maquina, ao sair pela porta 80, redirecione o trafego<br \/>\npara a porta 3128, e na volta, os pacotes da porta 3128 voltem para porta 80.<\/p>\n<p>Como as configura\u00e7\u00f5es do iptables s\u00e3o perdidas a cada reinicializa\u00e7\u00e3o da maquina, criaremos um script que ser\u00e1 executado<br \/>\nna inicializa\u00e7\u00e3o do sistema.<br \/>\nPara n\u00e3o deixar espalhado um programa pela maquina, vamos criar um diret\u00f3rio onde esse script ficar\u00e1:<\/p>\n<p>[plain]<br \/>\n~# mkdir \/etc\/firewall<br \/>\n[\/plain]<\/p>\n<p>Agora sim, vamos ao script:<\/p>\n<p>[plain]<br \/>\n~# vim \/etc\/firewall\/firewall<br \/>\n[\/plain]<\/p>\n<p>O script ficar\u00e1 assim:<\/p>\n<p>[plain]<br \/>\n#!\/bin\/bash<\/p>\n<p># Inicio do Firewall<\/p>\n<p># Limpa as tabelas do firewall<br \/>\niptables -F<br \/>\niptables -X<br \/>\niptables -t nat -F<br \/>\niptables -t nat -X<\/p>\n<p># Carrega modulos do iptables<br \/>\nmodprobe ip_nat_ftp<br \/>\nmodprobe ip_conntrack_ftp<br \/>\nmodprobe ip_conntrack_pptp<br \/>\nmodprobe ip_nat_pptp<\/p>\n<p># Libera a rede com nat, fazendo kernel compartilhar a conex\u00e3o<br \/>\necho &quot;1&quot; &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/p>\n<p># Libera a passagem de pacotes para a faixa de IPs internos<br \/>\niptables -A FORWARD -s 192.168.0.0\/24 -j ACCEPT<\/p>\n<p># Libera o NAT para os IPs internos, nas 2 placas de rede<br \/>\niptables -t nat -A POSTROUTING -s 192.168.0.0\/24 -o eth1 -j MASQUERADE<br \/>\niptables -t nat -A POSTROUTING -s 192.168.0.0\/24 -o eth0 -j MASQUERADE<\/p>\n<p># Proxy Transparente<br \/>\niptables -t nat -A PREROUTING -i eth0 -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-port 3128<br \/>\n[\/plain]<\/p>\n<p>De permiss\u00e3o de execu\u00e7\u00e3o para o script:<\/p>\n<p>[plain]<br \/>\n~# chmod +x \/etc\/firewall\/firewall<br \/>\n[\/plain]<\/p>\n<p>Adicione o firewall na inicializa\u00e7\u00e3o do sistema:<\/p>\n<p>[plain]<br \/>\n~# ln -s \/etc\/firewall\/firewall \/etc\/init.d\/<br \/>\n~# update-rc.d firewall defaults<br \/>\n[\/plain]<\/p>\n<p>Execute o script:<\/p>\n<p>[plain]<br \/>\n~# \/etc\/firewall\/firewall<br \/>\n[\/plain]<\/p>\n<p>Pronto, agora voce tem a divis\u00e3o da rede e o proxy transparente.<\/p>\n<p>&#8230;.. continua<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rau Tu para ter um Roteador b\u00e1sico com Debian Etch + DHCPd + Squid fazendo Proxy Transparente. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[17],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-linux","tag-linux"],"_links":{"self":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":15,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":12,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/posts\/7\/revisions\/12"}],"wp:attachment":[{"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tia-go.net\/wordpress\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}