Total de visualizações de página

quinta-feira, 17 de março de 2011

Ferramentas UNIX p/ Roteamento

Roteamento

Imprimindo Tabela de Roteamento
# route -n # Linux ou use "ip route"
# netstat -rn # Linux, BSD and UNIX
# route print # Windows
Adiciona e Deleta Rotas
FreeBSD
# route add 212.117.0.0/16 192.168.1.1
# route delete 212.117.0.0/16
# route add default 192.168.1.1
Adiciona rota permanente em /etc/rc.conf
static_routes="myroute"
route_myroute="-net 212.117.0.0/16 192.168.1.1"
Linux
# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254
# ip route add 192.168.20.0/24 via 192.168.16.254 # mesmo que acima com ip route
# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0
# route add default gw 192.168.51.254
# ip route add default via 192.168.51.254 dev eth0 # mesmo que acima com ip route
# route delete -net 192.168.20.0 netmask 255.255.255.0


Configure Endereços IP adicionais
Linux
# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # Primeiro IP
# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # Segundo IP
# ip addr add 192.168.50.254/24 dev eth0 # Equivalente ao comando ip
# ip addr add 192.168.51.254/24 dev eth0 label eth0:1
FreeBSD
# ifconfig fxp0 inet 192.168.50.254/24 # Primeiro IP
# ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # Segundo IP
# ifconfig fxp0 -alias 192.168.51.254 # Remove o segundo apelido IP

Alterar Endereço MAC
Normalmente você tem que derrubar a relação antes da mudança.
# ifconfig eth0 down
# ifconfig eth0 hw ether 00:01:02:03:04:05 # Linux
# ifconfig fxp0 link 00:01:02:03:04:05 # FreeBSD
# ifconfig hme0 ether 00:01:02:03:04:05 # Solaris
# sudo ifconfig en0 ether 00:01:02:03:04:05 # Mac OS X Tiger
# sudo ifconfig en0 lladdr 00:01:02:03:04:05 # Mac OS X Leopard


FreeBSD
# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0
Ou edita /etc/rc.conf com:
firewall_enable="YES" # Defina YES para ativar a função do firewall
firewall_type="open" # Tipo de firewall (veja /etc/rc.firewall)
natd_enable="YES" # Habilite natd (if firewall_enable == YES).
natd_interface="tun0" # Interface pública ou endereço de IP para uso.
natd_flags="-s -m -u -dynamic -f /etc/natd.conf"
Porta em encaminhada com:
# cat /etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only
# redirect_port tcp insideIP:2300-2399 3300-3399 # Faixa de porta
redirect_port udp 192.168.51.103:7777 7777


DNS
No Unix o DNS são válidos para todas as interfaces e armazenadas no /etc/resolv.conf. O domínio para qual a máquina pertence é também armazenado no arquivo. A configuração mínima é:
nameserver 78.31.70.238
search sleepyowl.net intern.lab
domain sleepyowl.net
Verifica o nome do domínio no sistema com:
# hostname -d # Igual ao dnsdomainname


DHCP
Linux
Algumas distribuições (SuSE) usa dhcpcd como cliente. O padrão é eth0.
# dhcpcd -n eth0 # Provocar uma renovação( não é sempre funciona)
# dhcpcd -k eth0 # lançamento e encerramento
O arrendamento com a total informação são armazenadas no:
/var/lib/dhcpcd/dhcpcd-eth0.info
FreeBSD
FreeBSD (e Debian) usa dhclient. Para configurar a interface (por exemplo bge0) executa:
# dhclient bge0
O arrendamento com a total informação são armazenados no:
/var/db/dhclient.leases.bge0
Usa
/etc/dhclient.conf
para preceder as opções ou forçar as diferentes opções:
# cat /etc/dhclient.conf
interface "rl0" {
prepend domain-name-servers 127.0.0.1;
default domain-name "sleepyowl.net";
supersede domain-name "sleepyowl.net";
}


Bibliografia: http://cb.vu/unixtoolbox_pt.xhtml

