5.2. IP in IP-Tunneling

Diese Art von Tunnel gibt es schon lange in Linux. Er erfordert zwei Kernelmodule, ipip.o und new_tunnel.o.

Angenommen, du hast 3-Netzwerke: Interne Netzwerke A und B, und C Zwischennetz (oder sagen wir, Internet). Wir haben also Netzwerk A:

network 10.0.1.0
netmask 255.255.255.0
router  10.0.1.1

Der Router hat Adresse 172.16.17.18 an Netzwerk C.

und Netzwerk B:

network 10.0.2.0
netmask 255.255.255.0
router  10.0.2.1

Der Router hat Adresse 172.19.20.21 an Netzwerk C.

Soweit es Netzwerk C betrifft, gehen wir davon aus, dass es jedes Paket von A nach B und umgekehrt weitergibt. Man kann sogar das Internet dafür benutzen.

Und das machst du:

Zuerst versichere dich, ob die Module installiert sind:

insmod ipip.o
insmod new_tunnel.o

Dann zum Router von Netzwerk A, mache das:

ifconfig tunl0 10.0.1.1 pointopoint 172.19.20.21
route add -net 10.0.2.0 netmask 255.255.255.0 dev tunl0

Und beim Router von Netzwerk B:

ifconfig tunl0 10.0.2.1 pointopoint 172.16.17.18
route add -net 10.0.1.0 netmask 255.255.255.0 dev tunl0

Und wenn du mit dem Tunnel fertig bist:

ifconfig tunl0 down

Voila, du bist fertig. Du kannst keinen IPv6-Datenverkehr über den IP-in-IP-Tunnel senden. Du verbindest einfach zwei IPv4-Netzwerke, die normalerweise nicht in der Lage sind miteinander zu reden, das ist alles. Was die Kompatibilität angeht, diesen Code gibt es schon lange Zeit, er ist kompatibel seit Kernel 1.3. Der Linux-IP-in-IP-Tunnel arbeit, soweit ich weiß, nicht mit anderen Betriebssystemen oder Routern zusammen. Es ist einfach und es funktioniert. Verwende es, wenn du kannst, ansonst verwenden GRE.