weblog d’un abbe

20090131

This posting may harm your computer

Filed under: Experiences, Fun — Tags: , , — abbe @ 2036

Google goes mad

20081016

Happy mDNSing (Avahi) over IPv6 on FreeBSD

Filed under: Yippee!! — Tags: , , , , , , — abbe @ 0151

Thanks to bz, the issue is now fixed.

20080910

Google IPv6 endpoint in Europe

Filed under: Experiences, Fun — Tags: , — abbe @ 0851
┌─(abbe@chateau:pts/8)───────────────────────────────────────────────────────────────────────(~)─┐
└─(08:41:%)── sudo traceroute -6 -I -n 2001:4860:0:2001::68                        ──(Wed,Sep10)─┘
Password: 
traceroute to 2001:4860:0:2001::68 (2001:4860:0:2001::68), 30 hops max, 40 byte packets
 1  2001:470:1f08:3b7::1  255.608 ms  258.492 ms  261.419 ms
 2  2001:470:0:67::1  263.345 ms  266.538 ms  269.720 ms
 3  2001:470:0:3f::2  282.060 ms  283.483 ms  285.925 ms
 4  * * *
 5  * * *
 6  2001:4860:0:2001::68  556.875 ms  503.697 ms  510.901 ms
┌─(abbe@chateau:pts/8)───────────────────────────────────────────────────────────────────────(~)─┐
└─(08:41:%)── sudo traceroute -6 -I -n 2001:4860:0:1001::68                        ──(Wed,Sep10)─┘
traceroute to 2001:4860:0:1001::68 (2001:4860:0:1001::68), 30 hops max, 40 byte packets
 1  2001:470:1f08:3b7::1  256.051 ms  258.644 ms  261.619 ms
 2  2001:470:0:67::1  264.279 ms  266.755 ms  269.970 ms
 3  2001:470:0:3f::2  281.020 ms  283.444 ms  286.494 ms
 4  * * *
 5  * * *
 6  2001:4860:0:1001::68  558.181 ms  516.731 ms  511.211 ms

