Jun 08 2009

Liberar acesso por MAC e IPtables.

Boa noite,

Como pretendo fazer um Captive Portal em meu servidor resolvi instalar um Apache para exibir as páginas de autenticação ou seja quando o usuário não estiver autenticado ele ficará vendo está página em toda sua requisição WEB. O problema é que quando acessavamos algum endereço de IP a página era exibida mas ao se utilizar endereços isto não acontecia pois ele não conseguia acesso até o DNS. Pesquisei um pouco pela internet e vi alguns falando sobre a instalação de um servidor DNS no próprio servidor, fiz isso mas não achei muito interessante então pensando sobre regras de iptables me veio a grande idéia de simplesmente redirecionar os acessos a porta 53. As regras que utilizei para Bloquear acesso de MAC não liberados, redirecionar a porta 80 para meu apache, permitir acesso ao DNS foram as seguintes:

Ainda estou brincando com o servidor e hoje estava querendo liberar acesso exclusivamente para os MAC aqui de casa, garantindo assim que nenhum vizinho vai pegar meu sinal e utilizar. Demorei algum tempo para conseguir regras que funcionassem efetivamente.

Liberar acesso de tal MAC ADDRESS:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -m mac –mac-source MAC -j ACCEPT

Redirecionar porta 80 para 8080

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -p tcp –dport 80 -j REDIRECT –to-port 8080

Liberar acesso somente ao servidor DNS:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -p udp –dport 53 -j DNAT –to IP:53

Bloquear todos os acessos:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -j DROP

Matheus

PS: Se as mesmas não estiverem funcionando, não se esqueca de dar uma verificada nas suas regras atuais de iptables pois pode ter algo proibindo ou liberando tudo antes. Então fique atento.

Jun 07 2009

Liberando ping no servidor.

Boa noite,

Na publicação anterior comentei sobre a liberação do “ping” (ICMP) de tal local para seu servidor. Caso você utilizesse Iptables e por padrão DROP em todas as “regras”, você poderá liberar pings apenas de determinado ip da seguinte maneira:

$ sudo iptables -A INPUT -p icmp -s 150.162.60.37 -j ACCEPT

Lembrando que você deve olhar a ordem das regras, pois isto importa em iptables.

Matheus Bratfisch

Jun 06 2009

Utilizar IPv6 em toda a sua rede.

Boa noite,

Como você deve saber o número de IPS na internet estão acabando, as previsões indicam que eles devem se esgotar até 2011. E como ficaremos? Calma, não se assuste! Já foi inventada a alguns anos a tecnologia que está substituindo os IPv4, são os chamados IPv6. (Que eu publiquei o link pro curso da CGI.BR lembra?). Então, hoje em dia já existem serviços destinados ao IPv6. Para fazer o uso do IPv6 existem alguns métodos e vou demonstrar como fiz na minha rede para conseguir IPv6 para os computadores. Lembrando que a minha rede possui um “Ubuntu Server” para receber e compartilhar a internet.

Inicialmente crie um cadastro em http://www.tunnelbroker.net. Após o cadastro realizado e confirmado acesse o menu “Create Regular Tunnel” e coloque o IP da sua residencia, o ponto final do tunnel, escolha o servidor mais perto de você e pronto. (Você não deve bloquear pings (ICMP) do servidor, se não ele não permitira que o tunnel seja criado).

Pressione o link ao lado direito de “Routed /48:”, assim ele lhe dará uma “classe” de ip para você utilizar em sua rede caseira.

Após feito isso, acesse seu servidor e crie o tunnel para ele da seguinte maneira:

# IPV6 da sua placa de rede INTERNA
sudo ifconfig eth1 inet6 add 2001:470:d8dd:1::1/64
# Levanta interface sit0
sudo ifconfig sit0 up
# Cria um tunnel para o IP do seu servidor (Substituia o IP_DO_SERVIDOR pelo valor do “Server IPv4 address”)
# MANTENHA OS “::”
sudo ifconfig sit0 inet6 tunnel ::IP_DO_SERVIDOR
# Levanta interface sit1
sudo ifconfig sit1 up
# Adiciona o IPv6 a interface sit1 (Substitua ROUTED pelo valor “Routed /48″)
sudo ifconfig sit1 inet6 add ROUTED
# Redireciona os tráfegos IPv6 para sit1
sudo route -A inet6 add ::/0 dev sit1
# Habilita IPv6 Forwarding.
sysctl net.ipv6.conf.all.forwarding=1

Teste se você está utilizando IPv6 da seguinte maneira:
$ ping6 ipv6.google.com

Nas demais máquinas das redes deve ser feito o seguinte:

$ sudo ifconfig eth1 inet6 add IPv6_DA_SUA_MAQUINA
$ sudo ip route add ::/0 via IPv6_DO_SERVIDOR

Caso você não queira configurar manualmente você pode utilizar o RaDVD que é um “router advertisement daemon”.

Vamos supor que seu Routed/48 é 2001:530:d822::/48 o IP da placa de rede do seu servidor conectada a rede local poderia ser: 2001:530:d822:1::1/64. Então o IP da sua máquina seria 2001:530:d822:1::2/64.