quinta-feira, 10 de março de 2011

Código Fonte Configuração de Rede Mais Completo

Este programa foi feito por Willian Ramos (Claro!)
Mais também participamos e aprendemos a fazer por esse código um programa mais completo.
Para esse programa foi usado funções e manipulações de arquivos.
Todos os Créditos do Willian Ramos e VLW por ajudar-nos.


#include
#include

void edita_IP()
{
FILE *fp;
char comando[100], placa[10];
if(!(fp = fopen("teste.txt", "a"))){
printf("Impossivel abrir o arquivo... \n");
exit(-1);
}
printf("Digite o modelo da placa de REDE (Ex: eth0, rl0): ");
scanf("%s", &placa);
printf("Digite o IP para a maquina (Ex: 192.168.1.1): ");
scanf("%s", &comando);
fprintf(fp, "\n");
fprintf(fp, "ifconfig_");
fprintf(fp, placa);
fprintf(fp, "=\"inet ");
fprintf(fp, comando);
fprintf(fp, "/24\"");
fclose(fp);
printf("IP configurado com sucesso\n");
system("read b");
//getch();
main();
}
void edita_defaultrouter()
{
FILE *fp;
char comando[100];
printf("Digite a rota padrao para a maquina (Ex: 192.168.1.100): ");
scanf("%s", &comando);
if(!(fp = fopen("teste.txt", "a"))){
printf("Impossivel abrir o arquivo... \n");
exit(-1);
}
fprintf(fp, "\n");
fprintf(fp, "defaultrouter=\"");
fprintf(fp, comando);
fprintf(fp, "\"");
fclose(fp);
printf("rota configurada com sucesso\n");
system("read b");
// getch();
main();
}
void edita_alias()
{
FILE *fp;
char comando[100], placa[10];
printf("Digite o modelo da placa de REDE (Ex: eth0, rl0): ");
scanf("%s", &placa);
printf("Digite o IP_alias para a maquina (Ex: 10.10.1.0): ");
scanf("%s", &comando);
if(!(fp = fopen("teste.txt", "a"))){
printf("Impossivel abrir o arquivo... \n");
exit(-1);
}
fprintf(fp, "\n");
fprintf(fp, "ifconfig_");
fprintf(fp, placa);
fprintf(fp, "_alias0=\"inet ");
fprintf(fp, comando);
fprintf(fp, "/24\"");
fclose(fp);
printf("IP_alias configurado com sucesso\n");
system("read b");
//getch();
main();
}

void edita_routes(int routes)
{

struct r{
char route[100];
};
struct r comando[routes], route[routes], r[routes];
FILE *fp;
int i;
for(i=0;i
printf("Digite o nome do %d route(Ex: a1): ", i);
scanf("%s", &route[i].route);
printf("Digite a rede para a maquina (Ex: 192.168.1.1): ");
scanf("%s", &comando[i].route);
printf("Digite a rede para as outras maquinas (Ex: 10.10.1.1): ");
scanf("%s", &r[i].route);
}
if(!(fp = fopen("teste.txt", "a"))){
printf("Impossivel abrir o arquivo... \n");
exit(-1);
}
fprintf(fp, "\n");
fprintf(fp, "static_routes=\"");
for(i=0;i
fprintf(fp, route[i].route); //route a1="-net 192.168.1.0/24 10.10.1.1"
fprintf(fp, " ");
}
fprintf(fp, "\"");
fprintf(fp, "\n");
for(i=0;i
fprintf(fp, "route ");
fprintf(fp, route[i].route);
fprintf(fp, "=\"-net ");
fprintf(fp, comando[i].route);
fprintf(fp, "/24 ");
fprintf(fp, r[i].route);
fprintf(fp, "\"");
fprintf(fp, "\n");
}
fclose(fp);
printf("Routes configurados com sucesso\n");
system("read b");
//getch();
main();
}
void edita_nameserver()
{
FILE *fp;
char comando[100];
printf("Digite o NAMESERVER para a maquina (Ex: 10.10.1.1): ");
scanf("%s", &comando);
if(!(fp = fopen("teste.txt", "a"))){
printf("Impossivel abrir o arquivo... \n");
exit(-1);
}
fprintf(fp, "\n");
fprintf(fp, "nameserver=\"");
fprintf(fp, comando);
fprintf(fp, "\"");
fclose(fp);
printf("NAMESERVER configurado com sucesso\n");
system("read b");
//getch();
main();
}