2001:4860:0:1001::68 points to the European cluster (in Amsterdam, as mentioned by berniv6 on #ipv6 in ipv6.chat.freenode.net) of ipv6.google.com, whereas 2001:4860:0:2001::68 (ipv6.google.com) is known to be located in US. My tunnel remote endpoint (2001:470:1f08:3b7::1|216.66.80.26) is located in London, UK. Notice the RTT ;)

20080905

HE.NET IPv6 Certified

Filed under: Yippee!! — Tags: , , — abbe @ 1025

Certificate Image

20080901

Setup IPv6 tunnels from Hurricane Electric

Filed under: Free OS, Fun, Hacking — Tags: , , , — abbe @ 1259

The tunnel setup script:

#!/bin/sh
# Author: Ashish Shukla <gmail.com!wahjava>
# Description: Creates and initializes an IPv6 tunnel from the parameters given in
#              the file name stored in $TUNNEL_CONFIG variable
# License: BSD License
# OS: FreeBSD, GNU/Linux
# Tested on: FreeBSD 7.0-RELEASE-p3
#            Gentoo GNU/Linux 2008.0
# TODO: Port the script to other POSIX compliant OSs
#
# Copyright 2008. Ashish Shukla
#
# CREDITS: Martin J. Levy at HE.net, for the motivation.

OS=$(uname)
WHICH=/usr/bin/which
SCRIPT_NAME=`basename $0`

# The place where tunnel configuration file is stored
TUNNEL_CONFIG=${HOME}/.tunnelconfig

[ -f ${TUNNEL_CONFIG} ] && . ${TUNNEL_CONFIG}

FindLocalEndpoint() {
	if [ ${OS} = Linux ]; then
		if [ ! -z "${IP}" ] ; then
			INET_LOCAL_ENDPOINT=`${IP} addr show |awk "/^[[:space:]]*inet .*global ${IFACE}\$/ { print \\$2 }" |sed -e 's|/[[:digit:]]*||g'`
		elif [ ! -z "${IFCONFIG}" ]; then
			INET_LOCAL_ENDPOINT=`${IFCONFIG} ${IFACE} |awk "/^[[:space:]]*inet / { print \\$2 }" |sed -e 's|addr:||g'`
		fi
	elif [ ${OS} = FreeBSD ]; then
		INET_LOCAL_ENDPOINT=`${IFCONFIG} ${IFACE} |awk '/^[[:space:]]*inet / { print $2 }'`
	fi
}

IsValidExecutable() {
	if [ -z "$1" ] || [ ! -f "$1" ] || [ ! -x "$1" ] ; then
		echo "Error: $2 is not installed or is not executable."
		exit 1
	fi
}

IsValidExecutable "${WHICH}" "which"

if [ ! -z "${PREFER_SUDO}" ]; then
	[ -z "${SUDO}" ] && SUDO=$(${WHICH} sudo 2>/dev/null)
	IsValidExecutable "${SUDO}" "sudo"

	if ! ${SUDO} echo sudo verified ; then
		echo Error: Unable to verify sudo
		exit 1
	fi
	WHICH="${SUDO} ${WHICH}"
fi

[ -z "${WGET}" ] && WGET=$(${WHICH} wget 2>/dev/null)
[ -z "${AWK}" ] && AWK=$(${WHICH} awk 2>/dev/null)
[ -z "${SED}" ] && SED=$(${WHICH} sed 2>/dev/null)
[ -z "${RM}" ] && RM=$(${WHICH} rm 2>/dev/null)

# Check for the Required executables
IsValidExecutable "${WGET}" "GNU wget"
IsValidExecutable "${SED}" "sed"
IsValidExecutable "${AWK}" "awk"
IsValidExecutable "${RM}" "rm"

# echo GNU wget is installed at ${WGET}

if [ $OS = Linux ]; then

	[ -z "${IP}" ] && IP="$(${WHICH} ip 2>/dev/null)"
	[ -z "${IFCONFIG}" ] && IFCONFIG="$(${WHICH} ifconfig 2>/dev/null)"
	[ -z "${ROUTE}" ] && ROUTE="$(${WHICH} route 2>/dev/null)"

	if [ ! -z ${IP} ]; then
		IsValidExecutable ${IP} "iproute2"

		[ ! -z "${PREFER_SUDO}" ] && IP="${SUDO} ${IP}"
#		echo iproute2 is available at ${IP}

		[ ! -z "${INET_LOCAL_ENDPOINT} " ] && FindLocalEndpoint

#		echo Local Endpoint is ${INET_LOCAL_ENDPOINT}.
#		echo inet6 remote endpoint is ${INET6_REMOTE_ENDPOINT}
#		echo inet6 local endpoint is ${INET6_LOCAL_ENDPOINT}

#		echo ${IP} tunnel add ${TUNNEL_IFACE} mode sit remote ${INET_REMOTE_ENDPOINT} local ${INET_LOCAL_ENDPOINT} ttl 255
		${IP} tunnel add ${TUNNEL_IFACE} mode sit remote ${INET_REMOTE_ENDPOINT} local ${INET_LOCAL_ENDPOINT} ttl 255
#		echo ${IP} link set ${TUNNEL_IFACE} up
		${IP} link set ${TUNNEL_IFACE} up
#		echo ${IP} addr add ${INET6_LOCAL_ENDPOINT} dev ${TUNNEL_IFACE}
		${IP} addr add ${INET6_LOCAL_ENDPOINT} dev ${TUNNEL_IFACE}
#		echo ${IP} route add ::/0 dev ${TUNNEL_IFACE}
		${IP} route add ::/0 dev ${TUNNEL_IFACE}
#		echo ${IP} route add ${INET_REMOTE_ENDPOINT} dev ${IFACE}		
		${IP} route add ${INET_REMOTE_ENDPOINT} dev ${IFACE}		

	elif ! [ -z "$(${WHICH} ifconfig 2>/dev/null)" ]; then

		IsValidExecutable ${IFCONFIG} "ifconfig"
		IsValidExecutable "${ROUTE}" "route"
	
		[ ! -z "${PREFER_SUDO}" ] && IFCONFIG="${SUDO} ${IFCONFIG}" && ROUTE="${SUDO} ${ROUTE}"
#		echo ifconfig is available at ${IFCONFIG}

		[ ! -z "${INET_LOCAL_ENDPOINT} " ] && FindLocalEndpoint

#		echo ${IFCONFIG} ${TUNNEL_IFACE} up add ${INET6_LOCAL_ENDPOINT}
		${IFCONFIG} ${TUNNEL_IFACE} up add ${INET6_LOCAL_ENDPOINT}
#		echo ${ROUTE} -A inet6 del ${INET6_REMOTE_ENDPOINT/::1/::} dev ${TUNNEL_IFACE}
		${ROUTE} -A inet6 del ${INET6_REMOTE_ENDPOINT/::1/::} dev ${TUNNEL_IFACE}
#		echo ${ROUTE} -A inet6 add ${INET6_REMOTE_ENDPOINT/::1/::} gw ::${INET_REMOTE_ENDPOINT} dev ${TUNNEL_IFACE}
		${ROUTE} -A inet6 add ${INET6_REMOTE_ENDPOINT/::1/::} gw ::${INET_REMOTE_ENDPOINT} dev ${TUNNEL_IFACE}
#		echo ${ROUTE} -A inet6 add default gw ::${INET_REMOTE_ENDPOINT} dev ${TUNNEL_IFACE}
		${ROUTE} -A inet6 add default gw ::${INET_REMOTE_ENDPOINT} dev ${TUNNEL_IFACE}
#		echo ${ROUTE} add ${INET_REMOTE_ENDPOINT} dev ${IFACE}
		${ROUTE} add ${INET_REMOTE_ENDPOINT} dev ${IFACE}
	else
		echo Neither ifconfig nor ip executables are found at PATH
		echo Please make sure, that one of them is installed and present
		echo in PATH somewhere.
		echo PATH: ${PATH}
	fi
elif [ $OS = FreeBSD ]; then
	[ -z "${IFCONFIG}" ] && IFCONFIG="$(${WHICH} ifconfig 2>/dev/null)"
	[ -z "${ROUTE}" ] && ROUTE="$(${WHICH} route 2>/dev/null)"

	[ ! -z "${PREFER_SUDO}" ] && IFCONFIG="${SUDO} ${IFCONFIG}" && ROUTE="${SUDO} ${ROUTE}"
	[ ! -z "${INET_LOCAL_ENDPOINT} " ] && FindLocalEndpoint

	${IFCONFIG} ${TUNNEL_IFACE} create
	${IFCONFIG} ${TUNNEL_IFACE} tunnel ${INET_LOCAL_ENDPOINT} ${INET_REMOTE_ENDPOINT}
	${IFCONFIG} ${TUNNEL_IFACE} inet6 ${INET6_LOCAL_ENDPOINT}
	${ROUTE} -n add -inet6 default ${INET6_REMOTE_ENDPOINT%%/64}
	${IFCONFIG} ${TUNNEL_IFACE} up
else
	echo This script is not yet ported to ${OS}.
	echo You can help to port it to your ${OS}.
fi

TMPFILE=`mktemp -q -t ${SCRIPT_NAME}.XXXXX`

${WGET} -O /dev/null --keep-session-cookies "--post-data=f_user=${USER}&f_pass=${PASSWORD}&clearpass=" --save-cookies=${TMPFILE} http://ipv4.tunnelbroker.net/login.php 2>/dev/null
${WGET} -O /dev/null --load-cookies=${TMPFILE} "--post-data=ipv4b=${INET_LOCAL_ENDPOINT}&tunnel_id=${TUNNEL_ID}&update=Submit" http://ipv4.tunnelbroker.net/ipv4_update.php 2>/dev/null
${RM} -f ${TMPFILE}

exit 0

Following is the tunnel configuration file, which is stored in my home directory at $HOME/.tunnelconfig:

# Interface
IFACE=ng0

# User
USER=xxxxxxxx

# MD5 hash of the password
# GNU/Linux: printf ${password} |md5sum |awk '{ print $1 }'
# FreeBSD: md5 -q -s ${password}
PASSWORD=xxxxxxxxxxxxxxxxxxxx

# Global Tunnel ID as mentioned in the tunnel configuration webpage
TUNNEL_ID=00000

# Define it, if executing priviledged actions via sudo. RECOMMENDED.
PREFER_SUDO=1

# In case of GNU/Linux,
# if using ifconfig: 6in4 tunnel name start with sit, e.g. sit0
# if using iproute2: 6in4 tunnel name can be any 3 or more letters name, not starting with sit, e.g. he-tunnel
# whereas in FreeBSD, the name starts with gif, .e.g. gif0
TUNNEL_IFACE=gif0

# IPv4 Remote endpoint
INET_REMOTE_ENDPOINT=127.0.0.1

# IPv6 Remote endpoint
INET6_REMOTE_ENDPOINT=2001:db8:xxxx::1/64

# IPv6 Local endpoint
INET6_LOCAL_ENDPOINT=2001:db8:xxxx::2/64

# Define it if you don't want local IPv4 local endpoint to be detected at runtime.
# INET_LOCAL_ENDPOINT=

To use this script, download it and save it as setup-he.sh in your home directory, make it executable, create a tunnel configuration file at $HOME/.tunnelconfig similar to the one shown above, and then finally execute the script on terminal. Happy IPv6ing…:)

