Mudanças entre as edições de "Projeto Integrador - 2010.1 - Equipe Café On-Line"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 238: Linha 238:
  
 
link's uteis: ntp.br [http://ntp.br], guia rápido de configuração do ntp.br [http://ntp.br/guia.html], manual sobre ntp da rnp[http://www.rnp.br/_arquivo/cais/manual_ntp_v1b.pdf], documentação no ntp.org [http://www.ntp.org/documentation.html]
 
link's uteis: ntp.br [http://ntp.br], guia rápido de configuração do ntp.br [http://ntp.br/guia.html], manual sobre ntp da rnp[http://www.rnp.br/_arquivo/cais/manual_ntp_v1b.pdf], documentação no ntp.org [http://www.ntp.org/documentation.html]
 +
 +
--[[Usuário:Eris|Eris]] 12:53, 5 Julho 2010 (BRT)
  
 
== DNS ==
 
== DNS ==

Edição das 12h53min de 5 de julho de 2010

Descrição das atividades por datas - Projeto Integrador 2010-1

Dia: 08/6/2010

Criação do nome da equipe: Café On-line.

Cabeamento

  • Foi passado os cabos do Patch Panel do Armário Principal para o Armário Café On-line.
  • Feitos os pontos de acesso (Tomadas).
  • Padrão 568A.

Gerência de Rede

  • Instalação do Sistema Operacional, definido pela equipe.


Hardware do servidor

*Processador:
# lshw -short -c cpu
H/W path         Device      Class       Description
====================================================
/0/4                         processor   Intel(R) Celeron(R) CPU 2.26GHz

*Memoria:
# lshw -short -c memory
H/W path         Device      Class       Description
====================================================
/0/4/5                       memory      16KiB L1 cache
/0/4/6                       memory      256KiB L2 cache
/0/2f                        memory      512MiB System Memory
/0/2f/0                      memory      256MiB DIMM DDR Synchronous 333 MHz (3.0 ns)
/0/2f/1                      memory      256MiB DIMM DDR Synchronous 333 MHz (3.0 ns)

*Rede
# lshw -short -c network
H/W path         Device      Class       Description
====================================================
/0/100/1e/1      eth1        network     RTL-8169 Gigabit Ethernet
/0/100/1e/8      eth0        network     82801DB PRO/100 VE (LOM) Ethernet Controller


*Disco
# lshw -short -c disk
H/W path         Device      Class       Description
====================================================
/0/100/1f.1/0    /dev/sda    disk        41GB Maxtor 6E040L0
/0/100/1f.1/1    /dev/cdrom  disk        CD/DVDW SH-S182D

*Video
# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE 
Chipset Integrated Graphics Device (rev 01)

Para informações adicionais executar
# dmidecode | less

Distribuição utilizada:

# lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 10.04 LTS
Release:        10.04
Codename:       lucid

Utilizamos a Distribuição Ubuntu Server LTS. por ser a de maior familiaridade entre os integrantes da equipe e na "versão" LTS por ter suporte por um período de tempo maior que as demais versões do Ubuntu, possibilitando que a experiencia realizada no projeto possa ser aproveitada no futuro sem grandes alterações.

Particionamento usado:

Partição     "Tamanho"    Tipo       Ponto de montagem
====================================================
/dev/sda1     285MB       EXT3            /boot
/dev/sda2     717MB    Linux/swap 
/dev/sda3     36GB        EXT4            /
  • Rede cafeonline:

Rede externa: IP:200.135.37.100 Mascara: 255.255.255.192 (/26) Broadcast 200.135.37.127 Rede:200.135.37.64/26 1°IP valido: 200.135.37.65 Ultimo IP valido: 200.135.37.126 Gateway:200.135.37.126 </syntaxhighlight> Rede interna: IP:192.168.100.1 Mascara: 255.255.255.0 (/24 ) Broadcast 192.168.100.255 Rede:192.168.100.0 1°IP valido: 192.168.100.1 Ultimo IP valido: 192.168.100.254 Gateway:¿? </syntaxhighlight>

  • configuração de rede

Arquivo /etc/network/interfaces: Arquivo de configuração das interfaces de rede

auto lo iface lo inet loopback

  1. The primary network interface
  2. Interface externa ip 200.135.37.100/26

auto eth0 iface eth0 inet static

       address 200.135.37.100
       netmask 255.255.255.192
       broadcast 200.135.37.127
       network 200.135.37.64
       gateway 200.135.37.126
       # dns-* options are implemented by the resolvconf package, if installed
       dns-nameservers 127.0.0.1 ns1.cafeonline.sj.ifsc.edu.br
       dns-search cafeonline.sj.ifsc.edu.br


  1. Interface interna ip 192.168.100.1/24

