Situacion:
El touchpad de la laptop no funciona la primera vez que arranca la laptop/computadora pero si al reiniciar la misma
Solucion:
1. Edita el archivo /etc/default/grub (NO es grub.cfg)
2. Ubica la siguiente linea:
GRUB_CMDLINE_LINUX=" "
3. Agrega lo siguiente entre "":
i8042.nomux=1 locale=fr_FR i8042.reset
4. La linea debe quedar asi:
GRUB_CMDLINE_LINUX="i8042.nomux=1 locale=fr_FR i8042.reset"
5. Graba el archivo y sal.
6. En el terminar ejecuta:
#sudo update-grub
7. Listo, apaga y prende tu computadora.
Creditos a:
http://ubuntuforums.org/showthread.php?t=2217553
Blog en espanol destinado a diferentes temas tecnicos principalmente en IT y Networking. Se desea cubrir Linux, DNS, DNSSEC, RPKI, BGP, Cisco, Programacion (Bash, Python, etc), Protocolos de Enrutamiento, Seguridad en Redes, VoIP.
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
martes, 9 de diciembre de 2014
miércoles, 23 de julio de 2014
NAT66 en Linux
Hola,
El dia de hoy voy a hacer un post el cual no deseo que sea tomado de mala manera. Indiscutiblemente no estoy a favor del NAT pero aun asi pienso que es un mecanismo que no desaparecera en IPv6 (se reducira drasticamente) pero siempre existira. En lo posible recomiendo evitar hacer NAT cuando exista la posibilidad.
Pueden haber muchas razones para implementar NAT66, a) seguramente los clientes acostumbrados a hacer NAT querran hacerlo en IPv6 (suene feo o bonito), b) personas que quieran ocultar su topologia a Internet, c) empresas que consideren NAT como mecanismo para cambiar los IPs de sus redes, d) la tendencia mundial de no permitir tethering en los celulares, e) querer ofrecer IPv6 detras de un dispositivo y mi proveedor no tenga DHCPv6-PD o solo me entregue una red /64, f) alguien que piense que NAT sirve de mecanismo de seguridad, etc, etc, etc, etc.
En base a lo anterior la intencion de este post no es estar a favor o en contra de NAT, solo deseo indicar que esta disponible en el mundo de IPv6 y ofrecer un sencillo ejemplo. Para bien o para mal puede ser utilizado en algunos escenarios.
Requerimientos:
El equipo a realizar el NAT66 debe tener:
- Kernel > 3.9
- iptables > 1.4.18
Ubuntu 14.04 cubre ambos requerimientos "out-of-the-box" y por ello es muy sencillo hacerlo.
Existen patch para hacer NAT66 en versiones previas pero no lo indicare en este momento.
Escenario:
Esta es la topologia en la que estoy trabajando. Deseo que "Device 2" traduzca la direccion IPv6 origen de "Device 1" con la direccion IPv6 de la interfaz saliente (eth2). Con el comando NAT implementado estoy realmente haciendo NAT de toda la subred 2001:db8:12::/48
Configuraciones:
En DEVICE 1:
#ifconfig eth0 inet6 add 2001:db8:12::2/48
#route -A inet6 add default gw 2001:db8:12::1
En DEVICE 2:
Configurar las direcciones IPv6 en el equipo
#ifconfig eth1 inet6 add 2001:db8:12::1/48
#ifconfig eth2 inet6 add 2001:db8:23::1/48
Habilitar enrutamient o IPv6 entre las interfaces:
#sysctl -w net.ipv6.conf.all.forwarding=1
Configurar el NAT66:
#ip6tables -t nat -A POSTROUTING -o eth2 -s 2001:db8:12::/48 -j MASQUERADE
(es de notar que existen muchas otras maneras de hacer NAT con ip6tables)
En DEVICE 3:
#ifconfig eth1 inet6 add 2001:db8:23::2/48
#route -A inet6 add default gw 2001:db8:23::1
Del lado de Device 3 pueden verificar de muchas maneras que todo funcione, incluso sin ruta por default en Device 3, DEVICE 1 puede llegarle. De igual manera tcpdump, wireshark o una sencilla revision de los logs puedes verificar que efecticamente el NAT esta llevandose a cabo.
Espero sea de tu utilidad
jueves, 10 de abril de 2014
Super sencillo sniffer en python3
Hola,
Luego de mucho sufrir y mucho buscar logre adaptar con muy pocos cambios un sniffer que esta en python2 y llevarlo a python3..., es el unico sniffer que me ha funcionado usando python3.3. Lamentablemente es MUY basico pero creo que alguien le puede servir, por ello se los dejo.
Al menos captura y muestra origen, destino, puertos TCP e incluso la data en hex. Lo que no he podido hacer es "unpack" la data sobre TCP.
-----
#!/usr/bin/python3.3
#Sniffs only incoming TCP packet
import socket, sys
from struct import *
#create an INET, STREAMing socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
except:
print ('Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
# receive a packet
while True:
packet = s.recvfrom(65565)
#packet string from tuple
packet = packet[0]
#take first 20 characters for the ip header
ip_header = packet[0:20]
#now unpack them :)
iph = unpack('!BBHHHBBH4s4s' , ip_header)
version_ihl = iph[0]
version = version_ihl >> 4
ihl = version_ihl & 0xF
iph_length = ihl * 4
ttl = iph[5]
protocol = iph[6]
s_addr = socket.inet_ntoa(iph[8]);
d_addr = socket.inet_ntoa(iph[9]);
print ('Version : ' + str(version) + ' IP Header Length : ' + str(ihl) + ' TTL : ' + str(ttl) + ' Protocol : ' + str(protocol) + ' Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr))
tcp_header = packet[iph_length:iph_length+20]
#now unpack them :)
tcph = unpack('!HHLLBBHHH' , tcp_header)
source_port = tcph[0]
dest_port = tcph[1]
sequence = tcph[2]
acknowledgement = tcph[3]
doff_reserved = tcph[4]
tcph_length = doff_reserved >> 4
print ('Source Port : ' + str(source_port) + ' Dest Port : ' + str(dest_port) + ' Sequence Number : ' + str(sequence) + ' Acknowledgement : ' + str(acknowledgement) + ' TCP header length : ' + str(tcph_length))
h_size = iph_length + tcph_length * 4
data_size = len(packet) - h_size
#get data from the packet
data = packet[h_size:]
print ('Data : ' + str(data))
print ()
(solo captura TCP pero es muy sencillo adaptarlo a otros protocolos)
------
Basado en:
http://www.binarytides.com/python-packet-sniffer-code-linux/
Luego de mucho sufrir y mucho buscar logre adaptar con muy pocos cambios un sniffer que esta en python2 y llevarlo a python3..., es el unico sniffer que me ha funcionado usando python3.3. Lamentablemente es MUY basico pero creo que alguien le puede servir, por ello se los dejo.
Al menos captura y muestra origen, destino, puertos TCP e incluso la data en hex. Lo que no he podido hacer es "unpack" la data sobre TCP.
-----
#!/usr/bin/python3.3
#Sniffs only incoming TCP packet
import socket, sys
from struct import *
#create an INET, STREAMing socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
except:
print ('Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
# receive a packet
while True:
packet = s.recvfrom(65565)
#packet string from tuple
packet = packet[0]
#take first 20 characters for the ip header
ip_header = packet[0:20]
#now unpack them :)
iph = unpack('!BBHHHBBH4s4s' , ip_header)
version_ihl = iph[0]
version = version_ihl >> 4
ihl = version_ihl & 0xF
iph_length = ihl * 4
ttl = iph[5]
protocol = iph[6]
s_addr = socket.inet_ntoa(iph[8]);
d_addr = socket.inet_ntoa(iph[9]);
print ('Version : ' + str(version) + ' IP Header Length : ' + str(ihl) + ' TTL : ' + str(ttl) + ' Protocol : ' + str(protocol) + ' Source Address : ' + str(s_addr) + ' Destination Address : ' + str(d_addr))
tcp_header = packet[iph_length:iph_length+20]
#now unpack them :)
tcph = unpack('!HHLLBBHHH' , tcp_header)
source_port = tcph[0]
dest_port = tcph[1]
sequence = tcph[2]
acknowledgement = tcph[3]
doff_reserved = tcph[4]
tcph_length = doff_reserved >> 4
print ('Source Port : ' + str(source_port) + ' Dest Port : ' + str(dest_port) + ' Sequence Number : ' + str(sequence) + ' Acknowledgement : ' + str(acknowledgement) + ' TCP header length : ' + str(tcph_length))
h_size = iph_length + tcph_length * 4
data_size = len(packet) - h_size
#get data from the packet
data = packet[h_size:]
print ('Data : ' + str(data))
print ()
(solo captura TCP pero es muy sencillo adaptarlo a otros protocolos)
------
Basado en:
http://www.binarytides.com/python-packet-sniffer-code-linux/
miércoles, 2 de abril de 2014
Instalar ISC DHCP 4.3 en Linux (Ubuntu 13.04) (IPv6)
Situacion:
Deseo instalar DHCP ISC 4.3 en Linux para mejorar el soporte de DHCP para IPv6.
Procedimiento:
1) Agregar la siguiente linea al final de /etc/apt/sources.list:
deb http://ftp.de.debian.org/debian experimental main
2) Eliminar cualquier dhcp de ISC que tuviesemos antes:
#apt-get purge isc-dhcp-server (notese que podemos usar purge o remove, lo dejo a tu criterio)
3) Actualizar la DB de repositorios:
#apt-get update
4) Instalar el isc-dhcp-server indicando que use el repositorio experimental:
#apt-get -t experimental install isc-dhcp-server
Importante:
La configuracion del DHCP(d) debe estar funcionando, sino, el DHCPD no levantara y dara un error (logico, no?)
Más información:
http://blog.acostasite.com/2014/04/solucion-tres-errores-cuando-queremos.html
Deseo instalar DHCP ISC 4.3 en Linux para mejorar el soporte de DHCP para IPv6.
Procedimiento:
1) Agregar la siguiente linea al final de /etc/apt/sources.list:
deb http://ftp.de.debian.org/debian experimental main
2) Eliminar cualquier dhcp de ISC que tuviesemos antes:
#apt-get purge isc-dhcp-server (notese que podemos usar purge o remove, lo dejo a tu criterio)
3) Actualizar la DB de repositorios:
#apt-get update
4) Instalar el isc-dhcp-server indicando que use el repositorio experimental:
#apt-get -t experimental install isc-dhcp-server
Importante:
La configuracion del DHCP(d) debe estar funcionando, sino, el DHCPD no levantara y dara un error (logico, no?)
Más información:
http://blog.acostasite.com/2014/04/solucion-tres-errores-cuando-queremos.html
miércoles, 2 de enero de 2013
DNS64 y NAT64 paso a paso con explicación
Introducción:
DNS64 y NAT64 son dos tecnología diferentes que comunmente trabajan en conjunto.
DNS64 y NAT64 es ideal para colocar en el borde una red donde unicamente existan host con IPv6, algo cada día es más común sobre todo en el mundo de redes celulares y se gran cantidad de sensores.
En Internet hay mucha información sobre como configurar NAT64 y DNS64, la mayoría dice que muy fácil, otros lo colocan más complicado. En lo personal no conseguí ninguna que explicara paso a paso como hacerlo y adicionalmente que explicara la topología de red donde se estaba configurando.
En este post comienzo instalando DNS64 y luego procedemos con NAT64. Se puede instalar en cualquier orden.
Que se necesita antes de comenzar:
- Una subred IPv6 libre (una /96 esta bien) para realizar el mapeo DNS entre IPv4 e IPv6. Esta misma subred la utilizaremos dentro de Tayga para el NAT64
- Logicamente conectividad IPv6 entre los clientes y el servidor DNS64 y NAT64 (no se requiere IPv4)
Topología:
a) Servidor realizando. Solo tiene una interfaz (eth1)
IPv6: 2001:db8:1:1::/64 (eth1).
IPv4: 192.168.124.107
b) IP de un cliente (eth2):
2001:db8:1:1::2/64
c) Subredes IPv6:
Red que "retorna" el DNS64 2001:db8:1:ffff::/96
Pool de NAT en el NAT64: 2001:db8:1:ffff::/96
(si, son el mismo bloque)
d) Interfaz dns64:
192.168.124.107/32
2001:db8:1::1/128
(correcto!, la IPv6 e IPv4 de eth1 se solapan con interfaz dns64)
Procedimiento de DNS64.
Paso 1:
Instalar BIND9:
#aptitude install bind9
Paso 2:
Configurar /etc/bind/named.conf.options:
a) Asegurar que BIND escuche en IPv6 (recordemos que los clientes van a estar en IPv6)
listen-on-v6 { any; };
b) Permitir consultas desde cualquier IP. Si estas utilizando un servidor público o en producción favor restringir las consultas a tus clientes
allow-query { any; };
c) Realizar el DNS64 con la siguiente directiva.
dns64 2001:db8:1:ffff::/96 {
clients {
any; };
};
La configuración del punto "c" lo que indica es que aquellas consultas DNS de aquellos registros que SOLO tienen tienen registro A (no tienen registro AAAA) serán entregadas a los clientes añadiendo 2001:db8::1:ffff::/96
d) Reiniciar bind9
#/etc.init.d/bind9 restart
Probar DNS64:
a) En un PC cliente colocar como servidor DNS: 2001:db8:1:1::1
b) Ubicarse en un cliente y realizar consultar DNS de hosts solo con direcciones IPv4 (registros A). Por ejemplo:
root@ubuntu-VirtualBox:~# dig ipv4.google.com aaaa @2001:db8:1:1::1
; <<>> DiG 9.8.0-P4 <<>> ipv4.google.com aaaa @2001:db8:1:1::1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 64252="64252" br="br" id:="id:" noerror="noerror" opcode:="opcode:" query="query" status:="status:">;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 4, ADDITIONAL: 0
;; QUESTION SECTION:
;ipv4.google.com. IN AAAA
;; ANSWER SECTION:
ipv4.google.com. 0 IN CNAME ipv4.l.google.com.
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8268
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8269
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:826a
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8293
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8263
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8267
;; AUTHORITY SECTION:
google.com. 171975 IN NS ns1.google.com.
google.com. 171975 IN NS ns4.google.com.
google.com. 171975 IN NS ns2.google.com.
google.com. 171975 IN NS ns3.google.com.
;; Query time: 219 msec
;; SERVER: 2001:db8:1:1::1#53(2001:db8:1:1::1)
;; WHEN: Wed Jan 2 16:11:57 2013
;; MSG SIZE rcvd: 294->
Nota: La parte a destacar en esta salida son las direcciones IPv6 que comienzan por: 2001:db8:1:ffff..., ya en este momento sabemos que DNS64 esta funcionando.
Ahora NAT64
1) Utilizamos Tayga. El sitio oficial y link para descargarlo se encuentra en: http://www.litech.org/tayga/
2) Lo descomprimimos y desempaquetamos:
#tar -jxvf tayga-0.9.2.tar.bz2
#cd tayga-0.9.2
#./configure
#make
#make install
3) Creamos el directorio donde Tayga guardará los logs:
#mkdir /var/log/tayga
4) Editamos el archivo /usr/local/etc/tayga.conf
y copiamos y pegamos:
tun-device nat64
ipv4-addr 192.168.255.1
prefix 2001:db8:1:ffff::/96
dynamic-pool 192.168.255.0/24
data-dir /var/log/tayga
Tayga es stateless y realiza un nat 1:1 entre IPv6 e IPv4. En la configuración anterior a cada cliente IPv6 se le asignará un IP del pool 192.168.255.0/24; por ello si tenemos más de 255 hosts será necesario utililzar un pool más grande que /24. En caso de que tengas IPv4 públicas suficientes puede ser útil para evitar un doble NAT IPv4.
La directiva prefix indica el prefijo que utilizará Tayga para reconocer los 32 bits de IPv4, es decir, cuando el destino IPv6 sea: 2001:db8:1:ffff::/96, Tayga tomará los ultimos 32 bits para reconocer que ese es el destino IPv4
5) Habilitar routing IPv6 e IPv4 en el servidor.
#echo "1" > /proc/sys/net/ipv6/conf/all/forwarding
#echo "1" > /proc/sys/net/ipv4/ip_forward
6) Creación y configuración de la interfaz nat64:
#tayga --mktun
#ip link set nat64 up
#ip addr add 192.168.124.107 dev nat64
#ip addr add 2001:db8:1::1 dev nat64
(estos comandos crean la interfaz nat64 con las direcciones ip 192.168.0.1/32 y 2001:db8:1::1/128, como dije anteriormente no importa que se solape con los IPs de eth1).
Para revisar:
root@aacosta-ThinkPad-E420:~# ifconfig nat64
nat64 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.1 P-t-P:192.168.0.1 Mask:255.255.255.255
inet6 addr: 2001:db8:1::1/128 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2393 errors:0 dropped:0 overruns:0 frame:0
TX packets:2395 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1615556 (1.6 MB) TX bytes:1614316 (1.6 MB)
7) Creación de rutas:
#ip route add 192.168.255.0/24 dev nat64
#ip route add 2001:db8:1:ffff::/96 dev nat64
8) Ejecutamos Tayga
#tayga -d
(el -d es opcional, solo es para tener más información)
PROBAR NAT64
a) Probamos que todo este bien (el ping debe ser satisfactorio):
root@aacosta-ThinkPad-E420:~# ping6 2001:db8:1:ffff::192.168.0.1
PING 2001:db8:1:ffff::192.168.0.1(2001:db8:1:ffff::c0a8:1) 56 data bytes
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=109 ttl=63 time=2.18 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=110 ttl=63 time=0.209 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=111 ttl=63 time=0.190 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=112 ttl=63 time=0.126 ms
b) Realizamos NAT con la interfaz IPv4 saliente (solo si el pool IPv4 en Tayga es privado):
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -A FORWARD -i eth0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A FORWARD -i nat64 -o eth0 -j ACCEPT
c) Ahora solo debes dirigirte a la máquina cliente y todo debe estar funcionando. Ejemplos de ping y trace:
[root@localhost ~]# traceroute6 www.algo.com -n
traceroute to algo-com-prod-elb-170663297.us-east-1.elb.amazonaws.com (2001:db8:1:ffff::36f3:7ac3) from 2001:db8:1:1::2, 30 hops max, 16 byte packets
1 2001:db8:1:1::1 1.224 ms 3.8 ms 0.352 ms
2 2001:db8:1:ffff::c0a8:ff01 0.787 ms 0.772 ms 0.268 ms
3 2001:db8:1:ffff::c0a8:1 0.76 ms 0.869 ms 0.278 ms
[root@localhost ~]# ping6 www.parmalat.com.ve -n
PING www.parmalat.com.ve(2001:db8:1:ffff::c82f:4f04) 56 data bytes
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=1 ttl=56 time=7.30 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=2 ttl=56 time=5.82 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=3 ttl=56 time=5.93 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=4 ttl=56 time=8.38 ms
Puedes ver un estado de las asignaciones de Tayga en: /var/log/tayga/dynamic.map
Voila!... todo debe estar funcionado en este momento!
Mas información:
http://www.litech.org/tayga/
http://www.litech.org/tayga/README-0.9.2
http://kurser.iha.dk/eit/itifn/workshops/vne_workshop_2.html
http://ipvsix.me/?tag=tayga
Notas importantes:
- El DNS64 no funciona cuando la respuesta DNS tenga registros AAAA y A. En realidad no es una eroor porque se asume que el host tiene acceso IPv6 a Internet
- Es importante que el DNS64 y NAT64 compartan el mismo prefijo IPv6 (en el ejemplo de este post 2001:db8:1:ffff::/96.
- Durante todo el post describo el procedimiento utilizando la subred IPv6 2001:db8::/32. Favor notar que esta subred debe ser sustituida por sus redes respectivas (al igual que la información referente a IPv4).
- Pueden utilizar 2001:db8::/32 y va a funcionar igualmente pero sin acceso a destinos a IPv6
- El servidor DNS64 y NAT64 pueden ser diferentes equipos/máquinas
to get detailed information about Managed IT Services visit https://wetheitteam.com
DNS64 y NAT64 son dos tecnología diferentes que comunmente trabajan en conjunto.
DNS64 y NAT64 es ideal para colocar en el borde una red donde unicamente existan host con IPv6, algo cada día es más común sobre todo en el mundo de redes celulares y se gran cantidad de sensores.
En Internet hay mucha información sobre como configurar NAT64 y DNS64, la mayoría dice que muy fácil, otros lo colocan más complicado. En lo personal no conseguí ninguna que explicara paso a paso como hacerlo y adicionalmente que explicara la topología de red donde se estaba configurando.
En este post comienzo instalando DNS64 y luego procedemos con NAT64. Se puede instalar en cualquier orden.
Que se necesita antes de comenzar:
- Una subred IPv6 libre (una /96 esta bien) para realizar el mapeo DNS entre IPv4 e IPv6. Esta misma subred la utilizaremos dentro de Tayga para el NAT64
- Logicamente conectividad IPv6 entre los clientes y el servidor DNS64 y NAT64 (no se requiere IPv4)
Topología:
a) Servidor realizando. Solo tiene una interfaz (eth1)
IPv6: 2001:db8:1:1::/64 (eth1).
IPv4: 192.168.124.107
b) IP de un cliente (eth2):
2001:db8:1:1::2/64
c) Subredes IPv6:
Red que "retorna" el DNS64 2001:db8:1:ffff::/96
Pool de NAT en el NAT64: 2001:db8:1:ffff::/96
(si, son el mismo bloque)
d) Interfaz dns64:
192.168.124.107/32
2001:db8:1::1/128
(correcto!, la IPv6 e IPv4 de eth1 se solapan con interfaz dns64)
Procedimiento de DNS64.
Paso 1:
Instalar BIND9:
#aptitude install bind9
Paso 2:
Configurar /etc/bind/named.conf.options:
a) Asegurar que BIND escuche en IPv6 (recordemos que los clientes van a estar en IPv6)
listen-on-v6 { any; };
b) Permitir consultas desde cualquier IP. Si estas utilizando un servidor público o en producción favor restringir las consultas a tus clientes
allow-query { any; };
c) Realizar el DNS64 con la siguiente directiva.
dns64 2001:db8:1:ffff::/96 {
clients {
any; };
};
La configuración del punto "c" lo que indica es que aquellas consultas DNS de aquellos registros que SOLO tienen tienen registro A (no tienen registro AAAA) serán entregadas a los clientes añadiendo 2001:db8::1:ffff::/96
d) Reiniciar bind9
#/etc.init.d/bind9 restart
Probar DNS64:
a) En un PC cliente colocar como servidor DNS: 2001:db8:1:1::1
b) Ubicarse en un cliente y realizar consultar DNS de hosts solo con direcciones IPv4 (registros A). Por ejemplo:
root@ubuntu-VirtualBox:~# dig ipv4.google.com aaaa @2001:db8:1:1::1
; <<>> DiG 9.8.0-P4 <<>> ipv4.google.com aaaa @2001:db8:1:1::1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 64252="64252" br="br" id:="id:" noerror="noerror" opcode:="opcode:" query="query" status:="status:">;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 4, ADDITIONAL: 0
;; QUESTION SECTION:
;ipv4.google.com. IN AAAA
;; ANSWER SECTION:
ipv4.google.com. 0 IN CNAME ipv4.l.google.com.
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8268
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8269
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:826a
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8293
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8263
ipv4.l.google.com. 300 IN AAAA 2001:db8:1:ffff::4a7d:8267
;; AUTHORITY SECTION:
google.com. 171975 IN NS ns1.google.com.
google.com. 171975 IN NS ns4.google.com.
google.com. 171975 IN NS ns2.google.com.
google.com. 171975 IN NS ns3.google.com.
;; Query time: 219 msec
;; SERVER: 2001:db8:1:1::1#53(2001:db8:1:1::1)
;; WHEN: Wed Jan 2 16:11:57 2013
;; MSG SIZE rcvd: 294->
Nota: La parte a destacar en esta salida son las direcciones IPv6 que comienzan por: 2001:db8:1:ffff..., ya en este momento sabemos que DNS64 esta funcionando.
Ahora NAT64
1) Utilizamos Tayga. El sitio oficial y link para descargarlo se encuentra en: http://www.litech.org/tayga/
2) Lo descomprimimos y desempaquetamos:
#tar -jxvf tayga-0.9.2.tar.bz2
#cd tayga-0.9.2
#./configure
#make
#make install
3) Creamos el directorio donde Tayga guardará los logs:
#mkdir /var/log/tayga
4) Editamos el archivo /usr/local/etc/tayga.conf
y copiamos y pegamos:
tun-device nat64
ipv4-addr 192.168.255.1
prefix 2001:db8:1:ffff::/96
dynamic-pool 192.168.255.0/24
data-dir /var/log/tayga
Tayga es stateless y realiza un nat 1:1 entre IPv6 e IPv4. En la configuración anterior a cada cliente IPv6 se le asignará un IP del pool 192.168.255.0/24; por ello si tenemos más de 255 hosts será necesario utililzar un pool más grande que /24. En caso de que tengas IPv4 públicas suficientes puede ser útil para evitar un doble NAT IPv4.
La directiva prefix indica el prefijo que utilizará Tayga para reconocer los 32 bits de IPv4, es decir, cuando el destino IPv6 sea: 2001:db8:1:ffff::/96, Tayga tomará los ultimos 32 bits para reconocer que ese es el destino IPv4
5) Habilitar routing IPv6 e IPv4 en el servidor.
#echo "1" > /proc/sys/net/ipv6/conf/all/forwarding
#echo "1" > /proc/sys/net/ipv4/ip_forward
6) Creación y configuración de la interfaz nat64:
#tayga --mktun
#ip link set nat64 up
#ip addr add 192.168.124.107 dev nat64
#ip addr add 2001:db8:1::1 dev nat64
(estos comandos crean la interfaz nat64 con las direcciones ip 192.168.0.1/32 y 2001:db8:1::1/128, como dije anteriormente no importa que se solape con los IPs de eth1).
Para revisar:
root@aacosta-ThinkPad-E420:~# ifconfig nat64
nat64 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.1 P-t-P:192.168.0.1 Mask:255.255.255.255
inet6 addr: 2001:db8:1::1/128 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2393 errors:0 dropped:0 overruns:0 frame:0
TX packets:2395 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1615556 (1.6 MB) TX bytes:1614316 (1.6 MB)
7) Creación de rutas:
#ip route add 192.168.255.0/24 dev nat64
#ip route add 2001:db8:1:ffff::/96 dev nat64
8) Ejecutamos Tayga
#tayga -d
(el -d es opcional, solo es para tener más información)
PROBAR NAT64
a) Probamos que todo este bien (el ping debe ser satisfactorio):
root@aacosta-ThinkPad-E420:~# ping6 2001:db8:1:ffff::192.168.0.1
PING 2001:db8:1:ffff::192.168.0.1(2001:db8:1:ffff::c0a8:1) 56 data bytes
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=109 ttl=63 time=2.18 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=110 ttl=63 time=0.209 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=111 ttl=63 time=0.190 ms
64 bytes from 2001:db8:1:ffff::c0a8:1: icmp_seq=112 ttl=63 time=0.126 ms
b) Realizamos NAT con la interfaz IPv4 saliente (solo si el pool IPv4 en Tayga es privado):
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -A FORWARD -i eth0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A FORWARD -i nat64 -o eth0 -j ACCEPT
c) Ahora solo debes dirigirte a la máquina cliente y todo debe estar funcionando. Ejemplos de ping y trace:
[root@localhost ~]# traceroute6 www.algo.com -n
traceroute to algo-com-prod-elb-170663297.us-east-1.elb.amazonaws.com (2001:db8:1:ffff::36f3:7ac3) from 2001:db8:1:1::2, 30 hops max, 16 byte packets
1 2001:db8:1:1::1 1.224 ms 3.8 ms 0.352 ms
2 2001:db8:1:ffff::c0a8:ff01 0.787 ms 0.772 ms 0.268 ms
3 2001:db8:1:ffff::c0a8:1 0.76 ms 0.869 ms 0.278 ms
[root@localhost ~]# ping6 www.parmalat.com.ve -n
PING www.parmalat.com.ve(2001:db8:1:ffff::c82f:4f04) 56 data bytes
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=1 ttl=56 time=7.30 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=2 ttl=56 time=5.82 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=3 ttl=56 time=5.93 ms
64 bytes from 2001:db8:1:ffff::c82f:4f04: icmp_seq=4 ttl=56 time=8.38 ms
Puedes ver un estado de las asignaciones de Tayga en: /var/log/tayga/dynamic.map
Voila!... todo debe estar funcionado en este momento!
Mas información:
http://www.litech.org/tayga/
http://www.litech.org/tayga/README-0.9.2
http://kurser.iha.dk/eit/itifn/workshops/vne_workshop_2.html
http://ipvsix.me/?tag=tayga
Notas importantes:
- El DNS64 no funciona cuando la respuesta DNS tenga registros AAAA y A. En realidad no es una eroor porque se asume que el host tiene acceso IPv6 a Internet
- Es importante que el DNS64 y NAT64 compartan el mismo prefijo IPv6 (en el ejemplo de este post 2001:db8:1:ffff::/96.
- Durante todo el post describo el procedimiento utilizando la subred IPv6 2001:db8::/32. Favor notar que esta subred debe ser sustituida por sus redes respectivas (al igual que la información referente a IPv4).
- Pueden utilizar 2001:db8::/32 y va a funcionar igualmente pero sin acceso a destinos a IPv6
- El servidor DNS64 y NAT64 pueden ser diferentes equipos/máquinas
to get detailed information about Managed IT Services visit https://wetheitteam.com
viernes, 7 de diciembre de 2012
Solucion: Apache solo escucha sobre IPv6
Situación:
Apache solo funciona sobre IPv6
Troubleshoooting:
a) Para que escuche en IPv4:
- Editar el archivo /etc/apache2/ports.conf
- En la directiva Listen colocar por ejemplo:
Listen 192.168.1.10:80
Se pueden colocar varias directivas Listen. Tales como:
Listen 192.168.1.10:80
Listen 127.0.0.1:80
Para escuchar en todo IPv4 (cualquier IPv4 configurado en el server):
Listen 0.0.0.0:80
b) Para escuchar en IPv6:
- Editar el archivo /etc/apache2/ports.conf
- En la directiva Listen colocar <[direccionIPv6]:puerto>. Por ejemplo:
Listen [2001:db8::4]:80
Reiniciar apache..., por ejemplo: /etc/init.d/apache2 restart
Diagnóstico:
Para saber que servicios, a que direcciones IP escucha y que proceso esta asociado recomiendo utilizar el comando: netstat -pan
#netstat -pan | more
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 965/mysqld
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 1020/sendmail: MTA:
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 1162/perl
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 8478/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 816/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1020/sendmail: MTA:
tcp 0 0 192.168.1.10:22 192.168.1.2:57997 ESTABLISHED 19601/sshd: aacosta
tcp6 0 0 ::1:587 :::* LISTEN 1020/sendmail: MTA:
tcp6 0 0 :::80 :::* LISTEN 1134/apache2
tcp6 0 0 :::22 :::* LISTEN 816/sshd
En el extracto anterior la ultima linea indica que se está escuchando en todas las direcciones IPv6 (se puede comprender gracias a la culumna de la izquiera que indica tcp6 y luego en la cuarta columa indica ::22). El puerto está en estado listen por el proceso sshd y el pid 816
Para el primera linea se entiende que mysqld está escuchando en la dirección IPv4 127.0.0.1 en el puerto 3306 bajo el pid (process id) 965. Es decir, mysql no esta habilitado para escuchar conexiones de red (solo escucha localhost)
Mas información:
- http://serverfault.com/questions/332409/how-to-set-apache-virtualhost-to-work-with-ipv6- http://www.linuxweblog.com/blogs/sandip/20081027/forcing-apache-listen-ipv4
- http://www.linuxask.com/questions/limit-apache-only-listen-to-ipv4-address
Apache solo funciona sobre IPv6
Troubleshoooting:
a) Para que escuche en IPv4:
- Editar el archivo /etc/apache2/ports.conf
- En la directiva Listen colocar
Listen 192.168.1.10:80
Se pueden colocar varias directivas Listen. Tales como:
Listen 192.168.1.10:80
Listen 127.0.0.1:80
Para escuchar en todo IPv4 (cualquier IPv4 configurado en el server):
Listen 0.0.0.0:80
b) Para escuchar en IPv6:
- Editar el archivo /etc/apache2/ports.conf
- En la directiva Listen colocar <[direccionIPv6]:puerto>. Por ejemplo:
Listen [2001:db8::4]:80
Reiniciar apache..., por ejemplo: /etc/init.d/apache2 restart
Diagnóstico:
Para saber que servicios, a que direcciones IP escucha y que proceso esta asociado recomiendo utilizar el comando: netstat -pan
#netstat -pan | more
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 965/mysqld
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 1020/sendmail: MTA:
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 1162/perl
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 8478/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 816/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1020/sendmail: MTA:
tcp 0 0 192.168.1.10:22 192.168.1.2:57997 ESTABLISHED 19601/sshd: aacosta
tcp6 0 0 ::1:587 :::* LISTEN 1020/sendmail: MTA:
tcp6 0 0 :::80 :::* LISTEN 1134/apache2
tcp6 0 0 :::22 :::* LISTEN 816/sshd
En el extracto anterior la ultima linea indica que se está escuchando en todas las direcciones IPv6 (se puede comprender gracias a la culumna de la izquiera que indica tcp6 y luego en la cuarta columa indica ::22). El puerto está en estado listen por el proceso sshd y el pid 816
Para el primera linea se entiende que mysqld está escuchando en la dirección IPv4 127.0.0.1 en el puerto 3306 bajo el pid (process id) 965. Es decir, mysql no esta habilitado para escuchar conexiones de red (solo escucha localhost)
Mas información:
- http://serverfault.com/questions/332409/how-to-set-apache-virtualhost-to-work-with-ipv6- http://www.linuxweblog.com/blogs/sandip/20081027/forcing-apache-listen-ipv4
- http://www.linuxask.com/questions/limit-apache-only-listen-to-ipv4-address
miércoles, 5 de diciembre de 2012
Instalar Skype en Mandriva Linux 2012.0 (Cooker) 64 bits
Situación:
Deseo instalar Skype en Mandriva Cooker 2012 de 64 bits
Solución:
Tan fácil como (tomado de:
http://nafcom.blogspot.com/2012/06/installing-skype-for-linux-on-mandriva.html)
#urpmi.addmedia tmp_Main_32_release http://mirror.yandex.ru/mandriva/official/2011/i586/media/main/release
#urpmi.addmedia tmp_Main_32_updates http://mirror.yandex.ru/mandriva/official/2011/i586/media/main/updates
#urpmi.addmedia tmp_MIB_Basic_64 http://mib.pianetalinux.org/MIB/2011.0/64/basic/
#urpmi skype --allow-suggest --auto --force
#urpmi.removemedia tmp_Main_32_release
#urpmi.removemedia tmp_Main_32_updates
#urpmi.removemedia tmp_MIB_Basic_64
Importante:
No intenten el rpm de Suse de 64 bits ;-)
Mas información (post original):
http://nafcom.blogspot.com/2012/06/installing-skype-for-linux-on-mandriva.html
Deseo instalar Skype en Mandriva Cooker 2012 de 64 bits
Solución:
Tan fácil como (tomado de:
http://nafcom.blogspot.com/2012/06/installing-skype-for-linux-on-mandriva.html)
#urpmi.addmedia tmp_Main_32_release http://mirror.yandex.ru/mandriva/official/2011/i586/media/main/release
#urpmi.addmedia tmp_Main_32_updates http://mirror.yandex.ru/mandriva/official/2011/i586/media/main/updates
#urpmi.addmedia tmp_MIB_Basic_64 http://mib.pianetalinux.org/MIB/2011.0/64/basic/
#urpmi skype --allow-suggest --auto --force
#urpmi.removemedia tmp_Main_32_release
#urpmi.removemedia tmp_Main_32_updates
#urpmi.removemedia tmp_MIB_Basic_64
Importante:
No intenten el rpm de Suse de 64 bits ;-)
Mas información (post original):
http://nafcom.blogspot.com/2012/06/installing-skype-for-linux-on-mandriva.html
viernes, 28 de septiembre de 2012
Como forzar una consulta DNS a un determinado servidor
Introducción:
Este post es sumamente sencillo pero espero sea útil.
Hoy recibí por correo la pregunta de como forzar o realizar una consulta DNS sobre un determinado servidor.
Situacion:
Deseo que mi consulta DNS sea dirigida/apuntada/forzada sobre cierto servidor específico, las razones pueden ser variadas, desde curiosidad o troubleshooting. En el caso del día de hoy querían verificar que un DNS secundario estuviese copiando la zona correctamente.
Solución:
Existen varias soluciones:
1) La más fácil (pero poco elegante):
Configurar el/los DNS sobre los que se desea hacer la consulta sobre el host con el que voy a trabajar. Ejecutar por ejemplo un ping al nombre y verificar el IP que devuelve
2) Nslookup (funciona sobre windows y linux)
En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.8.8
aacosta@aacosta:~$ nslookup --> para entrar en un subshell
> server 8.8.8.8 ---->>> indico el DNS sobre quien va ir dirigida la consulta
Default server: 8.8.8.8
Address: 8.8.8.8#53
> blog.acostasite.com ----> indico el nombre que deseo consultar
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
blog.acostasite.com canonical name = cf-protected-blog.acostasite.com.
Name: cf-protected-blog.acostasite.com
Address: 108.162.198.198
Name: cf-protected-blog.acostasite.com
Address: 108.162.195.100
En el ejemplo anterior hay que cambiar "8.8.8.8" por la dirección IP a quien deseamos enviar la consulta
3) Dig (Linux)
En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.4.4
aacosta@aacosta-ThinkPad-E420:~$ dig @8.8.4.4 blog.acostasite.com
; <<>> DiG 9.8.1-P1 <<>> @8.8.4.4 blog.acostasite.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 17584="17584" br="br" id:="id:" noerror="noerror" opcode:="opcode:" query="query" status:="status:">;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;blog.acostasite.com. IN A
;; ANSWER SECTION:
blog.acostasite.com. 0 IN CNAME cf-protected-blog.acostasite.com.
cf-protected-blog.acostasite.com. 117 IN A 108.162.198.198
cf-protected-blog.acostasite.com. 117 IN A 108.162.195.100
;; Query time: 67 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Fri Sep 28 09:44:34 2012
;; MSG SIZE rcvd: 101->
En el ejemplo anterior hay que cambiar "8.8.4.4" por la dirección IP a quien deseamos enviar la consulta
El mismo
Espero sea útil,
Este post es sumamente sencillo pero espero sea útil.
Hoy recibí por correo la pregunta de como forzar o realizar una consulta DNS sobre un determinado servidor.
Situacion:
Deseo que mi consulta DNS sea dirigida/apuntada/forzada sobre cierto servidor específico, las razones pueden ser variadas, desde curiosidad o troubleshooting. En el caso del día de hoy querían verificar que un DNS secundario estuviese copiando la zona correctamente.
Solución:
Existen varias soluciones:
1) La más fácil (pero poco elegante):
Configurar el/los DNS sobre los que se desea hacer la consulta sobre el host con el que voy a trabajar. Ejecutar por ejemplo un ping al nombre y verificar el IP que devuelve
2) Nslookup (funciona sobre windows y linux)
En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.8.8
aacosta@aacosta:~$ nslookup --> para entrar en un subshell
> server 8.8.8.8 ---->>> indico el DNS sobre quien va ir dirigida la consulta
Default server: 8.8.8.8
Address: 8.8.8.8#53
> blog.acostasite.com ----> indico el nombre que deseo consultar
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
blog.acostasite.com canonical name = cf-protected-blog.acostasite.com.
Name: cf-protected-blog.acostasite.com
Address: 108.162.198.198
Name: cf-protected-blog.acostasite.com
Address: 108.162.195.100
En el ejemplo anterior hay que cambiar "8.8.8.8" por la dirección IP a quien deseamos enviar la consulta
3) Dig (Linux)
En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.4.4
aacosta@aacosta-ThinkPad-E420:~$ dig @8.8.4.4 blog.acostasite.com
; <<>> DiG 9.8.1-P1 <<>> @8.8.4.4 blog.acostasite.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 17584="17584" br="br" id:="id:" noerror="noerror" opcode:="opcode:" query="query" status:="status:">;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;blog.acostasite.com. IN A
;; ANSWER SECTION:
blog.acostasite.com. 0 IN CNAME cf-protected-blog.acostasite.com.
cf-protected-blog.acostasite.com. 117 IN A 108.162.198.198
cf-protected-blog.acostasite.com. 117 IN A 108.162.195.100
;; Query time: 67 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Fri Sep 28 09:44:34 2012
;; MSG SIZE rcvd: 101->
En el ejemplo anterior hay que cambiar "8.8.4.4" por la dirección IP a quien deseamos enviar la consulta
El mismo
Espero sea útil,
jueves, 6 de septiembre de 2012
Tunel GRE entre Cisco y Linux + NAT
Introducción:
En el siguiente escenario se plantean dos oficinas conectadas mediante un tunel GRE. En la oficina "A" existe un router Cisco y en la oficina "B" un servidor Linux.
Objetivo:
Que la oficina "A" (la red con el router Cisco) salga a Internet (nateada) con el IP de la red de la oficina "B" (red con el servidor Linux)
Topologia:
Lado Cisco (Oficina A):
LAN: 192.168.56.6
WAN: 98.76.54.32
TUNNEL 0: 192.168.56.6
Lado Linux (Oficina B):
LAN: 192.168.1.200/24 (gre_if0)
WAN: 123.45.67.89 (Interfaz: venet0:0)
Pasos (lado equipo Linux):
1) Levantar el modulo GRE
#modprobe ip_gre
2) Crear la interfaz del tunel (llamada gre_if0). Puede tener cualquier nombre:
#ip tunnel add gre_if0 mode gre remote 98.76.54.32 local 123.45.67.89 ttl 255
3) Asignarle un IP a la interfaz recien creada (gre_if0)
#ip addr add 192.168.1.200/24 dev gre_if0
4) Levantar la interfaz del tunel (por defecto viene shutdown)
#ip link set gre_if0 up (Levantar la interfaz gre_if0)
5) Enrutar por el tunel aquellas rutas que sean necesarias, por ejemplo:
#route add -net 192.168.56.6 netmask 255.255.255.255 dev gre_if0
Pasos (lado Cisco)
!Creación de la interfaz tunel
interface Tunnel0
ip unnumbered FastEthernet0/0
tunnel source Vlan1
tunnel destination 123.45.67.89
!Configuración de la interfaz LAN
interface FastEthernet0/0
description **Conexion LAN**
ip address 192.168.56.6 255.255.255.252
duplex auto
speed auto
!La interfaz VLAN1 es la interfaz WAN
interface Vlan1
description **Conexion WAN**
ip address 98.76.54.32 255.255.255.248
!Hacer las rutas necesarias en el router
!para alcanzar la LAN de la oficina B
ip route 192.168.1.200 255.255.255.255 Tunnel0
PARA EL NAT (LADO LINUX):
1) Permitir routing en el equipo
# echo 1 > /proc/sys/net/ipv4/ip_forward
2) Que el servidor Linux sepa alcanzar la LAN de Oficina A
#route add -net 192.168.56.0 netmask 255.255.255.0 dev gre_if0
3) Realizar el NAT
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.45.67.89
Notese que hubo que hacer Source NAT (SNAT). La explicación del motivo está indicada en el post: "Linux iptables, solucion al error: Warning: wierd character in interface"
Espero te sea útil,
En el siguiente escenario se plantean dos oficinas conectadas mediante un tunel GRE. En la oficina "A" existe un router Cisco y en la oficina "B" un servidor Linux.
Objetivo:
Que la oficina "A" (la red con el router Cisco) salga a Internet (nateada) con el IP de la red de la oficina "B" (red con el servidor Linux)
Topologia:
Lado Cisco (Oficina A):
LAN: 192.168.56.6
WAN: 98.76.54.32
TUNNEL 0: 192.168.56.6
Lado Linux (Oficina B):
LAN: 192.168.1.200/24 (gre_if0)
WAN: 123.45.67.89 (Interfaz: venet0:0)
Pasos (lado equipo Linux):
1) Levantar el modulo GRE
#modprobe ip_gre
2) Crear la interfaz del tunel (llamada gre_if0). Puede tener cualquier nombre:
#ip tunnel add gre_if0 mode gre remote 98.76.54.32 local 123.45.67.89 ttl 255
3) Asignarle un IP a la interfaz recien creada (gre_if0)
#ip addr add 192.168.1.200/24 dev gre_if0
4) Levantar la interfaz del tunel (por defecto viene shutdown)
#ip link set gre_if0 up (Levantar la interfaz gre_if0)
5) Enrutar por el tunel aquellas rutas que sean necesarias, por ejemplo:
#route add -net 192.168.56.6 netmask 255.255.255.255 dev gre_if0
Pasos (lado Cisco)
!Creación de la interfaz tunel
interface Tunnel0
ip unnumbered FastEthernet0/0
tunnel source Vlan1
tunnel destination 123.45.67.89
!Configuración de la interfaz LAN
interface FastEthernet0/0
description **Conexion LAN**
ip address 192.168.56.6 255.255.255.252
duplex auto
speed auto
!La interfaz VLAN1 es la interfaz WAN
interface Vlan1
description **Conexion WAN**
ip address 98.76.54.32 255.255.255.248
!Hacer las rutas necesarias en el router
!para alcanzar la LAN de la oficina B
ip route 192.168.1.200 255.255.255.255 Tunnel0
PARA EL NAT (LADO LINUX):
1) Permitir routing en el equipo
# echo 1 > /proc/sys/net/ipv4/ip_forward
2) Que el servidor Linux sepa alcanzar la LAN de Oficina A
#route add -net 192.168.56.0 netmask 255.255.255.0 dev gre_if0
3) Realizar el NAT
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.45.67.89
Notese que hubo que hacer Source NAT (SNAT). La explicación del motivo está indicada en el post: "Linux iptables, solucion al error: Warning: wierd character in interface"
Espero te sea útil,
domingo, 2 de septiembre de 2012
Linux iptables, solucion al error: Warning: wierd character in interface
Introducción:
En Linux cuando intentamos realizar un NAT con alguna interfaz que posea el caracter ":" recibimos el error: Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
Por ejemplo en el siguiente escenario:
#iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE
Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
Explicación:
Luego de una investigación en muchas páginas en Internet llegué a la conclusión que no es posible realizar el NAT con una "subinterfaz" (interfaz secundaria, IP secundario, etc) con Linux que posea ":" , durante mi busqueda conseguí que es un problema del manejo de los ARP en dicha interfaz, sin embargo no hay que preocuparse, existe una alternativa y es la que voy a plantear en este post.
Solución:
La solución es bastante sencilla y al menos funciona en todos los escenarios donde la dirección IP con la que deseamos natear es estática. La misma se conoce como SNAT (Source NAT) y se utiliza como IP saliente el IP secundario de la interfaza utilizar (ej. eth0:0). La diferencia principal es que hay que indicar cual es la red a la cual deseamos hacer NAT, esto no debe ser ningún inconveniente porque seguramente sabremos esta información.
En definitiva la solución es realizar el NAT con el IP "saliente" en vez de la interfaz saliente e indicando la red a la cual deseamos realizar el NAT.
Comandos:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.4.5.6
Con lo anterior estaremos nateando la red 192.168.56.0/24 con la dirección IP 123.4.5.6, es decir, cualquier equipo con dirección IP fuente en el rango 192.168.56.0/24 se verá en Internet con 123.4.5.6. En ningún momento hace referencia a "eth0:0"
Espero les sea útil,
Saludos,
En Linux cuando intentamos realizar un NAT con alguna interfaz que posea el caracter ":" recibimos el error: Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
Por ejemplo en el siguiente escenario:
#iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE
Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
Explicación:
Luego de una investigación en muchas páginas en Internet llegué a la conclusión que no es posible realizar el NAT con una "subinterfaz" (interfaz secundaria, IP secundario, etc) con Linux que posea ":" , durante mi busqueda conseguí que es un problema del manejo de los ARP en dicha interfaz, sin embargo no hay que preocuparse, existe una alternativa y es la que voy a plantear en este post.
Solución:
La solución es bastante sencilla y al menos funciona en todos los escenarios donde la dirección IP con la que deseamos natear es estática. La misma se conoce como SNAT (Source NAT) y se utiliza como IP saliente el IP secundario de la interfaza utilizar (ej. eth0:0). La diferencia principal es que hay que indicar cual es la red a la cual deseamos hacer NAT, esto no debe ser ningún inconveniente porque seguramente sabremos esta información.
En definitiva la solución es realizar el NAT con el IP "saliente" en vez de la interfaz saliente e indicando la red a la cual deseamos realizar el NAT.
Comandos:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.4.5.6
Con lo anterior estaremos nateando la red 192.168.56.0/24 con la dirección IP 123.4.5.6, es decir, cualquier equipo con dirección IP fuente en el rango 192.168.56.0/24 se verá en Internet con 123.4.5.6. En ningún momento hace referencia a "eth0:0"
Espero les sea útil,
Saludos,
Deshabilitar/bajar iptables en Linux
Introduccion:
En algunas ocasiones es necesario "bajar" o deshabilitar iptables en nuestro Linux, el procedimiento depende de la distribución de Linux que estes utilizando. Aquí te dejo los más conocidos.
1) Procedimiento si estas utilizando Redhat, Fedora core, Mandriva/Mandrake o Centos, solo debes ejecutar lo siguiente:
# service iptables save
# service iptables stop
# chkconfig iptables off
o
# /etc/init.d/iptables stop
2) Procedimiento para deshabilitar iptables en Debian o Ubuntu
a) Crea un script llamado fw.stop con el siguiente contenido:
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
b) Dale permiso de ejecución a dicho script:
# chmod +x /root/fw.stop
o
# chmod 755 fw.stop
c) Puedes ejecutar el scritp con el siguiente comando:
# fw.stop
Mas info en:
http://sources68.com/linux-disable-remove-the-iptables-firewall-1fa67761.html
En algunas ocasiones es necesario "bajar" o deshabilitar iptables en nuestro Linux, el procedimiento depende de la distribución de Linux que estes utilizando. Aquí te dejo los más conocidos.
1) Procedimiento si estas utilizando Redhat, Fedora core, Mandriva/Mandrake o Centos, solo debes ejecutar lo siguiente:
# service iptables save
# service iptables stop
# chkconfig iptables off
o
# /etc/init.d/iptables stop
2) Procedimiento para deshabilitar iptables en Debian o Ubuntu
a) Crea un script llamado fw.stop con el siguiente contenido:
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
b) Dale permiso de ejecución a dicho script:
# chmod +x /root/fw.stop
o
# chmod 755 fw.stop
c) Puedes ejecutar el scritp con el siguiente comando:
# fw.stop
Mas info en:
http://sources68.com/linux-disable-remove-the-iptables-firewall-1fa67761.html
jueves, 9 de agosto de 2012
Extraer el audio de un archivo mp4
Objetivo:
Deseo extraer el audio de un video. Es decir, crear un archivo mp3 con el audio de un archivo mp4.
Pasos:
1) Primero es necesario instalar las siguientes aplicaciones: faad y lame
# aptitude install faad lame
2) Luego solo hay que indicar el archivo origen (el archivo .mp4) y el archivo de salida (.mp3)
#faad -o - archivoorigen.mp4 | lame - archivodestino.mp3
Listo!..., ahora solo hay que escuchar el archivo .mp3
Espero haya sido útil,
Deseo extraer el audio de un video. Es decir, crear un archivo mp3 con el audio de un archivo mp4.
Pasos:
1) Primero es necesario instalar las siguientes aplicaciones: faad y lame
# aptitude install faad lame
2) Luego solo hay que indicar el archivo origen (el archivo .mp4) y el archivo de salida (.mp3)
#faad -o - archivoorigen.mp4 | lame - archivodestino.mp3
Listo!..., ahora solo hay que escuchar el archivo .mp3
Espero haya sido útil,
lunes, 6 de agosto de 2012
Error 1017 en Cacti. MySQL. Graficas en blanco
Error:
07/04/2012 05:37:49 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'1017', SQL:"SELECT count(*) FROM polle
r_time WHERE poller_id=0 AND end_time>'0000-00-00 00:00:00'"
07/04/2012 05:38:34 PM - CMDPHP: Poller[0] ERROR: SQL Cell Failed!, Error:'1017', SQL:"SELECT count(*) FROM polle
r_time WHERE end_time='0000-00-00 00:00:00'"
Procedimiento:
En el archivo cacti.log se ve el error anterior. El mismo indica que no consigue (o no puede trabajar) con tabla poller_output de mysql.
En este sentido, hay tres soluciones:
1) Reparar la tabla de mysql con el script php que trae cacti
#php $PATH-TO-CACTI/cli/repair_database.php
2) Reparar la tabla con comandos mysql:
#mysql> REPAIR TABLE poller_output;
Si no sabes la información de usuario, clave y DB del cacti, la misma la puedes conseguir en:
$PATH-TO-CACTI/include/config.php
3) Borrar la tabla y volverla a hacer (esta solución en lo personal a pesar de ser agresiva funciona perfectamente y no pierdes el historico de Cacti). Para ello entra en el CLI de mysql y ejecuta:
--
-- Table structure for table `poller_output`
--
DROP TABLE IF EXISTS `poller_output`;
CREATE TABLE `poller_output` (
`local_data_id` mediumint(8) unsigned NOT NULL default '0',
`rrd_name` varchar(19) NOT NULL default '',
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`output` text NOT NULL,
PRIMARY KEY (`local_data_id`,`rrd_name`,`time`)
) TYPE=MyISAM;
--
-- Dumping data for table `poller_output`
--
LOCK TABLES `poller_output` WRITE;
/*!40000 ALTER TABLE `poller_output` DISABLE KEYS */;
/*!40000 ALTER TABLE `poller_output` ENABLE KEYS */;
UNLOCK TABLES;
Listo!, luego puedes esperar a que el poller se ejecute y a los 15 minutos seguramente tendrás algo en tus gráficas. Si desees forzar el poller el comando es el siguiente:
#/usr/bin/php -q /var/www/miserver-cacti/poller.php --force
Espero sea útil,
domingo, 15 de julio de 2012
Clave por defecto de Ubuntu Server
Situacion:
Luego de instalar Ubuntu Server (12.04 LTS) no puedo entrar como root ni hacer un "su" al usuario. El resto de los usuarios funcionan bien
Explicación:
Luego de la instalación, por defecto Ubuntu viene con el usuario root bloqueado, esto se puede verificar en /etc/shadow y ver el signo de exclamación (!) en el usuario root
Solución:
Existen muchas maneras de solucionar la situación. La más sencilla y funcional:
$sudo -i
#passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Luego de esto el usuario root quedará habilitado
Suerte!
Luego de instalar Ubuntu Server (12.04 LTS) no puedo entrar como root ni hacer un "su" al usuario. El resto de los usuarios funcionan bien
Explicación:
Luego de la instalación, por defecto Ubuntu viene con el usuario root bloqueado, esto se puede verificar en /etc/shadow y ver el signo de exclamación (!) en el usuario root
Solución:
Existen muchas maneras de solucionar la situación. La más sencilla y funcional:
$sudo -i
#passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Luego de esto el usuario root quedará habilitado
Suerte!
viernes, 13 de julio de 2012
Instalar Aircrack en Ubuntu 12.04
Hola,
Como quizás se han dado cuenta aircrack-ng fue quitado de los repositorios de Ubuntu 12.04.
La buena noticia es que la instalación es bastante sencilla, te dejo los pasos:
1) apt-get install build-essential
2) apt-get install libssl-dev
3) wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
4) tar -zxvf aircrack-ng-1.1.tar.gz
5) cd aircrack-ng-1.1
6) Editar el archivo common.mak y buscar la linea con el siguiente texto:
CFLAGS ?= -g -W -Wall -Werror -O3
Borra "-Werror", es decir, la linea quedaría así:
CFLAGS ?= -g -W -Wall -O3
7) make
Más información:
- http://www.riyazwalikar.com/2010/12/installing-aircrack-ng-on-ubuntu-1204.html
Como quizás se han dado cuenta aircrack-ng fue quitado de los repositorios de Ubuntu 12.04.
La buena noticia es que la instalación es bastante sencilla, te dejo los pasos:
1) apt-get install build-essential
2) apt-get install libssl-dev
3) wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
4) tar -zxvf aircrack-ng-1.1.tar.gz
5) cd aircrack-ng-1.1
6) Editar el archivo common.mak y buscar la linea con el siguiente texto:
CFLAGS ?= -g -W -Wall -Werror -O3
Borra "-Werror", es decir, la linea quedaría así:
CFLAGS ?= -g -W -Wall -O3
7) make
Más información:
- http://www.riyazwalikar.com/2010/12/installing-aircrack-ng-on-ubuntu-1204.html
miércoles, 11 de julio de 2012
Script ejemplo en PHP que entra a un equipo Cisco y ejecuta un "show log"
Necesidad:
Tener un script php que entre en un Router o LAN Switch Cisco y que ejecute ciertos comandos sobre el mismo. Lo cierto es que es un Script muy útil y sencillo.
Importante: En este ejemplo para ser utilizado desde el shell.
Solución:
En el presente post solo deseo indicar el script que he utilizado anteriormente
Script:
El presente script entra en el host "192.168.1.6" con el usuario "blogale" y la clave "miclave", luego ejecuta el comando "term len 0" (importante si el log tiene varias paginas) y posteriormente ejecuta el comando "sh log"
#!/usr/bin/php
require_once "PHPTelnet.php";
$telnet = new PHPTelnet();
$telnet->show_connect_error=0;
// if the first argument to Connect is blank,
// PHPTelnet will connect to the local host via 127.0.0.1
$result = $telnet->Connect('192.168.1.6','blogale','miclave');
switch ($result) {
case 0:
$telnet->DoCommand('term len 0', $result);
// NOTE: $result may contain newlines
echo $result;
$telnet->DoCommand('sh log', $result);
echo $result;
// say Disconnect(0); to break the connection without explicitly logging out
$telnet->Disconnect();
break;
case 1:
echo '[PHP Telnet] Connect failed: Unable to open network connection';
break;
case 2:
echo '[PHP Telnet] Connect failed: Unknown host';
break;
case 3:
echo '[PHP Telnet] Connect failed: Login failed';
break;
case 4:
echo '[PHP Telnet] Connect failed: Your PHP version does not support PHP Telnet';
break;
}
?>
Ejecutando el script:
1) Darle permiso de ejecución, por ejemplo: chmod 755 cisco.php
2) ./cisco.php
Importante:
- Debes tener PHPTelnet.php
- Debes tener php-cli y otras librerias (en Ubuntu puedes instalar la mayoría necesaria con: aptitude install php5-dev php5-cli php-pear build-essential openssl-dev zlib1g-dev php-pear)
Mas información (y link para bajar phptelnet.php):
jueves, 5 de julio de 2012
Linux con soporte CDP
El día de hoy tuve una necesidad donde necesitaba que Linux hablara CDP para realizar unas pruebas con Cisco, en fin, es bastante fácil y por ello lo dejo aquí:
Objetivo:
Que linux hablé/soporte CDP
Pasos:
1) Bajar el paquete CDP: wget http://gpl.internetconnection.net/files/cdp-tools.tar.gz
2) Compilar el paquete:
Tuve que bajar cierta cantidad de paquetes para poder compilar el mismo, les dejo lo que tuve que bajar:
3) Ahora si podemos compilar:
#make
4) Listo!. Ejecutar: ./cdp-send eth0
Revisar que todo funcione:
1) Por ejemplo en un LAN Switch Cisco:
SW1#sh cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater
Device ID Local Intrfce Holdtme Capability Platform Port ID
ubuntu Fas 0/30 127 H x86_64 eth0
2) SW1-PQC-OESTE#sh cdp neighbors detail
-------------------------
Device ID: ubuntu
Entry address(es):
IP address: 192.N.1X.86
Platform: x86_64, Capabilities: Host
Interface: FastEthernet0/30, Port ID (outgoing port): eth0
Holdtime : 141 sec
Version :
Linux 3.2.0-24-generic
advertisement version: 2
Management address(es):
Más información:
- http://openmaniak.com/cdp.php
Espero les sea útil!!
Objetivo:
Que linux hablé/soporte CDP
Pasos:
1) Bajar el paquete CDP: wget http://gpl.internetconnection.net/files/cdp-tools.tar.gz
2) Compilar el paquete:
Tuve que bajar cierta cantidad de paquetes para poder compilar el mismo, les dejo lo que tuve que bajar:
#apt-get install build-essential
#apt-get install libnet0-dev
#aptitude install libpcap0.8-dev
#aptitude install libnet1-dev
3) Ahora si podemos compilar:
#make
4) Listo!. Ejecutar: ./cdp-send eth0
Revisar que todo funcione:
1) Por ejemplo en un LAN Switch Cisco:
SW1#sh cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater
Device ID Local Intrfce Holdtme Capability Platform Port ID
ubuntu Fas 0/30 127 H x86_64 eth0
2) SW1-PQC-OESTE#sh cdp neighbors detail
-------------------------
Device ID: ubuntu
Entry address(es):
IP address: 192.N.1X.86
Platform: x86_64, Capabilities: Host
Interface: FastEthernet0/30, Port ID (outgoing port): eth0
Holdtime : 141 sec
Version :
Linux 3.2.0-24-generic
advertisement version: 2
Management address(es):
También se puede colocar la interfaz a escuchar CDPs:
# ./cdp-listen eth0
# Interface: eth0
# Hostname: SEP0004f2113d06
# Address: 10.0.0.65
#
# TimeToLive: 180
# Capabilities: L3TXRX(host) unknown(00000090)
#
# Networks:
Más información:
- http://openmaniak.com/cdp.php
Espero les sea útil!!
martes, 26 de junio de 2012
Arrancar/bootear Mandriva sin X
Mini historia:
Aunque parezca mentira hacer arrancar Mandriva sin interfaz gráfica (X) ha sido una verdadera pesadilla.
Quizás algunos de ustedes agradezcan este post :) en fin solo deseo que sea útil. Allí va:
Objetivo:
Arrancar Mandriva Linux sin interfaz gráfica (para ahorrar memoria, CPU, seguridad, no lo necesito o sencillamente no quiero X)
Intentos infructuosos:
Luego de muchos intentos donde se incluye la teoria de colocar Unix en runlevel 3 para multiuser en /etc/inittab, bueno, todo eso no funciona.
Entre otras cosas también intenté link al estilo:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Intenté también:
chkconfig --level 234567 dm off
Y muchas otras cosas que me hicieron perder el tiempo
Solución definitiva:
La solución ni siquiera fue por el OS, sino por el GRUB!, la solución es indicar en menu.lst al final de la linea el runlevel con el que deseas arrancar.
Por ejemplo:
#more /boot/grup/menu.lst
title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=c578d361-dc13-4821-ba42-e
f01abc2c55c nokmsboot logo.nologo quiet resume=UUID=48a9d362-4b8c-40da-a0a4-775
c6072f2ac splash=silent vga=788 3
initrd (hd0,0)/boot/initrd.img
Noten el "3" al final de la linea.
Luego reinician el equipo y listo!!
Importante:
Es posible que deben utilizar la combinación ALT+F2, ALT+F3, etc para moverse entre los vty, de igual manera recordemos que runleven 3 es multiuser y networking.
Suerte!,
Aunque parezca mentira hacer arrancar Mandriva sin interfaz gráfica (X) ha sido una verdadera pesadilla.
Quizás algunos de ustedes agradezcan este post :) en fin solo deseo que sea útil. Allí va:
Objetivo:
Arrancar Mandriva Linux sin interfaz gráfica (para ahorrar memoria, CPU, seguridad, no lo necesito o sencillamente no quiero X)
Intentos infructuosos:
Luego de muchos intentos donde se incluye la teoria de colocar Unix en runlevel 3 para multiuser en /etc/inittab, bueno, todo eso no funciona.
Entre otras cosas también intenté link al estilo:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
(tampoco funciona)
Intenté también:
chkconfig --level 234567 dm off
(tampoco funciona)
Y muchas otras cosas que me hicieron perder el tiempo
Solución definitiva:
La solución ni siquiera fue por el OS, sino por el GRUB!, la solución es indicar en menu.lst al final de la linea el runlevel con el que deseas arrancar.
Por ejemplo:
#more /boot/grup/menu.lst
title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=c578d361-dc13-4821-ba42-e
f01abc2c55c nokmsboot logo.nologo quiet resume=UUID=48a9d362-4b8c-40da-a0a4-775
c6072f2ac splash=silent vga=788 3
initrd (hd0,0)/boot/initrd.img
Noten el "3" al final de la linea.
Luego reinician el equipo y listo!!
Importante:
Es posible que deben utilizar la combinación ALT+F2, ALT+F3, etc para moverse entre los vty, de igual manera recordemos que runleven 3 es multiuser y networking.
Suerte!,
lunes, 18 de junio de 2012
Cliente SSH dura varios segundos para conectarse
Otro post sumamente rápido (pero útil):
Caso:
Cuando intento conectarme a un servidor SSH (Linux server) el mismo dura varios segundos antes de pedir login/password.
Esto es muy comun en servidores que no tienen acceso a Internet o DNSs mal configurados.
Ocurre que cuando intentamos conectarnos al SSH Server intenta hacer una solicitud de DNS reverso para IP origen (de donde nos intentamos conectar).
Por ejemplo, si quiero conectarme desde el equipo 192.168.1.2 al servidor SSH ubicado en el IP 10.1.1.21, este último, durante la conexión intentará buscar el reverso del IP 192.168.1.2. El tiempo que vemos antes de obtener "Login" es precisamente el timeout del SSH Server durante la operación DNS.
Solución:
La solución es sumamente sencilla, existen dos manera:
1) Si siempre nos vamos a conectar desde la misma dirección IP (o muy pocas diferentes):
En el servidor editar el archivo /etc/hosts y colocar los IPs de origen desde donde me conectaré. ejemplo:
192.168.1.2 blog.acostasite.com aacostaPC
192.168.1.3 www.lomejordelemail.com miPC
2) La solución alternativa es colocar al final del archivo /etc/ssh/sshd_config
UseDNS no
Caso:
Cuando intento conectarme a un servidor SSH (Linux server) el mismo dura varios segundos antes de pedir login/password.
Esto es muy comun en servidores que no tienen acceso a Internet o DNSs mal configurados.
Ocurre que cuando intentamos conectarnos al SSH Server intenta hacer una solicitud de DNS reverso para IP origen (de donde nos intentamos conectar).
Por ejemplo, si quiero conectarme desde el equipo 192.168.1.2 al servidor SSH ubicado en el IP 10.1.1.21, este último, durante la conexión intentará buscar el reverso del IP 192.168.1.2. El tiempo que vemos antes de obtener "Login" es precisamente el timeout del SSH Server durante la operación DNS.
Solución:
La solución es sumamente sencilla, existen dos manera:
1) Si siempre nos vamos a conectar desde la misma dirección IP (o muy pocas diferentes):
En el servidor editar el archivo /etc/hosts y colocar los IPs de origen desde donde me conectaré. ejemplo:
192.168.1.2 blog.acostasite.com aacostaPC
192.168.1.3 www.lomejordelemail.com miPC
2) La solución alternativa es colocar al final del archivo /etc/ssh/sshd_config
UseDNS no
Más información:
Espero haya sido útil.
miércoles, 13 de junio de 2012
Ajustar/Configurar la hora en Linux
Hola,
Este es un post sumamente rápido
Situación:
- Deseo ajustar la hora de mi equipo Linux (en mi caso Ubuntu)
Dos soluciones:
a) Manera elegante:
- Es necesario cambiar el time zone del equipo y ajustar via ntp
b) Manera no elegante:
- Forzar la hora usando el comando date
a) Procedimiento elegante:
#cd /etc (colocarse en el directorio etc)
#mv timezone timezone.old (un backup, porsia)
#ln -sf /usr/share/zoneinfo/America/Caracas /etc/localtime (link simbolico al timezone de Caracas en mi caso)
# ntpdate 1.pool.ntp.org (ajustar la hora con un ntp server)
13 Jun 10:51:15 ntpdate[5845]: step time server 200.3.168.192 offset -7459.178215 sec
b) Procedimiento no elegante:
Colocar la hora y fecha: 6 de Noviembre de 2011 a las 20:25 con 00 segundos:
#date 110620252011.00
Revisar:
#date
Este es un post sumamente rápido
Situación:
- Deseo ajustar la hora de mi equipo Linux (en mi caso Ubuntu)
Dos soluciones:
a) Manera elegante:
- Es necesario cambiar el time zone del equipo y ajustar via ntp
- Forzar la hora usando el comando date
a) Procedimiento elegante:
#cd /etc (colocarse en el directorio etc)
#mv timezone timezone.old (un backup, porsia)
#ln -sf /usr/share/zoneinfo/America/Caracas /etc/localtime (link simbolico al timezone de Caracas en mi caso)
# ntpdate 1.pool.ntp.org (ajustar la hora con un ntp server)
13 Jun 10:51:15 ntpdate[5845]: step time server 200.3.168.192 offset -7459.178215 sec
b) Procedimiento no elegante:
Colocar la hora y fecha: 6 de Noviembre de 2011 a las 20:25 con 00 segundos:
#date 110620252011.00
Revisar:
#date
Espero sea útil,
Suscribirse a:
Entradas (Atom)
Una mejora práctica en el Transporte DNS sobre UDP en IPv6
Por Hugo Salgado y Alejandro Acosta Introducción y planteamiento del problema En el presente documento queremos discutir sobre un draft (bor...
-
Debido al crecimiento moderado que ha tenido el presente blog se me ocurrió añadir/integrar las estadisticas de google analytics a mi blog. ...
-
Introduccion: En algunas ocasiones es necesario "bajar" o deshabilitar iptables en nuestro Linux, el procedimiento depende de...
-
Saludos, Lo primero que debemos de hacer para quitar el stacking entre los switches es desconectar los cables Stack que los unen.... Es buen...