Posts Tagged ‘debian’

Compartilhar conexão 3G no Linux

Após um tempo utilizando o serviço 3G da BrasilTelecom precisei compartilhar a conexão à internet do meu computador. Na verdade é incrivelmente fácil, pois em síntese é só configurar o modem via wvdial, fixar o IP da máquina para o servidor DHCP, e ativar o iptables.

sony-ericsson-md300 Compartilhar conexão 3G no Linux

Para configurar o wvdial existem vários artigos que ensinam a editar o arquivo wvdial.conf ou mesmo a usar frontends como o gnome-ppp para conexões via bluetooth ou USB. É só procurar os dados certos para a sua operadora.

Aqui consideraremos:
Sistema Operacional Debian Linux.
Endereço de Rede “192.168.1.0″.
Interface do cabo de rede eth1.
Interface do modem 3g ppp0.
Usuário root para todos os comandos e configurações.

É necessário fixar o IP da sua máquina para que o servidor DHCP encontre um canal de conexão externa. Edite o arquivo /etc/network/interfaces:

iface eth1 inet static
address 192.168.1.1
broadcast 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1

Configure o servidor DHCP pelo arquivo /etc/dhcp3/dhcpd.conf:

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name “localhost”;
option domain-name-servers 201.10.120.2,201.10.128.2; # (1)
option time-offset -10800;
option ip-forwarding on; # (2)
range dynamic-bootp 192.168.1.100 192.168.1.110;
default-lease-time 21600;
max-lease-time 43200;
}

Observações desta configuração:
1. Coloque o DNS fornecido pelo seu provedor, o exemplo tem o da BrasilTelecom;
2. Informação necessária para que o servidor DHCP repasse IPs para seus clientes;

Todas as outras variáveis dos arquivos acima podem ser modificadas de acordo com a sua rede, desde que as duas opções acima sejam usadas coerentemente.

Ative a interface e rode o servidor DHCP:

ifdown eth1; ifup eth1
/etc/init.d/dhcpd restart

Depois disso aplique a regra de redirecionamento no kernel e no iptables:

sysctl -w net.ipv4.ip_forward=1
iptables –append FORWARD –in-interface ppp0 -j ACCEPT
iptables –table nat –append POSTROUTING –out-interface eth1 -j MASQUERADE

Pronto, agora é só ligar o cabo de eth1 em outro computador ou em um router para ter a conexão compartilhada. Se quiser fazer um servidor só para este fim crie um pequeno script com as duas últimas seções de código acima e coloque para ser executado no arquivo /etc/rc.local para não ter de refazer estes passos toda vez.

22

02 2010

Como Limitar o Uso de Banda do Seu Computador

Incomodado por ter que parar de usar a internet toda vez que eu utilizava atualizações via apt ou baixava um arquivo torrent, busquei sobre como eu poderia limitar o uso da banda destes processos, mesmo porque divido a conexão à internet com outros quatro computadores, e sempre que esses downloads demoram um pouquinho mais, é provável que surjam reclamações sobre a lentidão.

O aplicativo mais indicado é o tricke, um limitador de banda que funciona como daemon ou como linha de comando. Ele está disponível nos repositórios do Debian e do Ubuntu:

sudo aptitude install tricke

Após instalado pode-se limitar a banda de um programa que utilize a conexão com a internet ao lançá-lo do seguinte modo:

sudo trickle -s -d 20 aptitude upgrade

Onde -s separa este comando do daemon trickled caso ele esteja habilitado, e -d limita a taxa de download em KB/s. Já para programas que também façam upload, como é o caso do transmission, um cliente torrent, deve-se também configurar uma taxa de upload onde -u é a opção em questão que limitará todos os uploads feitos por esta seção do transmission a até 10KB/s no seguinte exemplo:

tricke -s -d 20 -u 10 transmission arquivo.torrent

Caso você deseje ajustar todas as conexões do computador para terem banda limitada - o que pode ser o caso de um servidor que quando precisa ser atualizado não inutilizará toda a rede, pode-se ajustar o daemon do trickle, chamado trickled.

Este daemon é controlado pelo arquivo /etc/trickled.conf:

1
2
3
4
5
6
7
8
9
[ssh]
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 2
 
[ftp]
Priority = 8
Time-Smoothing = 5
Length-Smoothing = 20

Este exemplo de configuração limitará as bandas dos protocolos ssh e ftp, dando prioridade às conexões ssh. Lança-se o daemon da seguinte forma via linha de comando ou script de inicialização:

trickled -d 20

Aqui todas as conexões deste computador serão limitadas à 20KB/s.