auto eth1 iface eth1 inet static

       address 192.168.100.1
       netmask 255.255.255.0
       network 192.168.100.0
       broadcast 192.168.100.255

</syntaxhighlight> Arquivo /etc/resolv.conf: Arquivo de configuração dos servidores DNS que o sistema utilizara, no caso é a própria maquina pois ela sera um servidor também DNS.

nameserver 127.0.0.1

</syntaxhighlight>

Scritp basico para "NAT" e redirecionamento de portas, utilizando o netfilter/iptables[1]

Instalando

  1. aptotude update; aptitude install iptables

</syntaxhighlight>

script /etc/init.d/fw:

  1. !/bin/sh
  1. Interfaces

IFACE_INTERNA="eth1" IFACE_EXTERNA="eth0"

  1. Habilita ip forward

echo 1 > /proc/sys/net/ipv4/ip_forward

  1. Habilita syncookies (evita que um grande numero de pacotes SYN, estourem o limite de conexões)

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  1. NAT

iptables -t nat -A POSTROUTING -o ${IFACE_EXTERNA} -j MASQUERADE

  1. Redirecionamento para o Analisador de Conteúdo Dansguardian

iptables -t nat -A PREROUTING -i ${IFACE_INTERNA} -p tcp --dport 80 \ -j REDIRECT --to-port 8080

  1. Bloqueio para acesso direto ao Proxy

iptables -A INPUT -m tcp -p tcp ! -s 127.0.0.1 --dport 3128 -j DROP

  1. limita resposta a "ping"

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

  1. Bloqueia pacotes invalidos

iptables -A INPUT -m state --state INVALID -j DROP


exit 0 </syntaxhighlight>

Iniciar o script junto com o sistema

update-rc.d fw start 01 2 3 4 5 </syntaxhighlight>


Link's uteis: Ubuntu server guide:[2] em pdf[3], Pesquisa no Guia FOCA [4], google/linux [5]

Fotos do Primeiro Dia

Portas das Tomadas do Patch Panel do Armário Café On-line.
Portas do Patch Panel Armário Principal da equipe Café On-line.
Portas que chegam do Armário Principal para o Armário Café On-line.
Rack Armário Principal.
Rack Café On-line.

Dia: 09/6/2010

Cabeamento

  • Verificamos se a parte de cabeamento ta ok.
  • Foi visto que os Patch Panel do Lab. de Transmissão não funcionam muito bem.

Gerência de Rede

Instalação e configuração dos serviços

  • NTP
  • DNS

NTP

  • NTP[6] (Network Time Protocol ou Protocolo de Tempo para Redes). É um protocolo que permite a sincronização dos relógios dos dispositivos de uma rede como servidores, estações de trabalho, roteadores e outros equipamentos à partir de referências de tempo confiável[7] Portas 123UDP/TCP.


  • Instalando e configurando

  1. aptitude update; aptitude install ntp

</syntaxhighlight>

Arquivo /etc/ntp.conf: Arquivo de configuração do daemon ntpd. Abaixo os parâmetros alterados.

  1. blablabla..
  2. Linhas adicionadas para que o ntpd sincronize o horário com os servidores abaixo
  3. servido da rnp

server ntp.cais.rnp.br

  1. servidor "a" do observatório nacional

server a.ntp.br

  1. servidor "b" do observatório nacional

server b.ntp.br

  1. blablabla...
  2. Restringe o acesso ao servidor ntp apenas a dispositivos da rede local

restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap

  1. blablabla...

</syntaxhighlight>


link's uteis: ntp.br [8], guia rápido de configuração do ntp.br [9], manual sobre ntp da rnp[10], documentação no ntp.org [11]

--Eris 12:53, 5 Julho 2010 (BRT)

DNS

  • DNS (Domain Name System - Sistema de Nomes de Domínios) é um sistema de gerenciamento de nomes hierárquico e distribuído que permite a "tradução" de nomes de "maquinas" em endereços IP.

Portas utilizadas: 53 UDP/TCP

Instalação e configuração de servidor DNS(BIND9[12])

  • Instalar
  1. aptitude update; aptitude install bind9

</syntaxhighlight> Arquivo /etc/bind/named.conf.options:: Neste arquivo vão configurações "globais" do bind.

options {

              directory "/var/cache/bind";
       version "N/A"; # Não exibe versão do bind
       listen-on-v6 { any; };
          listen-on { any; };
          allow-recursion { 127.0.0.0/8; 192.168.100.0/24; }; # define quem pode faver consultas recursssivas ao servidor
          allow-query { any; }; # define quem pode consultar o servidor
          allow-query-cache { any; };

};


