{"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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# grep eth0 -A5 \/etc\/network\/interfaces\r\nauto eth0\r\niface eth0 inet static\r\naddress 192.168.0.1\r\nnetwork 192.168.0.0\r\nnetmask 255.255.255.0\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# apt-get update;apt-get install dhcp3-server\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# dpkg-reconfigure dhcp3-server\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# vim \/etc\/dhcp3\/dhcpd.conf\r\n<\/pre>\n<p>O arquivo dever\u00e1 ficar mais ou menos assim:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n#\r\n# Sample configuration file for ISC dhcpd for Debian\r\n#\r\n# $Id: dhcpd.conf,v 1.1.1.1 2002\/05\/21 00:07:44 peloy Exp $\r\n#\r\n\r\n# The ddns-updates-style parameter controls whether or not the server will\r\n# attempt to do a DNS update when a lease is confirmed. We default to the\r\n# behavior of the version 2 packages ('none', since DHCP v2 didn't\r\n# have support for DDNS.)\r\nddns-update-style none;\r\n\r\n# option definitions common to all supported networks...\r\n#option domain-name &quot;example.org&quot;;\r\noption domain-name-servers 192.168.0.1;\r\n\r\n#default-lease-time 3600;\r\n#max-lease-time 7200;\r\n\r\n# If this DHCP server is the official DHCP server for the local\r\n# network, the authoritative directive should be uncommented.\r\nauthoritative;\r\n\r\n# Use this to send dhcp log messages to a different log file (you also\r\n# have to hack syslog.conf to complete the redirection).\r\nlog-facility local7;\r\n\r\n# No service will be given on this subnet, but declaring it helps the\r\n# DHCP server to understand the network topology.\r\n\r\n#subnet 10.152.187.0 netmask 255.255.255.0 {\r\n#}\r\n\r\n# This is a very basic subnet declaration.\r\n\r\n#subnet 10.254.239.0 netmask 255.255.255.224 {\r\n#  range 10.254.239.10 10.254.239.20;\r\n#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;\r\n#}\r\n\r\n# This declaration allows BOOTP clients to get dynamic addresses,\r\n# which we don't really recommend.\r\n\r\n#subnet 10.254.239.32 netmask 255.255.255.224 {\r\n#  range dynamic-bootp 10.254.239.40 10.254.239.60;\r\n#  option broadcast-address 10.254.239.31;\r\n#  option routers rtr-239-32-1.example.org;\r\n#}\r\n\r\n# A slightly different configuration for an internal subnet.\r\n#subnet 10.5.5.0 netmask 255.255.255.224 {\r\n#  range 10.5.5.26 10.5.5.30;\r\n#  option domain-name-servers ns1.internal.example.org;\r\n#  option domain-name &quot;internal.example.org&quot;;\r\n#  option routers 10.5.5.1;\r\n#  option broadcast-address 10.5.5.31;\r\n#  default-lease-time 600;\r\n#  max-lease-time 7200;\r\n#}\r\n\r\n# Hosts which require special configuration options can be listed in\r\n# host statements.   If no address is specified, the address will be\r\n# allocated dynamically (if possible), but the host-specific information\r\n# will still come from the host declaration.\r\n\r\n#host passacaglia {\r\n#  hardware ethernet 0:0:c0:5d:bd:95;\r\n#  filename &quot;vmunix.passacaglia&quot;;\r\n#  server-name &quot;toccata.fugue.com&quot;;\r\n#}\r\n\r\n# Fixed IP addresses can also be specified for hosts.   These addresses\r\n# should not also be listed as being available for dynamic assignment.\r\n# Hosts for which fixed IP addresses have been specified can boot using\r\n# BOOTP or DHCP.   Hosts for which no fixed address is specified can only\r\n# be booted with DHCP, unless there is an address range on the subnet\r\n# to which a BOOTP client is connected which has the dynamic-bootp flag\r\n# set.\r\n#host fantasia {\r\n#  hardware ethernet 08:00:07:26:c0:a5;\r\n#  fixed-address fantasia.fugue.com;\r\n#}\r\n\r\n# You can declare a class of clients and then do address allocation\r\n# based on that.   The example below shows a case where all clients\r\n# in a certain class get addresses on the 10.17.224\/24 subnet, and all\r\n# other clients get addresses on the 10.0.29\/24 subnet.\r\n\r\n#class &quot;foo&quot; {\r\n#  match if substring (option vendor-class-identifier, 0, 4) = &quot;SUNW&quot;;\r\n#}\r\n\r\n#shared-network 224-29 {\r\n#  subnet 10.17.224.0 netmask 255.255.255.0 {\r\n#    option routers rtr-224.example.org;\r\n#  }\r\n#  subnet 10.0.29.0 netmask 255.255.255.0 {\r\n#    option routers rtr-29.example.org;\r\n#  }\r\n#  pool {\r\n#    allow members of &quot;foo&quot;;\r\n#    range 10.17.224.10 10.17.224.250;\r\n#  }\r\n#  pool {\r\n#    deny members of &quot;foo&quot;;\r\n#    range 10.0.29.10 10.0.29.230;\r\n#  }\r\n#}\r\n\r\nsubnet 192.168.0.0 netmask 255.255.255.0 {\r\n  range 192.168.0.10 192.168.0.20;\r\n  option domain-name-servers 192.168.0.1;\r\n  option routers 192.168.0.1;\r\n  default-lease-time 3600;\r\n  max-lease-time 7200;\r\n}\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# ddns-update-style none;\r\n<\/pre>\n<p>Desativa o suporte a DNS din\u00e2mico.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# option domain-name-servers 192.168.0.1;\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# authoritative;\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# log-facility local7;\r\n<\/pre>\n<p>Informa a configura\u00e7\u00e3o do Syslog.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nsubnet 192.168.0.0 netmask 255.255.255.0 {\r\n  range 192.168.0.10 192.168.0.20;\r\n  option domain-name-servers 192.168.0.1;\r\n  option routers 192.168.0.1;\r\n  default-lease-time 3600;\r\n  max-lease-time 7200;\r\n}\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nrange 192.168.0.10 192.168.0.20;\r\nrange 192.168.0.30 192.168.0.40;\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# \/etc\/init.d\/dhcp3-server restart\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# apt-get update;apt-get install squid\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# vim \/etc\/squid\/squid.conf\r\n<\/pre>\n<p>Procure pela linha que inicia com <strong>http_port 3128<\/strong> e vamos altera-la da seguinte forma:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nhttp_port 192.168.0.1:3128 transparent\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ncache_mem 32 MB\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nmaximum_object_size 20480 KB\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ncache_dir ufs \/var\/spool\/squid 2000 16 256\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nhttp_access allow localhost\r\n<\/pre>\n<p>Ela fica um pouco abaixo do coment\u00e1rio:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS\r\n<\/pre>\n<p>Abaixo dessa linha, acrescente as seguintes linhas:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nacl rede_interna src 192.168.0.0\/24\r\nhttp_access allow rede_interna\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nTAG: visible_hostname\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nvisible_hostname meu_proxy\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# \/etc\/init.d\/squid restart\r\n<\/pre>\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<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# mkdir \/etc\/firewall\r\n<\/pre>\n<p>Agora sim, vamos ao script:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# vim \/etc\/firewall\/firewall\r\n<\/pre>\n<p>O script ficar\u00e1 assim:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n#!\/bin\/bash\r\n\r\n# Inicio do Firewall\r\n\r\n# Limpa as tabelas do firewall\r\niptables -F\r\niptables -X\r\niptables -t nat -F\r\niptables -t nat -X\r\n\r\n# Carrega modulos do iptables\r\nmodprobe ip_nat_ftp\r\nmodprobe ip_conntrack_ftp\r\nmodprobe ip_conntrack_pptp\r\nmodprobe ip_nat_pptp\r\n\r\n# Libera a rede com nat, fazendo kernel compartilhar a conex\u00e3o\r\necho &quot;1&quot; &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n\r\n# Libera a passagem de pacotes para a faixa de IPs internos\r\niptables -A FORWARD -s 192.168.0.0\/24 -j ACCEPT\r\n\r\n# Libera o NAT para os IPs internos, nas 2 placas de rede\r\niptables -t nat -A POSTROUTING -s 192.168.0.0\/24 -o eth1 -j MASQUERADE\r\niptables -t nat -A POSTROUTING -s 192.168.0.0\/24 -o eth0 -j MASQUERADE\r\n\r\n# Proxy Transparente\r\niptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128\r\n<\/pre>\n<p>De permiss\u00e3o de execu\u00e7\u00e3o para o script:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# chmod +x \/etc\/firewall\/firewall\r\n<\/pre>\n<p>Adicione o firewall na inicializa\u00e7\u00e3o do sistema:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# ln -s \/etc\/firewall\/firewall \/etc\/init.d\/\r\n~# update-rc.d firewall defaults\r\n<\/pre>\n<p>Execute o script:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n~# \/etc\/firewall\/firewall\r\n<\/pre>\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":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[17],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-linux","tag-linux"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_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}]}}