Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:netzwerk-bridge_mit_tun_tap_fuer_eine_computer-emulation

Netzwerk-Bridge mit TUN/TAP für eine Computer-Emulation

Nötige Pakete zum erstellen des TUN/TAP Device installieren.:

apt-get install libpcap-dev bridge-utils uml-utilities net-tools

Das Paket net-tools ist dafür nötig, um das ältere Programm ifconfig weiterhin benutzen zu können.

Es sei auch erwähnt, dass als Name des Nutzers simh genannt wird, da zur Ausführung des Emulators eigens ein User selben Namens erstellt wurde.
Die physische Netzwerkschnittstelle heißt hier enp0s25 anstatt wie meisten üblich eth0. Als Rechner wurde hier ein Lenovo ThinkPad T420 gewählt.

Host IP-Adresse via DHCP

Durch den DHCP-Server hat der Host beispielsweise die private IP-Adresse 192.168.1.224 bekommen. Im folgendem Skript /root/Skripte/create-TUN-TAP-Devices.sh wird anhand dieser Adresse eine Bridge erstellt.

mkdir /root/Skripte
vi /root/Skripte/create-TUN-TAP-Devices.sh
#!/bin/sh
HOSTIP=192.168.1.224
HOSTNETMASK=255.255.255.0
HOSTBCASTADDR=192.168.1.255
HOSTDEFAULTGATEWAY=192.168.1.1	
#
/usr/bin/tunctl -t tap0 -u simh
/usr/sbin/ifconfig tap0 up
#
# Now convert enp0s25 to a bridge and bridge it with the TAP interface
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 enp0s25
/usr/sbin/brctl setfd br0 0
/usr/sbin/ifconfig enp0s25 0.0.0.0
/usr/sbin/ifconfig br0 $HOSTIP netmask $HOSTNETMASK broadcast $HOSTBCASTADDR up
# set the default route to the br0 interface
/usr/sbin/route add -net 0.0.0.0/0 gw $HOSTDEFAULTGATEWAY
# bridge in the tap device
/usr/sbin/brctl addif br0 tap0
/usr/sbin/ifconfig tap0 0.0.0.0
chmod +x /root/Skripte/create-TUN-TAP-Devices.sh
./Skripte/create-TUN-TAP-Devices.sh

Manuelle Konfiguration der Netzwerkschnittstellen

Bevor die manuelle Konfiguration eine Wirkung erzielt, sollte der Netzwerkmanager vom systemd deaktiviert werden.

systemctl disable networking.service

Weitere, gebräuchliche Optionen sind enable, start, stop und status.

In meinem privaten Netzwerk-Setup steht für die drahtgebunden Geräte das private Klasse-C-Netzwerk 192.168.1.x/24 zur Verfügung. Der DHCP-Range geht von 192.168.1.100 bis 192.168.1.254. Die Adressen von 192.168.1.1 bis 192.168.1.99 stehen für die feste Vergabe von statischen IP-Adresse zur Verfügung, wobei 192.168.1.1 bereits vom Gateway benutzt wird. Das Lenovo ThinkPad T420, auf dem der Emulator simh unter einem gleichnamigen Benutzer ausgeführt wird, soll die Adresse 192.168.1.9 bekommen und ist mittels Ethernet-Kabel am LAN-Port des Routers direkt verbunden. Die erste und derzeit einzige emulierten Maschine soll die IP-Adresse 192.168.1.11 an der Schnittstelle tap0 bekommen. Für weitere Maschinen sollen die Adressen bis 192.168.1.19 verwendet werden.
In den Übungsbeispielen anderer wird der Bridge br0 die Adresse 192.168.1.10 zugewiesen. Warum diese das machen, erschließt sich mir allerdings nicht, denn ich habe gelernt, dass eine Bridge auf der OSI-Schicht 2 angesiedelt ist, wo keine IP-Adressen eingesetzt werden. - Und es ging in deren Beispielen auch nur um die Konfiguration einer Bridge mittels TAP-Device. Deshalb habe ich vermerkt, dass diese Konfigurationsparameter optional sind. Eine Wirkung konnte ich aber bei Aktivierung noch nicht feststellen.

Bearbeiten eines Entwurfes der /etc/network/interfaces:

...
auto enp0s25
allow-hotplug enp0s25
iface enp0s25 inet static
    address 192.168.1.9
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

# Virtual interface
auto tap0
iface tap0 inet manual
    pre-up tunctl -t tap0 -u simh
    up ifconfig tap0 192.168.1.11 up    # optional
    down ifconfig tap0 down

# Bridge interface
auto br0
iface br0 inet static
    address 192.168.1.10		# optional
    netmask 255.255.255.0		# optional
    network 192.168.1.0			# optional
    broadcast 192.168.1.255		# optional
    gateway 192.168.1.1			# optional
    bridge_ports enp0s25 tap0
    bridge_stp off
    bridge_maxwait 5

Skript zum Aufbauen der Bridge ausführen.

./Skripte/create-TUN-TAP-Devices.sh
linux/netzwerk-bridge_mit_tun_tap_fuer_eine_computer-emulation.txt · Zuletzt geändert: 2024/05/16 20:29 von 127.0.0.1