</syntaxhighlight>

Arquivo /etc/bind/named.conf.local: Neste arquivo indicamos o domínio a ser configurado e em quais arquivos ficarão as configurações deste e do DNS reverso.

... zone "cafeonline.sj.ifsc.edu.br" {

type master;
file "/etc/bind/dbcafeonline.sj.ifsc.edu.br";

}; zone "100.64-127.37.135.200.in-addr.arpa" {

type master;
file "/etc/bind/db100.64-127.37.135.200.in-addr.arpa";

};

</syntaxhighlight>

Arquivo /etc/bind/dbcafeonline.sj.ifsc.edu.br: Arquivo com as configurações do domínio

$TTL 86400 @ IN SOA server.cafeonline.sj.ifsc.edu.br. admin.cafeonline.sj.ifsc.edu.br. (

   2010063001   ; serial
           1d   ; refresh
           1h   ; retry
           1w   ; expire
           1d   ; negative cache ttl

) @ IN NS server @ IN A 200.135.37.100 @ IN MX 0 mail.cafeonline.sj.ifsc.edu.br. server IN A 200.135.37.100 ns1 IN A 200.135.37.100 mail IN A 200.135.37.100 www IN A 200.135.37.100 smtp IN CNAME mail.cafeonline.sj.ifsc.edu.br. pop IN CNAME mail.cafeonline.sj.ifsc.edu.br. imap IN CNAME mail.cafeonline.sj.ifsc.edu.br. ssl IN CNAME www.cafeonline.sj.ifsc.edu.br. cacti IN CNAME www.cafeonline.sj.ifsc.edu.br. cafeonline.sj.ifsc.edu.br. IN TXT "v=spf1 mx -all"

</syntaxhighlight>

Arquivo /etc/bind/db100.64-127.37.135.200.in-addr.arpa: Arquivo com as configurações do DNS reverso

$TTL 86400

Start of Authority
início de autoridade

@ IN SOA ns1.cafeonline.sj.ifsc.edu.br. admin.cafeonline.sj.ifsc.edu.br. (

 2010070501        ; Serial
 1d        ; Refresh
 4h        ; Retry
 1w        ; Expire
 1d )    ; Negative Cache TTL
Name Server
servidores DNS

@ IN NS ns1.cafeonline.sj.ifsc.edu.br.

Address
endereço

100 IN PTR ns1.cafeonline.sj.ifsc.edu.br.


</syntaxhighlight>

Dia: 10/6/2010

Cabeamento

  • Verificamos a parte dos Patch Panel, apenas uma porta não funciona.


Dia: 11/6/2010

Gerência de Rede

  • Configurado acesso remoto.

SSH[13]: É um protocolo de rede que permite acesso remoto seguro(conexão entre cliente e servidor criptografada), Porta 22TCP.

Instalando e configurando o OpenSSH-Server[14]

  1. aptitude update; aptitude install openssh-server

</syntaxhighlight>

Arquivo /etc/ssh/sshd_config: Neste arquivo de configuração do servidor ssh. Abaixo apenas os parâmetros a adicionar ou alterar.

  1. Lista de usuários que podem solar no servidor

AllowUsers nx cafeonline

  1. porta na qual o serviço ficara ativo

Port 22

  1. Define se o usuario root podo acessar via ssh

PermitRootLogin no

</syntaxhighlight>

Dia 14/6/2010

Aula após o Intervalo, pois tivemos que apresentar um trabalho.

Instalação de Equipamento

  • Implantação dos Modems, como o cabo que interliga os laboratórios chega no RACK da direita, acabamos instalando todos os modems no mesmo lugar onde o fio chegava.
  • Rede interna: 192.168.100.0/24.

Cabeamento

  • Foi feito os Patch Cord.


Fotos certificação do Link físico

Roteador Cisco, Modem Parks e Modem Digitel.
Modems sincronizados
Link de 2Mbps certificado!
Link 64Kbps certificado!
Conexão Modem
Diagrama de interconexão física dos laboratórios.


Dia 15/6/2010

Instalação de Equipamento

  • Inicio das configurações dos modems.

Programação

  • Iniciamos a página de autenticação.

Cabeamento

  • Realizamos testes do link.
  • Apenas uma porta não funciona.


Dia 16/6/2010

Gerência de Rede

  • Instalação do Squid e Dansguardian.
  • Alteramos as regras de roteamento, afim de configurar um proxy transparente.

--Rubia Andrade 21:09, 16 Junho 2010 (BRT)


Aplicação

