Tutorials - IP-Tunnel zwischen Linux-Rechner

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk

IP-Tunnel zwischen Linux-Rechner

Diese Seite wurde 5510 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: linux ip ipv6 tunnel howto tutorial

Inhaltsverzeichnis



Vorwort Top


Linux bietet Out-of-the-Box die Möglichkeit IP-Tunnel zwischen zwei Rechnern herzustellen. Dies kann für VPNs genutzt werden, aber auch beispielsweise um Rechner an IPv6 anzubinden, obwohl die meisten Provider dies noch nicht unterstützen.

IP-Tunnel über SSH Top


Ein IP-Tunnel über SSH eignet sich für dynamische Verbindungen mit wechselnden IPs des Clients und bietet durch die SSH-Verschlüsselung ein großes Stück Sicherheit.

Beim SSH-Server zu dem der Tunnel aufgebaut werden soll, muss dies in der Regel erst in der Konfiguration freigeschalten werden. Dies geht mit folgender Zeile.

/etc/ssh/sshd_config:


[..]
PermitTunnel yes



Danach muss der SSH-Server die Konfiguration neu laden.

Code:


/etc/init.d/ssh reload



Anschließend sollte der folgende Befehl ein tunX-Device auf Client und Server erstellen, wobei X auf dem Client der ersten Ziffer vor dem Doppeltpunkt entspricht und auf dem Server der zweiten.

Achtung: Der Befehl muss als Root auf dem Client und Server ausgeführt werden. Wenn auf dem Server Login als Root mit Passwort deaktiviert ist, muss ein SSH-Key erstellt werden und auf den Server in die authorized_keys-Datei kopiert werden.

Code:


ssh -w 0:0 root@remote-server



Mit der Option -f wäre es möglich den SSH-Prozess sofort in den Hintergrund zu schicken.

Code:


# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether de:ad:be:ef:92:d2 brd ff:ff:ff:ff:ff:ff
4: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 500
    link/[65534]



Da sich das Tunnel-Device noch im abgeschaltenen Zustand befindet, muss es vor der Verwendung aktiviert werden und eine Adresse erhalten.

Code:


# auf dem Client
ip link set tun0 up
ip addr add 10.0.50.51/24 dev tun0



Code:


# auf dem Server
ip link set tun0 up
ip addr add 10.0.50.50/24 dev tun0



Nun steht einem Test nichts mehr im Wege:

Code:


# ping 10.0.50.50
PING 10.0.50.50 (10.0.50.50) 56(84) bytes of data.
64 bytes from 10.0.50.50: icmp_seq=1 ttl=64 time=70.2 ms
64 bytes from 10.0.50.50: icmp_seq=2 ttl=64 time=69.3 ms
^C
--- 10.0.50.50 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1562ms
rtt min/avg/max/mdev = 69.345/69.788/70.232/0.516 ms



IP-Tunnel für IPv6 in IPv4 Top


Für das Verteilen von IPv6-Netzen über mehrere Büros mit fixen externen IPv4-Adressen eignet sich die im Kernel vorhandene Option eines IPv6 in IPv4-Tunnels.

Die folgenden Schritte müssen auf beiden Servern ausgeführt werden (mit jeweils den passenden Optionen).

Code:


ip tunnel add sit1 mode sit remote 123.123.123.123 local 234.234.234.234 ttl 64 dev eth0
ip link set sit1 up
ip addr add fd9e:21a7:a92c:2323::1/64 dev sit1



Erklärung:

  • remote - gibt die IP des Gegenübers an


  • local - lokale externe IP (wichtig bei Routern)


  • dev - Device an welches der Tunnel gebunden werden soll



Hinweis: Manchmal kann es ein paar Minuten dauern, bis sich der Tunnel zwischen den Rechnern aufbaut.

Tunnel-Optionen:

  • sit - IPv6 in IPv4


  • ipip - IPv4 in IPv4 (nur Linux)


  • ip6ip6 - IPv6 in IPv6


  • gre - Generic Routing Encapsulation (von Cisco standardisiertes Protokoll)



Code:


# ping6 fd9e:21a7:a92c:2323::1
PING fd9e:21a7:a92c:2323::1(fd9e:21a7:a92c:2323::1) 56 data bytes
64 bytes from fd9e:21a7:a92c:2323::1: icmp_seq=1 ttl=64 time=27.6 ms
64 bytes from fd9e:21a7:a92c:2323::1: icmp_seq=2 ttl=64 time=28.0 ms
^C
--- fd9e:21a7:a92c:2323::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 27.650/27.845/28.040/0.195 ms



Der Tunnel sollte auch unter ip tunnel und ip link sowie nach Adress-Zuweisung unter ip addr aufscheinen.

Code:


# ip tunnel
sit0: ipv6/ip  remote any  local any  ttl 64  nopmtudisc
sit1: ipv6/ip  remote 123.123.123.123  local 234.234.234.234 ttl 64

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:02:e3:17:4e:f6 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:02:e3:17:52:c6 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
5: sit1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue
    link/sit 123.123.123.123 peer 234.234.234.243

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:02:e3:17:4e:f6 brd ff:ff:ff:ff:ff:ff
    inet 123.123.123.123/27 brd 123.123.123.223 scope global eth0
    inet6 2001:fefe:fefe::1/48 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::202:e3ff:fe17:4ef6/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:02:e3:17:52:c6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/24 brd 192.168.0.255 scope global eth1
    inet6 2001:fefe:fefe:ffff::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::202:e3ff:fe17:52c6/64 scope link
       valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
5: sit1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue
    link/sit 123.123.123.123 peer 234.234.234.234
    inet6 fd9e:21a7:a92c:2323::2/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::3e02:64c9/128 scope link
       valid_lft forever preferred_lft forever



Fehlersuche Top



  • stimmen remote und local zum jeweiligen Gegenüber überein?


  • ist die Firewall offen?


  • manchmal kann es helfen, kein Device anzugeben, an welches der Tunnel gebunden werden soll

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk/IP-Tunnel zwischen Linux-Rechner