20080831

Update HE IPv6 tunnel-endpoint from command-line

Filed under: Hacking — Tags: , , , — abbe @ 2052

Following is the script I use to initialize my IPv6 tunnel on GNU/Linux:

#!/bin/sh
# Name: up-he.sh
# Description: Initializes the IPv6 tunnel from HE.
# Author: Ashish Shukla <gmail.com!wahjava>
# OS: GNU/Linux
# NOTE: This script requires superuser privileges.

# Default outgoing interface
INTERFACE=ppp0

# IPv6 tunnel interface name
HE=he-ipv6-tunnel

IP_OF_INTERFACE=`/sbin/ifconfig ${INTERFACE} |awk '/^[[:space:]]+inet[[:space:]]/  { print $2 }' |sed -e s/addr://`

# Enter your IPv6 /64 endpoint here.
IP6_TUNNEL_ENDPOINT=2001:470::/64

# Enter your IPv4 tunnel endpoint here.
REMOTE_ENDPOINT=127.0.0.2

/sbin/ip tunnel add $HE mode sit remote ${REMOTE_ENDPOINT} local ${IP_OF_INTERFACE} ttl 255
/sbin/ip link set $HE up
/sbin/ip addr add ${IP6_TUNNEL_ENDPOINT} dev $HE
/sbin/ip route add ::/0 dev $HE