Criando banco de dados

  • Primeiramente foram criadas as tabelas no mysql:

(colocar comandos usados na criação das tabelas)

Cadastro dos anúncios

  • Segue abaixo o código da página (cadastro.html) onde o admin digitará os dados do anúncio:
<html>
<head>
   <title> Caf&eacute;Online </title>
   </head>
   <body bgcolor="000000" text="FFFFFF">
   <table align=center>
   <tr>
	<h1>Cadastro de an&uacute;ncios</h1>
	<form name="formTeste" action="add.php" method="post">
	<table>
	   <tr><td>
  		<p> T&iacute;tulo: <br>
  		<input type:"text" name="titulo">
  		<p> Nome do cliente: <br>
  		<input type:"text" name="nome">
  		<p> An&uacute;ncio: <br>
  		<textarea rows="2" cols="20" name="texto"></textarea>
  		<p> Link: <br>
  		<input type:"text" name="link">
  		<p> Expira em: <br>
  		<input type:"text"name="validade">
  		<p> Expirado:
  		<input type=checkbox>
		<input type="submit" name="b_enviar" value="Gravar"><BR>
	     </td>
	     <td>
	    	<img src="800x600.gif" border="0" width="600" height="400">
    	     </td>
	   </tr>
</body>
</html>


  • Depois de informados os dados do anúncio o admin é redirecionado para outra pagina onde será feita a conexão com o banco de dados mysql para inserir os dados nas tabelas.

Segue o código (add.php):

<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body bgcolor="000000" text="FFFFFF">
<?

  $titulo=$_POST['titulo'] ;
  $nome=$_POST['nome'] ;
  $texto=$_POST['texto'] ;
  $link=$_POST['link'] ;
  $validade=$_POST['validade'] ;

  if (!empty ($titulo) && !empty ($nome) && !empty ($texto) && !empty ($link) && !empty ($validade))
  {
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	$base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1");
	$inserir = "INSERT INTO anuncio (NOMECLIENTE, NOMEANUNCIO, TEXTO, LINK, VALIDADE) VALUES ('$nome', '$titulo', '$texto', '$link', '$validade')";
	$cadastrar = mysql_query($inserir,$conexao) or die("erro 2");
	mysql_close($conexao) or die("Erro fechar conexao");
	if($cadastrar==true)
	{
		echo "<h2>An&uacute;ncio cadastrado com sucesso <br></h2>";	
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacute;ncios</a>";
	}else{
		echo "Erro ao cadastrar an&uacute;ncio";
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de anúncios</a>";
	}
  }else{
	  echo "<h2>Erro, campos vazios<br></h2>";
	  echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Voltar para cadastro</a>";
  }
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>


Listagem de anúncios

  • Na página listar.php é feita a conexão com o banco de dados e também a consulta nas tabelas, para fazer a listagem dos anúncios ja cadastrados, e através dessa página pode-se selecionar um anúncio o qual deseja editar ou excluir.
<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<title> Caf&eacute; online </title>
</head>
<body bgcolor="000000" text="FFFFFF">
	<h1>Listagem de an&uacute;ncios</h1>
	<table><tr><td>
<?
$conexao = mysql_connect("localhost","root","cafeonline") or die ("ERRO");
if($conexao) // se $conexao é true, ou seja, conectou ao banco de dados, seleciona com qual banco deseja trabalhar.
{
	mysql_select_db("cafeonline") or die ("erro 1"); //seleciona qual o banco
	$query = "SELECT * FROM anuncio" or die ("erro 2"); //seleciona tudo (*), de uma tabela chamada anuncio
	$dados = mysql_query($query,$conexao) or die ("erro 3");

	echo "<table border=1>";
	echo "<tr><td>Nome do cliente</td>";
	echo "<td>T&iacute;tulo do an&uacute;ncio</td>";
	echo "<td>Validade</td>";
	echo "<td>A&ccedil;&otilde;es</td></tr>";
	 
	while($linha=mysql_fetch_array($dados,MYSQL_ASSOC))
	{
	$id = $linha["IDANUNCIO"];	
		echo "<tr><td>" . $linha["NOMECLIENTE"] . "</td>" ;
		echo "<td>" . $linha["NOMEANUNCIO"] . "</td>" ;
		echo "<td>" . $linha["VALIDADE"] . "</td>" ;
		echo "<td><a href='excluir.php?id=$id' style='text-decoration:none'>Excluir&nbsp;&nbsp;</a>";
		echo "<a href='editar.php?id=$id' style='text-decoration:none'>Editar</a></td></tr>";
	}
	echo "</table>";
	echo "<center><a href='http://www.cafeonline.sj.ifsc.edu.br/cadastro'>Incluir novo an&uacute;ncio</a></center>";
	mysql_close($conexao) or die ("erro 5");
}
header("Content-Type: text/html; charset=ISO-8859-1", true); 
?>
</td><td>
<img src="800x600.gif" border="0" width="600" height="400" align="right"></td></tr></table>
</body>
</html>