Agora de sua máquina tente pingar com ping6 o seu servidor e ipv6.google.com. Se obter resposta está tudo certo. (é claro ¬¬’)

Espero que seja de utilidade a você,
Matheus

PS: Caso você deseje utilizar IPv6 somente em uma máquina conectada diretamente na internet cadastre-se no mesmo site, crie seu tunnel e siga as instruções no final da página do tunnel.

Jun 06 2009

Instalar e Configurar servidor DHCP.

Boa noite,

Estou pensando em uma estrutura de rede que seja eficiente para a minha casa e no momento resolvi fazer alguns testes com idéias sugeridas pela galera do irc.freenode.net @ #ipv6.br e do meu laboratório e me funcionaram bem até o momento.

Retirei o meu Servidor da porta WAN do meu roteador deixando a rede na seguinte estrutura:

Modem -> (eth0) Ubuntu Server (eth1) -> (LAN PORT) Roteador (LAN PORT) -> Computadores.

Desabilitei o Servidor DHCP do Roteador e criei o meu na mesma faixa de IPS do Roteador no Ubuntu Server para instalar e configurar o mesmo procedi da seguinte maneira:

$ sudo apt-get install dhcp3-server

Após a instalação do mesmo abri o arquivo “/etc/dhcp3/dhcpd.conf” e comentei todas as linhas, após feito isso fiz o seguinte:

INTERFACES=”eth1″; # INTERFACE CONECATADA AO MEU ROTEADOR
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative; # DHCP PRINCIPAL DA REDE

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.150; # FAIXA DE IPS A SER DISTRIBUIDA
option routers 192.168.0.254; # GATEWAY
option domain-name-servers 200.247.141.11; # SERVIDOR DNS
option subnet-mask 255.255.255.0; # MASCARA DE SUBREDE
option broadcast-address 192.168.0.255; # ENDEREÇO DE BROADCAST
default-lease-time 600;
max-lease-time 7200;
}

Lembrando que a faixa de IPs utilizada normalmente por meu roteador era 192.168.0.x mas eu poderia alterar a mesma porém preferi utilizar a default.

Após feita as configurações executei o seguinte comando:

$ sudo /etc/init.d/dhcp3-server restart

O mesmo reiniciou com alguns problemas porque esqueci alguns “;” mas após corrigido os pequenos erros o DHCP Server iniciou normalmente, testado e funcionando.

Espero que seja de utilidade a todos,
Matheus Bratfisch

PS: Lembrando que com a atual estrutura de redes eu posso utilizar filtros por MAC ADDRESS conseguindo assim implementar meu Captive Portal. *espero que nós proximos dias eu consiga implementa-lo*

Referencias:
Google + DHCP SERVER UBUNTU (tantos links que eu tentei que nem sei especificar quais que mais me ajudaram. Agradeço aos que me ajudaram e peço desculpas por não saber referenciar ao certo.)

Abr 27 2009

Netbeans 6.5.1, Espaçamento..

Opa,

Como disse no post anterior instalei o NetBeans agora a pouco. Ao executar o mesmo, criar um novo projeto e arquivo percebo que o espaçamento (line-spacing) do mesmo está muito grande. Para alterar o mesmo você deve fazer o seguinte:

Editar o arquivo: org-netbeans-modules-editor-settings-CustomPreferences.xml

$ pico org-netbeans-modules-editor-settings-CustomPreferences.xml

Este arquivo está encontrado no seguinte diretorio:

/home//.netbeans/6.5/config/Editors/Preferences

Caso o arquivo e o diretorio existam simplesmente adicione as seguintes linhas:

<entry javaType=”java.lang.Float” name=”line-height-correction”
xml:space=”preserve”>
<value><![CDATA[0.75]]></value>
</entry>

Se o mesmo não exista, provavelmente você terá que criar o diretorio Preferences:

$ mkdir Preferences
(se você estiver no /home//.netbeans/6.5/config/Editors)

$ cd Preferences

E crie o arquivo:

$ pico org-netbeans-modules-editor-settings-CustomPreferences.xml

Adicione o seguinte conteudo:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE editor-preferences PUBLIC “-//NetBeans//DTD Editor Preferences 1.0//EN” “http://www.netbeans.org/dtds/EditorPreferences-1_0.dtd”>
<editor-preferences>
<entry javaType=”java.lang.String” name=”code-template-expand-key” xml:space=”preserve”>
<value><![CDATA[TAB]]></value>
</entry>
<entry javaType=”java.lang.Float” name=”line-height-correction” xml:space=”preserve”>
<value><![CDATA[0.75]]></value>
</entry>
</editor-preferences>

Salve, reinicie o netbeans e pronto.

Uma otima noite a todos,
Matheus

English Version

Fontes:
http://my.opera.com/Nobita2708/blog/show.dml/2914020
http://www.linux4all.net/how_to_change_line_height_in_netbeans_editor
http://www.cs.wcupa.edu/rkline/netbeans-lin.html
http://www.google.com.br/search?hl=pt-BR&q=line+spacing+ubuntu+netbeans&btnG=Pesquisar&meta=

PS: Isso não é simplesmente uma tradução, a idéia basica está postada, mas aqui foram adicionadas algumas informações.