# Add a explicit route in case if you've multiple outgoing interfaces ;)
/sbin/ip route add ${REMOTE_ENDPOINT} dev $INTERFACE

# Comment the following line, if you want /64 IPv6 endpoint address to be the used as the default source address
/sbin/ip addr del ${IP6_TUNNEL_ENDPOINT} dev $HE

And, following is its FreeBSD counterpart:

#!/bin/sh
# Name: up-he.sh
# Description: Initializes the IPv6 tunnel from HE.
# Author: Ashish Shukla <gmail.com!wahjava>
# OS: FreeBSD
# NOTE: This script requires superuser privileges.

# The IPv6 tunnel interface you want to be created, make sure its name starts with 'gif'
TUNNEL_IF=gif0

# The outgoing interface
INTERFACE=ng0

LOCAL_ENDPOINT=`/sbin/ifconfig ${INTERFACE} |awk '/^[[:space:]]*inet[[:space:]]/ { print $2 }'`

# Please enter your remote IPv4 endpoint here.
REMOTE_ENDPOINT=127.0.0.1

# Please enter your local IPv6 /64 endpoint here
LOCAL6_ENDPOINT=2001:470:xxxx::1

# Please enter your remote IPv6 /64 endpoint here
REMOTE6_ENDPOINT=2001:470:xxxx::2

# ${REMOTE6_ENDPOINT} prefixlen 64
sudo ifconfig ${TUNNEL_IF} create
echo created.
sudo ifconfig ${TUNNEL_IF} tunnel ${LOCAL_ENDPOINT} ${REMOTE_ENDPOINT}
echo tunnelled.
sudo ifconfig ${TUNNEL_IF} inet6 ${LOCAL6_ENDPOINT}/64
echo setup.
sudo route -n add -inet6 default ${REMOTE6_ENDPOINT}
echo routed.
sudo ifconfig ${TUNNEL_IF} up
echo up.
# Comment the following line, if you want /64 IPv6 endpoint address to be used as default source address
sudo ifconfig ${TUNNEL_IF} inet6 ${LOCAL6_ENDPOINT} -alias

Following is the script I use to update my IPv4 endpoint, stored in the IPv6 tunnel database of HE, from GNU/Linux:

#!/bin/sh
# Name: setup-he.sh
# Description: Updates IPv4 endpoint in IPv6 tunnel databse of HE
# Author; Ashish Shukla <gmail.com!wahjava>
# OS: GNU/Linux
# NOTE: This script doesn't require superuser privileges.

IFACE=ppp0
ENDPOINT=`/sbin/ifconfig ${IFACE} | sed -e s/addr://g |awk '/^[[:space:]]*inet[[:space:]]/ { print $2 }'`
SCRIPT_NAME=`basename $0`
TMPFILE=`mktemp -q -t ${SCRIPT_NAME}.XXXXXX`