Editando e atualizando os anúncios

  • Depois de selecionado um anúncio na página de listagem o admin é direcionado para a página de edição de anúncios. E então são mostrados os dados que já estão cadastrados do anúncio selecionado, podendo alterar o que desejar e depois apertando no botão gravar que é direcionado para a página onde será feita a atualização do banco de dados.

Segue o código da página de edição de anúncios (editar.php):

<html>
<head>
	<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
	<title> Caf&eacte; online </title>
</head>
 <body bgcolor="000000" text="FFFFFF">
  <h1>Editar an&uacute;ncio </h1>
  
<?	
	$id = $_GET['id'];
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	mysql_select_db("cafeonline") or die ("erro 1");
	$query = ("select * from anuncio where IDANUNCIO=$id");
	$dados = mysql_query($query,$conexao);
	$linha=mysql_fetch_array($dados,MYSQL_ASSOC);
	mysql_query($linha);
	header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
  <form name="formTeste" action="add2.php?id=<? echo $id ?>" method="post">
	<table>
	   <tr>
    	     <td>
  		<p> T&iacute;tulo: <br>
  		<input type:"text" name="titulo" value="<? echo  $linha['NOMEANUNCIO']  ?>">
  		<p> Nome do cliente: <br>
  		<input type:"text" name="nome" value="<? echo  $linha['NOMECLIENTE']  ?>">
  		<p> An&uacute;ncio: <br>
  		<textarea rows="2" cols="20" name="texto"><? echo  $linha['TEXTO']  ?></textarea>
  		<p> Link: <br>
  		<input type:"text" name="link" value="<? echo  $linha['LINK']  ?>">
  		<p> Expira em: <br>
  		<input type:"text"name="validade" value="<? echo  $linha['VALIDADE']  ?>">
  		<p> Expirado:
  		<input type=checkbox>
		<input type="submit" name="b_enviar" value="Gravar"><BR>
	     </td>
	     <td>
	    	<img src="800x600.gif" border="0" width="600" height="400">
    	     </td>
	   </tr>
</body>
</html>


  • Código onde é feita a atualização do banco de dados (add2.php):
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body bgcolor="000000" text="FFFFFF">
<?
	$conexao = mysql_connect("localhost","root","cafeonline") ;
	$base_ok = mysql_select_db("cafeonline",$conexao);
	$id = $_GET['id'];
	$titulo=$_POST['titulo'] ;
	$nome=$_POST['nome'] ;
	$texto=$_POST['texto'] ;
	$link=$_POST['link'] ;
	$validade=$_POST['validade'] ;
	
	if (!empty ($titulo) && !empty ($nome) && !empty ($texto) && !empty ($link) && !empty ($validade))
	{
		$update=mysql_query("UPDATE anuncio SET NOMECLIENTE='$nome', NOMEANUNCIO='$titulo', TEXTO='$texto', LINK='$link', VALIDADE='$validade' WHERE IDANUNCIO='$id'");
		if($update==true)
		{
				echo "<h2>Dados atualizados com sucesso <br></h2>";	
				echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacute;ncios</a>";
		}else{
			echo "Erro ao Atualizar";
			"<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Ir para lista de an&uacutencios</a>";
		}
	}else{
		echo "<h2>Erro, campos vazios<br></h2>";
		echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar'>Voltar para lista de an&uacute;ncios</a>";
	}
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>


Excluindo anúncios

Segue o código da página para exclusão de anúncios (excluir.php):

<html>
<head><meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /></head>
<body bgcolor="000000" text="FFFFFF">
<?

$conexao = mysql_connect("localhost","root","cafeonline") ;
$base_ok = mysql_select_db("cafeonline",$conexao) or die ("erro 1");
$id=$_GET["id"]; 
$query = mysql_query("delete from anuncio where IDANUNCIO='$id'");
mysql_query($query);

if ($query==true)
{
	echo "<h2>An&uacute;ncio exlcluido<br></h2>";
	echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Voltar para lista de an&uacute;ncios</a>";
}else{
	echo "Erro ao excluir anúncio";
	echo "<a href='http://www.cafeonline.sj.ifsc.edu.br/listar>Voltar para lista de anúncios</a>";
}
header("Content-Type: text/html; charset=ISO-8859-1", true);
?>
</body>
</html>