int main(void)
{
int op, aux;
system("clear");
system("ifconfig | grep Link");

printf("<----------- MENU ---------->\nO que deseja fazer:\n1 - Configurar o IP\n2 - Configurar Rota padrão\n3 - Configurar o alias\n4 - Definir routes\n5 - Definir NAMESERVER\n111 - Mostrar o arquivo\n999 - Sair\n");
scanf("%d", &op);
if (op==1){
edita_IP();
}
if (op==2){
edita_defaultrouter();
}
if (op==3){
edita_alias();
}
if (op==4){
printf("Quantos routes vc tera:");
scanf("%d", &aux);
edita_routes(aux);
}
if (op==5){
edita_nameserver();
}
if (op==111){
system("cat teste.txt");
system("read b");
main();
}
if (op==999){
exit(999);
}
}

Código Programa Simples de Configuração de Rede FreeBSD

#include
#include

int main()
{
char var[50], IP[16], mask[16], gtw[16];
int op;

printf("1-Interface\n");
printf("2-Rota padrao\n");
printf("3-Listar tabela de rotas\n");
printf("4-Sair\n");
printf("Escolha uma das opcoes acima: \n");
scanf("%d", &op);

switch (op)
{
case 1:
printf("Digite o IP: ");
scanf("%s", & IP);
printf("Digite a Mascara: ");
scanf("%s", & mask);
sprintf(var,"ifconfig rl0 %s netmask %s", IP, mask);
system(var);
system("read b");
break;
case 2:
printf("digite o gateway:");
scanf("%s", & gtw);
sprintf(var,"route add defaultrouter=\"%s\"",gtw);
system(var);
system("read b");
break;
case 3:
system("netstat -rn");
system("read b");
break;
case 4:
break;
}
return 0;
}

Roteamento FreeBSD

Tutorial Configuração FreeBSD

Este tutorial tende especificar todos os passos para poder configurar IP, máscara, gateway e SSH num sistema operacional FreeBSD. Necessário ter conhecimentos intermediários em sistemas operacionais Unix/Linux. Vamos trabalhar diretamente nos arquivos do FreeBSD 7.0, visando uma configuração permanente.

IP e máscara

Primeiramente vamos descobrir quantas e como as interfaces de rede estão identificadas no sistema.

# ifconfig -a fxp0: flags=8802  Metric 0 Mtu 1500 options=8 ether 00:0c:1a:6e:4d:4a Media: Ethernet autoselect 

Agora abra o arquivo /etc/rc.conf com um editor de texto. Você precisa adicionar uma linha para cada placa de rede presente no sistema. Por exemplo, em nosso caso, adicionaremos uma linha como a abaixo:

ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0" 

Atente para as aspas " ".

Você precisa substituir fxp0 e assim sucessivamente com nomes de dispositivos corretos para suas placas e os endereços apropriados.

Verifique se o IP e a máscara subiram adequadamente.

Dê um restart na rede:

# /etc/rc.d/netif restart # ifconfig -a 

Gateway

Edite o arquivo /etc/rc.conf e altere a linha:

gateway_enable="NO" 

Para:

gateway_enable="YES" 

Adicione a linha seguinte para o IP default do gateway:

defaultrouter="IP_do_gateway_default" 

Exemplo:

defaultrouter="192.168.0.1" 

Verifique se o gateway subiu como esperado:

# /etc/rc.d/routing restart # netstat -nr 

Com esses codigos é possivel fazer a configuração de roteamento de uma rede no FreeBSD.