# Please set appropriate paths to md5sum and wget here
WGET=/usr/bin/wget
MD5=/usr/bin/md5sum

# Enter your tunnel user id here
USER=XXXXX

# Enter your tunnel password here
PASSWORD=XXXXXXX

# Enter your Global Tunnel ID in HE's database
TUNNEL_ID=00000

MD5_PASSWORD=`printf ${PASSWORD} |md5sum |awk '{ print $1 }'`

${WGET} -O /dev/null --keep-session-cookies "--post-data=f_user=${USER}&f_pass=${MD5_PASSWORD}&clearpass=" --save-cookies=${TMPFILE} http://ipv4.tunnelbroker.net/login.php 2>/dev/null || exit 1
${WGET} -O /dev/null --load-cookies=${TMPFILE} "--post-data=ipv4b=${ENDPOINT}&tunnel_id=${TUNNEL_ID}&update=Submit" http://ipv4.tunnelbroker.net/ipv4_update.php 2>/dev/null || exit 2
rm ${TMPFILE}
exit 0

And following is its FreeBSD counterpart:

#!/bin/sh
# Name: setup-he.sh
# Description: Updates IPv4 endpoint in IPv6 tunnel databse of HE
# Author; Ashish Shukla <gmail.com!wahjava>
# OS: FreeBSD
# NOTE: This script doesn't require superuser privileges.

# Default outgoing interface
IFACE=ng0
ENDPOINT=`/sbin/ifconfig ${IFACE} |awk '/^[[:space:]]*inet[[:space:]]/ { print $2 }'`
SCRIPT_NAME=`basename $0`
TMPFILE=`mktemp -q -t ${SCRIPT_NAME}`

# Please set appropriate paths to md5 and wget here
WGET=/usr/local/bin/wget
MD5=/sbin/md5

# Enter your tunnel user id here
USER=XXXXXX

# Enter your tunnel password here
PASSWORD=XXXXXXX

# Enter your Global Tunnel ID in HE's database
TUNNEL_ID=00000

MD5_PASSWORD=`${MD5} -q -s ${PASSWORD}`

${WGET} -O /dev/null --keep-session-cookies "--post-data=f_user=${USER}&f_pass=${MD5_PASSWORD}&clearpass=" --save-cookies=${TMPFILE} http://ipv4.tunnelbroker.net/login.php 2>/dev/null
${WGET} -O /dev/null --load-cookies=${TMPFILE} "--post-data=ipv4b=${ENDPOINT}&tunnel_id=${TUNNEL_ID}&update=Submit" http://ipv4.tunnelbroker.net/ipv4_update.php 2>/dev/null
rm ${TMPFILE}

The tunnel endpoint updating scripts are inspired from a script written by someone (sorry the name I’ve forgotten, but the regexp is f.*) on #ipv6@irc.freenode.net.

UPDATE: The scripts are recently updated on Mon Sep 1 10:46:40 IST 2008.

20080801

Google Cache now served from an IPv6 host

Filed under: Yippee!! — Tags: , — abbe @ 0435

Google Cache from IPv6
Google‘s next step in IPv6 implementation.

20080711

Gmail on IPv6 – buggy last account activity information.

Filed under: Research — Tags: , — abbe @ 0016

Gmail Activity information by wahjava, on Flickr
I’m accessing Gmail’s web UI over IPv6 internet since they launched ipv6.google.com. Recently I’ve noticed that they made available Last account activity information. So I clicked on that link to see my last account activity and I’m surprised to see an IPv4 address instead of an IPv6 address (expected). The IPv4 address is 238.149.219.9, which is a class D address reserved for multicasting. So, is this some kind of IPv{4,6} portability bug in their code, or ipv6.google.com acting as a proxy for mail UI running on IPv4 servers with a class D address assigned, hmm…?

20080516

Wanna measure latencies to different servers via ICMP

Filed under: Fun, Hacking — Tags: , , , , — abbe @ 0130
abbe@chateau ~/bin $ cat measure-latencies.sh
#!/bin/sh
# Author: Ashish Shukla 

SIXXS_SERVERS="nlams01 iedub01 nlams04 simbx01 deham01 bebru01 ptlis01 sesto01 noosl01 usewr01 usqas01 usbos01 gblon02 plwaw01 uschi02 chzrh01 dedus01"

