## Busquem una IP fora de la nostra LAN que respongui a pings
##   la farem servir com a destí del túnel.
##   Els resultats finals dependran de si el destí triat desfà l'encapsulament o no
##   En el cas d'exemple sí, però cal tenir en compte que l'IP de destí és privada,
##   per tant, l'experiment no serà reproduïble fora de l'entorn en el qual s'ha fet
ping -c1 10.0.0.1

## Identifiquem l'adreça d'una NIC (e.g. wlan0 => la wifi)
ip add sh

## Creem la interfície "tunprova" (el kernel també crearà "tunl0")
##   cal fer la substiució ip-wlan0> pertinent
#sudo ip tunnel add tunprova mode ipip remote 10.0.0.1 local <ip-wlan0>
sudo ip tunnel add tunprova mode ipip remote 10.0.0.1 local 10.139.40.20

## Comprovem que està creada però està "DOWN"
ip link show

## Per tant, no hi ha cap entrada a la taula d'encaminament per "tunprova"
ip route show

## Li assignem una ip
sudo ip add add 192.168.0.1/24 dev tunprova

## Però com que continua "DOWN" a la taula de rutes continua sense haver-hi cap entrada per "tunprova"
##   Observació: la comanda "ifconfig" sí que activa la interfície configurada i,
##   per tant, la ruta local ja apareix a la taula de rutes immediatament
ip address show
ip route show

## Passem "tunprova" a "UP"
sudo ip link set up dev tunprova

## Ara sí que hi ha una entrada a la taula de rutes
ip route show

## Afegim una estàtica ruta per dins al túnel
sudo ip route add 10.1.0.0/24 via 192.168.0.2

## Comprovem l'efecte a la taula de rutes
ip route show

## Generem tràfic de prova amb destinació 
ping 10.1.0.1

## A la interfície física capturem el tràfic IPIP (núm de protocol 4 -IP header)
##  1) Observem que els paquets tenen 2 capçaleres IP:
##       fixem-nos amb els orígens i destins de cadascuna d'elles
##  2) Observem que només hi ha els ICMP Echo request:
##       no hi ha resposta dins del túnel perquè no hi ha cap host a l'alta banda amb
##       aquesta ip (això era altament probable que passés pq ens hem inventat l'IP de destí)
##  3) Observem que hi ha paquets ICMP tot i que el filtre és d'IPIP:
##       això és així pq el filtre només s'aplica a la capçalera externa
wireshark -n -i enp0s31f6 -k -f "ip proto 4"

## A la interfície física capturem el tràfic ICMP (núm proto 1)
##   1) Observem que només hi ha tràfic (ICMP) de "Destination unreachable"
##      és de IPsrc 10.0.0.1 pq és precisament en aquest punt que se n'adona que no té ruta a la IPdst
wireshark -n -i enp0s31f6 -k -f "ip proto 1"

## Nota: el paquet de traces s'ha fet capturant els dos tràfics a la vegada:
wireshark -n -i enp0s31f6 -k -f "ip proto 1 and ip proto 4"

## A "tunprova" capturem tot el tràfic
##  1) Observem que només hi ha una capçalera IP, perquè ja som dins del túnel
##  1) Observem que només veiem els ICPM request perquè van "tunelats" però no els de
##      "Destination unrecheable" perquè aquests van per fora el túnel (els genera el peer del tunel)
wireshark -i tunprova -k

## Desfem el túnel (la ruta estàtica es desconfigura automàticament)
sudo ip tunnel del tunprova
ip show
