A jogada
Basta editarmos o nosso arquivo de configuração do velho squid em /etc/squid/squid.conf.
E depois localizarmos ou inserirmos estas linhas abaixo:
Assim o squid irá salvar objetos em seu cache de ate 20 megas, e junto com a opção refresh_pattern, realizará a tarefa de nunca expirar os downloads de qualquer objeto que termine com a expressão regular exe$, ou seja, qualquer arquivo executavel.
Portanto, qualquer download de programas menores de 20 megas irão para o cache na hora, tipo, putty.exe, winrar.exe e etc...
E você verá que ao realizar um download destes arquivos, a velocidade será surpreendente !! ....Veja...teste :)
# 20 MB de executavel
maximum_object_size 20480 KB
refresh_pattern -i exe$ 999999 100% 999999 override-expire override-lastmod ignore-reload ignore-no-cache ignore-private ignore-auth
Testando
Basta reiniciar o squid e realizar os downloads para teste.
# squid -k reconfigure
Boa diversão... :)
Espaço dedicado para o meu lazer em TI, pois quando não tenho nada profissional pra desempenhar ou implantar, a diversão é abrir o PC ou notebook e testar SDK's, novas linguagens de programação, FrameWorks, compilar open source games, viajar nas IDE e ai vai. Amo Linux, scripts, ferramentas, LAMP e especialmente o Kernel e Libs do GCC. Como diz um antigo amigo, fazemos de tudo kkkkk, só jogar no peito. Espero que curtam!
terça-feira, 2 de junho de 2009
Script iptables Repasse de Portas fácil
O script
Segue script que realizar o repasse de portas, basta incorporar esta pequena rotina em qualquer firewall iptables e apenas editar o arquivo /etc/ports.conf conforme desejado, ou executa-lo sozinho.
#!/bin/bash
#
# Autor: Claudemir P. da Luz Jr.
#
# Licença: GPL Versão 3
# Interface de Rede Em que esta o seu Link, LP, Frame Relay, Velox VPN e etc.
EXTERNAL_INTERFACE=eth0
# Endereço IP de sua Interface ethX
# ex.: 200.200.200.1
EXTERNAL_IP=192.168.245.1
# Interface de Rede em que esta a Rede Interna , Privada !!
# ex.: 192.168.0.1
INTERNAL_INTERFACE=eth1
# Criando arquivo de sample ;)
if [ ! -f /etc/ports.conf ]; then
touch /etc/ports.conf
# criando exemplos para testes
echo "TCP 5900 192.168.0.37 5900" >> /etc/ports.conf
echo "TCP 25 192.168.0.37 25" >> /etc/ports.conf
echo "TCP 22 192.168.0.37 22" >> /etc/ports.conf
fi
if [ -f /etc/ports.conf ]; then
echo "Habilitando Port-Forwarding"
while read IP_PORT; do
# extrai os Protocolos, IPs e Portas
NAT_TYPE=$(echo "$IP_PORT" | awk '{print $1}')
NAT_EXT_PORT=$(echo "$IP_PORT" | awk '{print $2}')
NAT_INT_IP=$(echo "$IP_PORT" | awk '{print $3}')
NAT_INT_PORT=$(echo "$IP_PORT" | awk '{print $4}')
# escreve as regras !
# regra prerouting dnat
iptables -A PREROUTING -t nat -p $NAT_TYPE -d $EXTERNAL_IP --dport $NAT_EXT_PORT -j DNAT \
--to-destination $NAT_INT_IP:$NAT_INT_PORT
# permite trafego de pacotes da interface externa -> interna
iptables -A FORWARD -i $EXTERNAL_INTERFACE -o $INTERNAL_INTERFACE -p $NAT_TYPE \
-d $NAT_INT_IP --dport $NAT_INT_PORT -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
# permite trafego de pacotes da interface interna -> externa
iptables -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE -p $NAT_TYPE \
-s $NAT_INT_IP --sport $NAT_INT_PORT -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
# regra postrounting snat
iptables -t nat -A POSTROUTING -p $NAT_TYPE -d $EXTERNAL_IP -s $NAT_INT_IP \
--sport $NAT_INT_PORT -j SNAT --to $EXTERNAL_IP:$NAT_EXT_PORT
echo "dnat: $NAT_TYPE:$EXTERNAL_IP:$NAT_EXT_PORT - $NAT_INT_IP:$NAT_INT_PORT"
done < /etc/ports.conf # libera estas variaveis unset IP_PORT unset NAT_TYPE unset NAT_EXT_PORT unset NAT_INT_IP unset NAT_INT_PORT else echo "Port-forwarding desabilitado ! " fi
Executando
Basta salvar como repasse-portas.sh, e setar permissão de execução:
# chmod 755 repasse-portas.sh
e
#./repasse-portas.sh
Blz..
Segue script que realizar o repasse de portas, basta incorporar esta pequena rotina em qualquer firewall iptables e apenas editar o arquivo /etc/ports.conf conforme desejado, ou executa-lo sozinho.
#!/bin/bash
#
# Autor: Claudemir P. da Luz Jr.
#
# Licença: GPL Versão 3
# Interface de Rede Em que esta o seu Link, LP, Frame Relay, Velox VPN e etc.
EXTERNAL_INTERFACE=eth0
# Endereço IP de sua Interface ethX
# ex.: 200.200.200.1
EXTERNAL_IP=192.168.245.1
# Interface de Rede em que esta a Rede Interna , Privada !!
# ex.: 192.168.0.1
INTERNAL_INTERFACE=eth1
# Criando arquivo de sample ;)
if [ ! -f /etc/ports.conf ]; then
touch /etc/ports.conf
# criando exemplos para testes
echo "TCP 5900 192.168.0.37 5900" >> /etc/ports.conf
echo "TCP 25 192.168.0.37 25" >> /etc/ports.conf
echo "TCP 22 192.168.0.37 22" >> /etc/ports.conf
fi
if [ -f /etc/ports.conf ]; then
echo "Habilitando Port-Forwarding"
while read IP_PORT; do
# extrai os Protocolos, IPs e Portas
NAT_TYPE=$(echo "$IP_PORT" | awk '{print $1}')
NAT_EXT_PORT=$(echo "$IP_PORT" | awk '{print $2}')
NAT_INT_IP=$(echo "$IP_PORT" | awk '{print $3}')
NAT_INT_PORT=$(echo "$IP_PORT" | awk '{print $4}')
# escreve as regras !
# regra prerouting dnat
iptables -A PREROUTING -t nat -p $NAT_TYPE -d $EXTERNAL_IP --dport $NAT_EXT_PORT -j DNAT \
--to-destination $NAT_INT_IP:$NAT_INT_PORT
# permite trafego de pacotes da interface externa -> interna
iptables -A FORWARD -i $EXTERNAL_INTERFACE -o $INTERNAL_INTERFACE -p $NAT_TYPE \
-d $NAT_INT_IP --dport $NAT_INT_PORT -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
# permite trafego de pacotes da interface interna -> externa
iptables -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE -p $NAT_TYPE \
-s $NAT_INT_IP --sport $NAT_INT_PORT -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
# regra postrounting snat
iptables -t nat -A POSTROUTING -p $NAT_TYPE -d $EXTERNAL_IP -s $NAT_INT_IP \
--sport $NAT_INT_PORT -j SNAT --to $EXTERNAL_IP:$NAT_EXT_PORT
echo "dnat: $NAT_TYPE:$EXTERNAL_IP:$NAT_EXT_PORT - $NAT_INT_IP:$NAT_INT_PORT"
done < /etc/ports.conf # libera estas variaveis unset IP_PORT unset NAT_TYPE unset NAT_EXT_PORT unset NAT_INT_IP unset NAT_INT_PORT else echo "Port-forwarding desabilitado ! " fi
Executando
Basta salvar como repasse-portas.sh, e setar permissão de execução:
# chmod 755 repasse-portas.sh
e
#./repasse-portas.sh
Blz..
terça-feira, 26 de maio de 2009
ViVo 3G E220 no SuSe Linux 11.1
Vivo 3g
Bem peguei um modem usb da vivo para testes no OpenSuSe 11.1.
E segue resultado, pois pesquisando da para ver que somente algums modems usb são detectados em kernels mais recentes, como o 2.6.25 e superiores.
Para algums modems existem ate algums jogadas que devem ser feitas no UDEV e por ai vai, mas o modem testando foi um E220, já muito comun aqui na Região, e o SUSE 11.1 detectou legal e carregou os modulos necessários tranquilamente.
Segue saida do comando lsusb, reconhecendo o modem:
srve:~ # lsusb
Bus 008 Device 003: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem
srve:~ # dmesg | grep USB
Olhando o kernel, vemos que a interface USB do modem foi levantada, segue:
usb 8-6: new high speed USB device using ehci_hcd and address 3
usb 8-6: GSM modem (1-port) converter now attached to ttyUSB0
usb 8-6: GSM modem (1-port) converter now attached to ttyUSB1
scsi21 : SCSI emulation for USB Mass Storage devices
scsi22 : SCSI emulation for USB Mass Storage devices
usb 8-6: New USB device found, idVendor=12d1, idProduct=1003
usb 8-6: New USB device strings: Mfr=2, Product=1, SerialNumber=0
Configurando o WVDIAL
Com o modem ja detectado e a interface usb levantada, basta apenas instalarmos o programa wvdial, que da conta do recado.
# zypper install wvdial
Basta agora executarmos o programa wvdialconf, para ele detectar o modem e já criara o arquivo de configuração nicial em /etc/wvdial.conf, segue:
[Dialer Defaults]
Modem = /dev/ttyUSB0
Baud = 921600
DialCommand = ATDT
Check Def Route = on
FlowControl = Hardware(CRTSCTS)
Username = vivo
Password = vivo
Phone = *99#
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
ISDN = 0
Modem Type = Analog Modem
Bem, basta adicionarmos a opção Phone, com o da vivo, que é *99# e colocarmos o username e password igual a vivo.
PPPd
Bem, as vezes temos algums pequenos problemas com o daemon do PPP, que devido a algumas configurações, pode causar a falha "Modem Hang UP".
Basta voce colocar estas opção ativas no seu arquivo do /etc/ppp/options, segue:
srve:~ # cat /etc/ppp/options
noipdefault
debug
noauth
crtscts
lock
modem
asyncmap 0
nodetach
lcp-echo-interval 30
lcp-echo-failure 4
lcp-max-configure 60
lcp-restart 2
idle 600
noipx
file /etc/ppp/filters
proxyarp
ipcp-max-failure 30
asyncmap 0xa0000
mru 1500
refuse-chap
Conectando na NET =P
Bem para conectarmos na Net, basta agora executarmos o wvdial no console:
# wvdial
e esperar a interface ppp0 levantar, segue:
ppp0 Link encap:Protocolo Ponto-a-Ponto
inet end.: 189.99.149.102 P-a-P:10.64.64.64 Masc:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Métrica:1
RX packets:24336 errors:0 dropped:0 overruns:0 frame:0
TX packets:23430 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:17269529 (16.4 Mb) TX bytes:10678980 (10.1 Mb)
Rota !?
Hah...lembre-se, cheque se a rota padrão foi alterada com sucesso apos a conexão, e não custa nada dar uma verificado no /etc/resolv.conf para checar os DNS da vivo...
Pode adicionar a rota manualmente assim como root, segue:
# route add default dev ppp0
SuSe Firewall
Ei...Lembre-se ao navegar e utilizar algum serviço de verificar o Firewall do SuSe 11, qualquer coisa vá no Yast na parte de Segurança e Firewall.
Aê galera grande abraço...
Bem peguei um modem usb da vivo para testes no OpenSuSe 11.1.
E segue resultado, pois pesquisando da para ver que somente algums modems usb são detectados em kernels mais recentes, como o 2.6.25 e superiores.
Para algums modems existem ate algums jogadas que devem ser feitas no UDEV e por ai vai, mas o modem testando foi um E220, já muito comun aqui na Região, e o SUSE 11.1 detectou legal e carregou os modulos necessários tranquilamente.
Segue saida do comando lsusb, reconhecendo o modem:
srve:~ # lsusb
Bus 008 Device 003: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem
srve:~ # dmesg | grep USB
Olhando o kernel, vemos que a interface USB do modem foi levantada, segue:
usb 8-6: new high speed USB device using ehci_hcd and address 3
usb 8-6: GSM modem (1-port) converter now attached to ttyUSB0
usb 8-6: GSM modem (1-port) converter now attached to ttyUSB1
scsi21 : SCSI emulation for USB Mass Storage devices
scsi22 : SCSI emulation for USB Mass Storage devices
usb 8-6: New USB device found, idVendor=12d1, idProduct=1003
usb 8-6: New USB device strings: Mfr=2, Product=1, SerialNumber=0
Configurando o WVDIAL
Com o modem ja detectado e a interface usb levantada, basta apenas instalarmos o programa wvdial, que da conta do recado.
# zypper install wvdial
Basta agora executarmos o programa wvdialconf, para ele detectar o modem e já criara o arquivo de configuração nicial em /etc/wvdial.conf, segue:
[Dialer Defaults]
Modem = /dev/ttyUSB0
Baud = 921600
DialCommand = ATDT
Check Def Route = on
FlowControl = Hardware(CRTSCTS)
Username = vivo
Password = vivo
Phone = *99#
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
ISDN = 0
Modem Type = Analog Modem
Bem, basta adicionarmos a opção Phone, com o da vivo, que é *99# e colocarmos o username e password igual a vivo.
PPPd
Bem, as vezes temos algums pequenos problemas com o daemon do PPP, que devido a algumas configurações, pode causar a falha "Modem Hang UP".
Basta voce colocar estas opção ativas no seu arquivo do /etc/ppp/options, segue:
srve:~ # cat /etc/ppp/options
noipdefault
debug
noauth
crtscts
lock
modem
asyncmap 0
nodetach
lcp-echo-interval 30
lcp-echo-failure 4
lcp-max-configure 60
lcp-restart 2
idle 600
noipx
file /etc/ppp/filters
proxyarp
ipcp-max-failure 30
asyncmap 0xa0000
mru 1500
refuse-chap
Conectando na NET =P
Bem para conectarmos na Net, basta agora executarmos o wvdial no console:
# wvdial
e esperar a interface ppp0 levantar, segue:
ppp0 Link encap:Protocolo Ponto-a-Ponto
inet end.: 189.99.149.102 P-a-P:10.64.64.64 Masc:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Métrica:1
RX packets:24336 errors:0 dropped:0 overruns:0 frame:0
TX packets:23430 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:17269529 (16.4 Mb) TX bytes:10678980 (10.1 Mb)
Rota !?
Hah...lembre-se, cheque se a rota padrão foi alterada com sucesso apos a conexão, e não custa nada dar uma verificado no /etc/resolv.conf para checar os DNS da vivo...
Pode adicionar a rota manualmente assim como root, segue:
# route add default dev ppp0
SuSe Firewall
Ei...Lembre-se ao navegar e utilizar algum serviço de verificar o Firewall do SuSe 11, qualquer coisa vá no Yast na parte de Segurança e Firewall.
Aê galera grande abraço...
SUSE 11 - Adicionado impressora Texto (Raw Printer)
Geralmente as impressoras de texto, são do tipo de cabo paralelo ( /dev/lp0 ) e com driver do tipo texto ( Raw Printer ).
As vezes em uma instalação via setup padrão (kcontrol, Yast e etc), até atraplha, pois em algumas vezes o driver text only (Generic Raw Printer) simplesmente não aparece ;)
Dica: No SuSe 11, basta instalar o pacote cups-drivers, zypper install cups-drivers.
Vamos lá:
1 - Sempre devemos checar se o Linux detectou uma impressora ligada na porta paralela:
linux-70es:~ # dmesg | grep lp0
lp0: using parport0 (interrupt-driven).
linux-70es:~ # lsmod | grep lp
lp 8644 0
parport 33832 3 lp,ppdev,parport_pc
Nota: Se não, olhar a BIOS da maquina, pois a porta paralela pode estar desabilitada !!
2 - Adicionando uma Impressora Raw Printer no Cups:
Sempre verificar se o cups esta rodando e verificar se a interface web esta funcionado:
# service cups status
http://localhost:631 -> Acesso via navegador Web !
Para adicionar, basta executar este comando:
# lpadmin -p myprinter -E -v parallel:/dev/lp0
-p
That' s all folks !! ;)
As vezes em uma instalação via setup padrão (kcontrol, Yast e etc), até atraplha, pois em algumas vezes o driver text only (Generic Raw Printer) simplesmente não aparece ;)
Dica: No SuSe 11, basta instalar o pacote cups-drivers, zypper install cups-drivers.
Vamos lá:
1 - Sempre devemos checar se o Linux detectou uma impressora ligada na porta paralela:
linux-70es:~ # dmesg | grep lp0
lp0: using parport0 (interrupt-driven).
linux-70es:~ # lsmod | grep lp
lp 8644 0
parport 33832 3 lp,ppdev,parport_pc
Nota: Se não, olhar a BIOS da maquina, pois a porta paralela pode estar desabilitada !!
2 - Adicionando uma Impressora Raw Printer no Cups:
Sempre verificar se o cups esta rodando e verificar se a interface web esta funcionado:
# service cups status
http://localhost:631 -> Acesso via navegador Web !
Para adicionar, basta executar este comando:
# lpadmin -p myprinter -E -v parallel:/dev/lp0
-p
That' s all folks !! ;)
quinta-feira, 12 de março de 2009
Suse 11 - Compilando BlackLists no squidGuard
Segue um pequeno passo-a-passo
firewall:~ # cd /var/lib/squidGuard/db
firewall:/var/lib/squidGuard/db # ls
blacklist dest
firewall:/var/lib/squidGuard/db # cd dest/
firewall:/var/lib/squidGuard/db/dest # ls
.permitidos-vendas.swp expressions permitidos-vendas permitidos-vendas.db
firewall:/var/lib/squidGuard/db/dest # vim permitidos-vendas
You have new mail in /var/spool/mail/root
NOTA.: É neste arquivo que colocamos os dominios dos sites "permitidos" !!
firewall:/var/lib/squidGuard/db/dest # squidGuard --help
squidGuard: invalid option -- '-'
Usage: squidGuard [-u] [-C block] [-t time] [-c file] [-v] [-d]
Options:
-v : show version number
-d : all errors to stderr
-c file : load alternate configfile
-t time : specify startup time in the format: yyyy-mm-ddTHH:MM:SS
-u : update .db files from .diff files
-C file|all : create new .db files from urls/domain files
specified in "file".
Criando a Base do SquidGuard (depois da alteração)
firewall:/var/lib/squidGuard/db/dest # squidGuard -C all
Processing file and database /var/lib/squidGuard/db/dest/permitidos-vendas
[==================================================] 100 % done
Reiniciando o Proxy Squid
firewall:/var/lib/squidGuard/db/dest # squid -k reconfigure
firewall:/var/lib/squidGuard/db/dest #
Só testar... ;)
firewall:~ # cd /var/lib/squidGuard/db
firewall:/var/lib/squidGuard/db # ls
blacklist dest
firewall:/var/lib/squidGuard/db # cd dest/
firewall:/var/lib/squidGuard/db/dest # ls
.permitidos-vendas.swp expressions permitidos-vendas permitidos-vendas.db
firewall:/var/lib/squidGuard/db/dest # vim permitidos-vendas
You have new mail in /var/spool/mail/root
NOTA.: É neste arquivo que colocamos os dominios dos sites "permitidos" !!
firewall:/var/lib/squidGuard/db/dest # squidGuard --help
squidGuard: invalid option -- '-'
Usage: squidGuard [-u] [-C block] [-t time] [-c file] [-v] [-d]
Options:
-v : show version number
-d : all errors to stderr
-c file : load alternate configfile
-t time : specify startup time in the format: yyyy-mm-ddTHH:MM:SS
-u : update .db files from .diff files
-C file|all : create new .db files from urls/domain files
specified in "file".
Criando a Base do SquidGuard (depois da alteração)
firewall:/var/lib/squidGuard/db/dest # squidGuard -C all
Processing file and database /var/lib/squidGuard/db/dest/permitidos-vendas
[==================================================] 100 % done
Reiniciando o Proxy Squid
firewall:/var/lib/squidGuard/db/dest # squid -k reconfigure
firewall:/var/lib/squidGuard/db/dest #
Só testar... ;)
Assinar:
Postagens (Atom)