for server in ${SIXXS_SERVERS}; do
	echo ${server}.sixxs.net = `ping -n -c4 ${server}.sixxs.net 2>/dev/null |awk '/^rtt min/ { print $4 }' |awk -F/ '{ print $2 }'`ms
done
abbe@chateau ~/bin $ ./measure-latencies.sh 
nlams01.sixxs.net = 353.104ms
iedub01.sixxs.net = 327.646ms
nlams04.sixxs.net = 483.722ms
simbx01.sixxs.net = 279.078ms
deham01.sixxs.net = 358.541ms
bebru01.sixxs.net = 347.362ms
ptlis01.sixxs.net = 346.989ms
sesto01.sixxs.net = 331.026ms
noosl01.sixxs.net = 346.034ms
usewr01.sixxs.net = 349.687ms
usqas01.sixxs.net = 345.009ms
usbos01.sixxs.net = 315.370ms
gblon02.sixxs.net = 359.834ms
plwaw01.sixxs.net = 352.248ms
uschi02.sixxs.net = 361.986ms
chzrh01.sixxs.net = 448.864ms
dedus01.sixxs.net = 321.748ms

I’ve hacked above bash script to measure latencies between my box and SiXXS PoPs. Hope this useful to you while deciding which PoP to use. Anyways, happy IPv6ing…:)

20080507

Spoofing on Internet

Filed under: Experiences — Tags: , , — abbe @ 0123

Although it seems like dream to be able to successfully spoof on Internet in 21st century, but I realized this dream, yesterday. Thanks to the cheapest cyber café operator Tata Communications pretending to be an ISP. :)

I’ve a GNU/Linux box connected to the internet, via 2 ADSL internet connections from 2 cyber café operators, namely Airtel Broadband (not cheap), and Tata Communications (cheapest). Airtel Broadband connection is connected to my GNU/Linux box at eth1 interface, and Tata Communications connection is connected to eth2 interface. eth1 is assigned a RFC1918 IPv4 address, whereas eth2 is assigned a static and globally routable IPv4 address. Using eth2‘s address, I’ve setup a 6to4 tunnel, with interface name sit0 for my IPv6 internet addiction.

Now, yesterday I wasn’t able to ping google.com via eth2, though I recieved no ICMP errors from gateway. So I switched my default gateway to eth1. And after this, I’m able to ping google.com :). I thought I should also try ping6 ipv6.google.com though I’m sure that it won’t work, since sit0‘s source address is based on eth2‘s address, which is different from the current default gateway interface’s address, eth1. But to my surprise, it worked. I’m getting ICMP echo replies from ipv6.google.com :).

To confirm further, I tried curl http://ipv6.whatismyipv6.net/ |fgrep 'Your IP is' and I received sit0‘s IPv6 address as output. :). Now, this is confusing. Even though I’m able to send spoofed packets, but how I’m receiving replies of those spoofed packets, if internet connection on eth2 is not working, hmm…? So, I connected to #ipv6@ipv6.chat.freenode.net (being able to IRC over IPv6) to figure out what is happening, and at the same time I started sudo tcpdump -i eth2 proto 41 on another terminal to confirm whether I’m really receiving any IPv6-in-IPv4 packets on eth2 interface. And as expected, I’m getting IPv6 traffic over eth2. I thought maybe Tata Communications‘s connectivity has restored, but no success with sudo ping -I eth2 google.com :(. So I asked p1mrx on #ipv6@ipv6.chat.freenode.net to ping IPv4 address of eth2 and I started sudo tcpdump -i eth2 proto icmp in another terminal. I captured ICMP echo requests sent by h{is,er} box and also captured ICMP echo replies sent from my box. {S,}he confirmed that ping is successful.

CONCLUSION. The cheapest cyber café operator Tata Communications, pretending to be an ISP, is dropping my outbound traffic (TCP, UDP, ICMP echo request) but idiot operator’s dumb clueless retarted (and some more words you can think of…..) cyber café incharges, who never studied IPv4 networks, or don’t know that there is a protocol field (size: 1 byte) in the IPv4 header, which identifies what kind of payload that IPv4 packet is carrying, and has forgot to block all other protocols, ROFL. But why’re they doing this. /me is confused why they’ve blocked. Anyways I’ll call them today. Another reason why they’re retarded….

/me is confused how Indian cyber café operators will become an ISP and transition to IPv6 :(

Older Posts »

Blog at WordPress.com.