Independente do método de utilização, posso agora navegar tranquilamente na internet mesmo enquanto atualizo o meu computador.

06

04 2009

Compartilhar NET Virtua Usando Um Computador Linux

Eis que precisávamos compartilhar a conexão da NET Virtua com mais quatro computadores, e então montei um servidor com um computador velho que trabalha como um firewall e um router. Para esta opção pode-se usar diversas distribuições como Coyote ou o Brazil FW - que rodam em um simples disquete, mas eu utilizei o Debian, pois havia um pequeno HD e eu ainda queria fazer algumas tarefas de leeching.

O sistema aqui foi configurado com duas placas de rede, uma delas ligada ao Cable Modem Motorola SBV5121, e outra ligada à um simples Hub Encore de 8 Portas.

Esquema de Rede da República

Lembre-se que os modems da NET virtua fixam o endereço MAC das placas de rede para não deixarem demais placas conectarem-se à rede. Nesse caso será necessário reiniciar o modem caso você o desconecte de outra máquina previamente, e é pelo mesmo motivo que devemos configurar o iptables para clonar o endereço ao repassar a conexão para as demais máquinas.

Vamos aos arquivos que precisam ser configurados. Os seguintes pacotes são necessários:

sudo apt-get install dhcp3-server

/etc/network/interfaces

iface lo inet loopback		# Interface reflexiva
iface eth0 inet dhcp		# Dizer à placa conectada à Internet para obter um IP do modem
 
iface eth1 inet static		# Fixar o IP da placa ligada ao hub
 address 192.168.0.1		# Os endereços 192.168.0.* são os mais comumente utilizados
 netmask 255.255.255.0
 
auto lo eth0 eth1		# Todas essas interfaces devem ser conectadas automaticamente ao iniciar o sistema

/etc/default/dhcp3-server

INTERFACES="eth1"		# Indicar a interface conectada à rede local

/etc/dhcp3/dhcpd.conf

# Configurações do Servidor
option domain-name-servers $DNSDaRede;		# Substitua $DNSDaRede pelo DNS de sua rede
ddns-update-style ad-hoc;			# Estilo de atualização de DNS automático
default-lease-time 600;				# Tempo de expiração mínima do IP fornecido
max-lease-time 7200;				# Tempo de expiração máxima do IP fornecido
log-facility local7;				# Modo como o servidor registra suas atividades
 
# Ajustando a rede à qual se aplica o servidor
subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.2 192.168.0.10;		# Faixa de IPs que devem ser distribuídos
 option routers 192.168.0.1;			# Endereço do router
 option broadcast-address 192.168.0.255;	# Endereço de broadcast
 option domain-name-servers $DNSDaRede;		# Substitua $DNSDaRede pelo DNS de sua rede
}

Até esse ponto, ao reiniciar os servidores e os IPs das máquinas cliente você deve perceber que está tudo certo, mas a conexão à internet não ocorre, e isto é devido àquele problema de que o modem não permite que mais de um endereço MAC de placa de rede passe por ele, portanto é necessário que um script seja rodado toda vez que a internet subir no servidor. Se o arquivo não existir, crie-o:

/etc/network/if-up.d/firewall

#!/bin/sh
# Definindo variáveis
Internet=eth0		# Interface conectada à Internet.
LocalNetwork=eth1	# Interface conectada à rede local.
Loopback=lo		# Interface reflexiva (127.0.0.1)
 
# Onde procurar o comando iptables.
PATH=/usr/sbin:/sbin:/bin:/usr/bin
 
# Apaga todas as regras existentes.
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
 
iptables -A INPUT -i $Loopback -j ACCEPT								# Sempre aceite tráfego da interface reflexiva (loopback)		
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT					# Permite conexões estabelecidas
iptables -A INPUT -m state --state NEW -i ! $Internet -j ACCEPT						# Permite conexões que não vêm de fora
iptables -A FORWARD -i $Internet -o $LocalNetwork -m state --state ESTABLISHED,RELATED -j ACCEPT	# Permite conexões que vêm de fora quando estabelecidas
iptables -A FORWARD -i $LocalNetwork -o $Internet -j ACCEPT						# Permite conexões realizadas da rede local para fora
iptables -A FORWARD -i $Internet -o $Internet -j REJECT							# Rejeita conexões realizadas de fora
iptables -t nat -A POSTROUTING -o $Internet -j MASQUERADE						# Traduz os endereços de rede
 
echo 1 > /proc/sys/net/ipv4/ip_forward									# Ativa o roteamento.

Reinicie os servidores, o modem e os IPs das máquinas clientes, tudo deve dar certo.

25

02 2009